Составители:
76
Окончательный текст программы.
#include <ADUC812.h>;== файл с определениями адресов регистров МК
#include "C:\EMUL\Work\Key_module.a51";== всё для работы с
клавиатурой
;================================================
Tochka_Vhoda EQU 4000h;== адрес входа в основную программу
DATA_LCD EQU 0FEh ;== адрес регистра данных RG2 ЖКД (рис.3)
CNTR_LCD EQU 0F9h ;== адрес регистра управл. RG3 ЖКД (рис.3)
DACfst EQU 250;== некоторое начальное значение ЦАП
;================================================
DSEG;== начало сегмента данных
daccode: DS 1;== код на входах ЦАП
DL1: DS 1;== счетчик циклов для макроса Delay
DL2: DS 1;== еще один
ctrl: DS 1;== код на управляющих входах ЖКД
cnt: DS 1;== вспомогательная перменная - счетчик
dno_steka: DS 1;== нужен ТОЛЬКО адрес - dno_steka
;================================================
Delay MACRO Dmax1,Dmax2;== Dmax1=1(0.0005сек) при Dmax2=229
LOCAL L1,L2;== объявление локальных меток
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р код подаем на входы данных ЖКД
Страницы
- « первая
- ‹ предыдущая
- …
- 74
- 75
- 76
- 77
- 78
- …
- следующая ›
- последняя »