Добрый день. Имеется плата UNI-DS3 и установленный UNI-DS3 40 PIN 8051 CARD. Нужно выводить текст на дисплей 16x2(winstar wh1602a). Программа должна быть написана на ассемблере. Уже как только не изворачивался, всё перепробовал, но результата не достиг. Кидаю последний код, мб кто знает какие-нибудь вспомогательные материалы(всё уже перерыл и ничего не работает). Нужна любая помощь. Код | U equ 31H L equ 32H Port equ P1 RS equ P2.0 RW equ P2.1 EN equ P2.2
ORG 0000h CLR RW ACALL init MOV A, #'T' ACALL lcd_data MOV A, #'E' ACALL lcd_data MOV A, #'N' ACALL lcd_data MOV A, #'T' ACALL lcd_data MOV A, #'U' ACALL lcd_data MOV A, #'T' ACALL lcd_data MOV A, #'S' ACALL lcd_data MOV A, #'.' ACALL lcd_data MOV A, #'C' ACALL lcd_data MOV A, #'O' ACALL lcd_data MOV A, #'M' ACALL lcd_data MOV A, #' ' ACALL lcd_data MOV A, #'4' ACALL lcd_data MOV A, #'B' ACALL lcd_data MOV A, #'I' ACALL lcd_data MOV A, #'T' ACALL lcd_data
MOV A, #0c0H ACALL lcd_cmd
MOV A, #'S' ACALL lcd_data MOV A, #'O' ACALL lcd_data MOV A, #'S' ACALL lcd_data
SJMP $
separator: MOV U,A ANL U,#0F0H SWAP A ANL A,#0F0H MOV L,A RET
move_to_Port: MOV port,A SETB EN ACALL DELAY CLR EN ACALL DELAY RET
lcd_cmd: CLR RS ACALL separator MOV A, U ACALL move_to_port MOV A, L ACALL move_to_port RET
lcd_data: SETB RS ACALL separator MOV A, U ACALL move_to_port MOV A, L ACALL move_to_port RET
init: ACALL delay ACALL delay MOV port, #20h CLR RS SETB EN ACALL delay CLR EN
MOV A, #28H ACALL lcd_cmd MOV A, #0CH ACALL lcd_cmd MOV A, #06H ACALL lcd_cmd MOV A, #01H ACALL lcd_cmd RET
delay: MOV R0, #10H L2: MOV R1,#0FH L1: DJNZ R1, L1 DJNZ R0, L2 RET
END
|
|