Составители:
77
StrobE 0x04;== строб+управл. код подаем на управл. входы ЖКД
ENDM;== 04h - бит D2(~C/D=1) признак записи байта данных
;================================================
LCDinit MACRO;== начальная настройка ЖКД (запись управляющих
байтов)
IRP tt, <#0c7h,#0feh,#0f3h,#0f9h>;== встроенный макрос повторения
команд
LCDctrl tt;== будут 4 раза повторены эти команды (tt=c7,fe,f3,f9)
ENDM;== конец встроенного макроса
ENDM;== конец макроопределения LCDinit
;================================================
LCDstrn MACRO addr;== вывод строки символов на ЖК дисплей
LOCAL povtor,next,vyhod;== addr - адрес строки
mov cnt,#0;== начало
строки ( cnt - смещение символа в строке)
povtor:
mov a,cnt;== текущий номер выводимого символа
mov DPTR,#addr;== в цикле т.к. LCDchar переопределяет DPTR
movc a,@a + DPTR;== @a + DPTR - адрес символа в строке
cjne a,#0,next;== если текущий символ=0 - то конец строки
jmp vyhod;== и закончить вывод
next:
LCDchar acc;== если нет - вывести на ЖКД очередной символ
inc cnt;== перейти к следующему символу
jmp povtor;== и повторить вывод
vyhod:
ENDM
;================================================
LCDxy MACRO x,y;== макрос позиционирования
курсора ЖКД
LOCAL up;== метка up - верхняя строка
mov a,#y;== Y-координата строки 0-верхняя, 1-нихжняя
jz up;== если Y=0, значит строка верхняя и ее адрес=0
mov a,#40h;== если Y=1, строка нижняя и ее адрес = 40h
up: add a,#x;== прибавляем позицию в строке к ее адресу
add a,#80h;== старш. бит упр. байта адреса позиции=1
Write acc, DATA_LCD;== переводим курсор
StrobE 0x00;== в указанную поз-ю
ENDM
;================================================
CSEG at 0;== начало сегмента программы
jmp Tochka_Vhoda;== переход к началу программы
ORG Tochka_Vhoda;== с этого адреса располагается код программы
;====main====main====main====main====main====main
main_prog: ;== точка входа в основную программу
mov sp,#dno_steka;== записываем адрес начала стека в регистр sp
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »