Программирование МК на ассемблере ASM-51 и AVR Pascal. Китаев Ю.В. - 67 стр.

UptoLike

Составители: 

67
mov DL1,#Dmax1;== константа для внешнего цикла
L1: mov DL2,#Dmax2;== константа для внутреннего цикла
L2: djnz DL2,L2;==(L2:djnz DL2,L2 - вложенный цикл)
djnz DL1,L1;==(L1:..djnz DL1,L1 - внешний цикл)
ENDM;== конец макроопределения
;================================================
StrobE MACRO Data1_Cntr0;== бит RS он же D/~C
mov ctrl, #Data1_Cntr0;== определяемся: данные или управление
orL ctrl, #0x01;== передний фронт строб-импульса (бит D0=1 "E")
Write ctrl, CNTR_LCD;== управл. код подаем на управл. входы ЖКД
anL ctrl, #0xFE;== задний фронт строб-импульса (бит D0=0 "E")
Write ctrl, CNTR_LCD;== управл. код подаем на управл. входы
ЖКД
Delay 10,229;== задержка на 5 мсек (по справочнику)
ENDM
;================================================
LCDctrl MACRO ch;== макрос вывода управл. байта в контроллер ЖКД
Write ch, DATA_LCD;== упр. байт код подаем на входы данных
ЖКД
StrobE 0x00;== строб+управл. код подаем на управл. входы ЖКД
ENDM;== 00h - бит D2(~C/D=0) признак записи упр. байта
;================================================
LCDchar MACRO ch;== макрос вывода расшир. ASCII кода на ЖКД
Write ch, DATA_LCD;== ASCIIр код подаем на
входы данных ЖКД
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: