MOV R0, 03h
MOV R1, 09h ; загрузка старшего байта в R5
START: MOVX A, @R1 ;
MOV R5, A ;
DEC R1 ; загрузка младшего байта в А
MOVX A, @R1 ;
MOV R4, A ;
DEC R1
SETB P1.5. ;Готовность передавать данные
MOV SCON, #52h ; установка УАПП(режим 1, V=4800 бит/сек)
CLR ES ;
MOV TO,#40h ;установка таймера в режим 1
MOV TH1, #FAh ; загрузка таймера 1
CLR ET1 запрещение прерываний от таймер 1
SETB TR1 ;запуск таймера.
SETB P1.5 ;
SPOUT1: JNB TI, SPOUT ; ожидание флага передачи
CLR TI ;
MOV A, R5
MOV SBUF, A ; пересылка младшего байта среднего
SPOUT2: JNB TI, SPOUT ;
CLR TI ;
MOV A, R4
MOV SBUF, A ; пересылка старшего байта среднего
DJNZ R0 START
CLR RS0 ; включение 0 банка регистров
RETI ;
Подпрограмма вывода управляющих сигналов VD,E,R/W,RS, байта данных DB0...DB7 в порты РC,РA.
(VD – PC3, E – PC2, R/W - PC1, RS – PC0, DB0.. DB7 – PA)
WRT: SETB P1.4 ; активизация PIO
CLR P1.3 ;
MOV A,R6 ;вывод в РC
MOVX PC,A ;управляющих сигналов
MOV A,R7 ;вывод в РC
MOVX PA,A ;байта данных
MOV A,R6 ;
ANL A,#0BH ;сброс строба Е
MOVX PC,A ;
RET ;
Подпрограмма вывода VD,E,R/W,RS, в порт РC, и чтения DB0...DB7 из РA
READ: SETB P1.4 ; активизация PIO
CLR P1.3 ;
MOV A,R6 ;вывод в РC
MOVX PC,A ;управляющих сигналов
MOVD A,PA ;ввод из РA в R4
MOV R4,A ;байта данных
MOV A,R6 ;
ANL A,#0BH ;сброс строба Е
MOVX PC,A ;
RET ;
Подпрограмма задержки на 5мс.
DELAY5:
MOV R3,#10h
C2:MOV R2,#FFh;
C1:DJNZ R2,C1;
DJNZ R3,C2;
RET;
Подпрограмма ожидания готовности контроллера дисплея
(чтение и анализ флага BF)
BUSY:
MOV R6,#04H;У.с. «Чтение флага BF»
ACALL READ ;(R/S=0,R/W=1,E=1)
MOV A,R5 ;
JB3 BUSY ;BF=0?
MOV A,R6 ;
ORL A,#02H ;сброс
MOV R6,A ;сигнала R/W в 0
RET ;
Подпрограмма инициализации ЖКИ
INIT:
MOV R6,#06H;режим
MOV R7,#30H;«Инструкция» (RS=0)
ACALL WRT ;трехкратная запись
ACALL DELAY5 ;управляющего
ACALL WRT ;слова
ACALL DELAY5 ;инициализации
ACALL WRT ;ЖКИ
MOV R7,#38H;установка режима: 2-строчный
ACALL WRT ;режим,8 бит данных,
ACALL BUSY ;знакоместо 5х7 пикселей
MOV R7,#08H;отключение дисплея
ACALL WRT ;
ACALL BUSY ;
MOV R7,#01H;очистка всего дисплея
ACALL WRT ;и возвращение на
ACALL BUSY ;исходную позицию
MOV R7,#06H;установка режима:
ACALL WRT ;автоинкремент адреса,
ACALL BUSY ;запрет сдвига экранного ОЗУ
MOV R7,#0FH;включение дисплея
ACALL WRT ;
ACALL BUSY ;
MOV R7,#06H;включение мигающего
ACALL WRT ;курсора
ACALL BUSY ;
RET ;
Подпрограмма очистки экрана ЖКИ
CLEAR:
MOV R6,#06H;режим «Инструкция» (RS=0)
MOV R7,#01H;У.с. «Очистка дисплея»
ACALL WRT ;
ACALL BUSY ;
RET ;
Подпрограмма гашения курсора
EMPTY:
MOV R6,#06H;режим «Инструкция» (RS=0)
MOV R7,#0CH;У.с. «Включение/
ACALL WRT ;отключение дисплея
ACALL BUSY ;и управление
RET ;режимами курсора»
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.