Схема подключения в pdf-файле.
Код:
CLEAR equ 01h ;команда очистки экрана
SET_POS_0 equ 80h ;установка позиции 0
SET_POS_1 equ 81h
SET_POS_4 equ 84h ;установка позиции 4
org 0
jmp start
org 40h
start:
call d_i
pp1:
clr C
call kl_press
jnc pp1
call kl_klav
mov dptr,#table
movc a,@a+dptr
acall DataWR
ljmp eee
;кодировка клавиш
table: db '1','2','3','4','5','6','7','8','9',0ch,'0',0dh
;п/п сканирования клавиатуры
;определение факта нажатия клавиши
kl_press:
mov p1,#00001111b ;нули на сигнальных линиях
mov a,p1 ;a=****1111b, если не нажато
cpl a ;
anl a,#00001111b ;a=00000000b, если не нажато
clr c
jz endklpr
setb c
endklpr:
ret
;определение нажатой клавиши
kl_klav:
mov p1,#11101111b ;нуль на р1.0
mov c,p1.0 ;проверить возвратную линию р1.0
jc pr01 ;переход на проверку р1.1, если р1.0=1
mov a,#0h
ljmp endscan
pr01:
mov c,p1.1
jc pr02
mov a,#01h
ljmp endscan
pr02:
mov c,p1.2
jc pr10
mov a,#02h
ljmp endscan
pr10:
mov p1,#11011111b
mov c,p1.0
jc pr11
mov a,#03h
ljmp endscan
pr11:
mov c,p1.1
jc pr12
mov a,#04h
ljmp endscan
pr12:
mov c,p1.2
jc pr20
mov a,#05h
ljmp endscan
pr20:
mov p1,#10111111b
mov c,p1.0
jc pr21
mov a,#06h
ljmp endscan
pr21:
mov c,p1.1
jc pr22
mov a,#07h
ljmp endscan
pr22:
mov c,p1.2
jc pr30
mov a,#08h
ljmp endscan
pr30:
mov p1,#0111111b
mov c,p1.0
jc pr31
mov a,#09h
ljmp endscan
pr31:
mov c,p1.1
jc pr32
mov a,#0ah
ljmp endscan
pr32:
mov c,p1.2
jc endscan
mov a,#0Bh
endscan:
ret
;п/п для работы с ЖКИ
;Запись команды
ComWR:
push ACC
ComWait:
acall Status
jb ACC.7, ComWait
pop ACC
mov p2,#0ffh
mov r0, #0F0h
movx @r0, A
ret
;Проверка бита готовности ( чтение команды)
Status:
mov r0, #0F2h
mov p2, #0ffh
movx A, @r0
ret
;Запись данных
DataWR:
push ACC
DataWait:
acall Status
jb ACC.7, DataWait
pop ACC
mov r0, #0F1h
mov p2,#0ffh
movx @r0, A
ret
;Чтение данных
DataRD:
mov r0, #0F3h
mov p2,#0ffh
movx A, @r0
ret
;задержка
Wait:
mov A, #125
Again1:
push ACC
clr A
Again0:
dec A
jnz Again0
pop ACC
dec A
jnz Again1
ret
d_i:
mov r7, #3h
h1:
mov a, #38h
acall ComWR
djnz r7, h1
mov A,#01h ;очистить экран
;mov A, #00111000b ; шина данных 8 разрядов, 2 строки символов, матрица 5х8
acall ComWR
mov A,#00000110b
;mov A, #00001111b ; изображение включено, курсор в виде подчерка выключен, мигающий курсор включен
acall ComWR
mov A,#00001101b
;mov A, #00000110b ; направление смещения счетчика адреса: увеличение, сдвиг дисплея не производится
acall ComWR
mov A,#00010100b
;mov A, #01h ; очистка дисплея и видеопамяти
acall ComWR
mov A,#00111000b
acall ComWR
mov a,#SET_POS_0 ;устанавливаем позицию 0
acall ComWR
mov a,#'D'
acall DataWR
mov a,#'l'
acall DataWR
mov a,#'i'
acall DataWR
mov a,#'n'
acall DataWR
mov a,#'a'
acall DataWR
ret
eee:
jmp eee
end
Прикрепленные файлы:
79ef9fb595a4898305f2288fd0fc6e88.pdf