Курсовая работа: Разработка системы управления кондиционером
call
ecur1
call
prtmu ;Туст на
ЖКИ
№1
call
eclr2
mov
a, #2
call
ecur2
call
sttmp ;запуск
преобразования
Тпм
call
rdtmp ;чтение
Тпм
call
prtmp ;вывод
Тпм на ЖКИ №2
mov
a, bufLAN+1 ;записьТпм
в аккумулятор
swap
a
anl
a, #0F0H
mov
R5, a
mov
a, bufLAN
swap
a
anl
a, #0FH
add
a, R5 ;в
аккумуляторе байт Тпм
mov
a, #LE(a,
bufLAN2) ;сравнение
Тпм<=Туст
mov
bufLAN3, #0 ;обнуление
счетчика циклов работы кондиционера
cjne
a, #0FFFFH,
in5 ;обработкаусловия
Тпм<=Туст
in4: call
reob
jmp
in6
in5: call
reoh
in6: mov
b, a
mov
a, EQ(b, #1)
cjne
a, #0FFFFH, in7
jmp
in1
in7: mov
a, EQ(b, #4)
cjne
a, #0FFFFH, in5
jmp
in4
;Подпрограмма
ввода с клавиатуры (0 бит аккумулятора – за S2,
1 бит – за S1)
inkl:
setb P0.0 ;установка
1 на линиях клавиатуры
setb
P0.1
mov
a, P0 ;считывание
порта p0
anl
a, #00000011B ;обнуление
лишних разрядов
xrl
a, #00000011B ;инвертирование
ret
;подпрограмма
сброса ЖКИ №1
eres1: mov
P2, #0FH ;засылаем
адрес регистра блокировки
setb
P2.4
clr
P2.4
mov
P2, #01000001B ;записываем
код снятия блокировки
setb
P2.4
clr
P2.4
mov
P2, #0 ;устанавливаем
адрес на первый разряд
setb
P2.4
clr
P2.4
ret
;
подпрограмма сброса ЖКИ №2
eres2: mov
P3, #0FH
setb
P3.4
clr
P3.4
mov
p3, #01000001B
setb
P3.4
clr
P3.4
mov
P3, #0
setb
P3.4
clr
P3.4
ret
;подпрограмма
очистки ЖКИ №1
eclr1: call
eres1 ;сброс экрана
mov
P2, #01000000B ;установка
управляющего кода
mov
R0, #20 ;инициализация
счетчика разрядов
c11: set
P2.4 ;импульс
записи
clr
P2.4
djnz
R0, c11 ;оператор
цикла
ret
;
подпрограмма очистки ЖКИ №2
eclr2: call
eres2
mov
P3, #01000000B
mov
R0, #20
c21: set
P3.4
clr
P3.4
djnz
R0, c21
ret
;подпрограмма
установки курсора для ЖКИ №1 по аккумулятору
ecur1: anl
a, #0FH ;отделяем
биты адреса
mov
P2, a ;устанавливаем
адрес на первый разряд
setb
P2.4
clr
P2.4
ret
;
подпрограмма установки курсора для ЖКИ №2 по аккумулятору
ecur2: anl
a, #0FH
mov
P3,a
setb
P3.4
clr
P3.4
ret
;таблица
символов
ORG 0600H
ts: DB 0EEH ;0
DB 060H ;1
DB 02FH ;2
DB 06DH ;3
DB 0E1H ;4
DB 0CDH ;5
DB 0CFH ;6
DB 068H ;7
DB 0EFH ;8
DB 0EDH ;9
DB 0EBH ;A
DB 0C7H ;b
DB 08EH ;C
DB 067H ;d
DB 08FH ;E
DB 08BH ;F
DB 000H ;
DB 0A9H ;°
DB 001H ;-
DB 003H ;r
DB 047H ;o
;подпрограмма
вывода символа на ЖКИ №1 через аккумулятор
prch1: push
DPL ;сохранение
регистров в стеке
push
DPH
push
b
mov
DPTR, #ts ;начало
таблицы символов
mov
c, acc.7 ;сохраняем
значение точки
clr
acc.7 ;сбрасываем
значение бита
movc
a, @a+DPTR ;получаем
выводимый код
mov
acc.4, c ;восстанавливаем
значение точки
mov
b, a ;сохраняем
его в b
anl
a, #0FH ;отделяем
младший полубайт
mov
P2, a ;выводим
его на индикатор
setb
P2.6 ;вкл. Режим
вывода данных
setb
P2.4 ;импульс
записи
clr
P2.4
mov
a, b ;восстанавливаем
выводимый код
swap
a
anl
a, #0FH ;отделяем
старший полубайт
mov
p2, a ;выводим
его на индикатор
setb
p2.6 ;вкл. Режим
вывода данных
setb
P2.4 ;импульс
записи
clr
P2.4
pop
b
pop
DPH ;восстановление
регистров
pop
DPL
ret
;подпрограмма
вывода символа на ЖКИ №2 через аккумулятор
prch2: push
DPL ;сохранение
регистров в стеке
push
DPH
push
b
mov
DPTR, #ts ;начало
таблицы символов
mov
c, acc.7 ;сохраняем
значение точки
clr
acc.7 ;сбрасываем
значение бита
movc
a, @a+DPTR ;получаем
выводимый код
mov
acc.4, c ;восстанавливаем
значение точки
mov
b, a ;сохраняем
его в b
anl
a, #0FH ;отделяем
младший полубайт
mov
P3, a ;выводим
его на индикатор
setb
P3.6 ;вкл. Режим
вывода данных
setb
P3.4 ;импульс
записи
clr
P3.4
mov
a, b ;восстанавливаем
выводимый код
swap
a
anl
a, #0FH ;отделяем
старший полубайт
mov
P3, a ;выводим
его на индикатор
setb
P3.6 ;вкл. Режим
вывода данных
setb
P3.4 ;импульс
записи
clr
P3.4
pop
b
pop
DPH ;восстановление
регистров
pop
DPL
ret
;подпрограмма
вывода сообщения на ЖКИ №2
prstr2: push
psw ;сохранение
регистра psw
mov
psw, #bank3 ;включаем
банк 3
ps1: mov
a, #0
movc
a, @a+DPTR ;получение
очередного символа
cjne
a, #0, ps2 ;если
это не последний выводим
pop
psw ;завершение
подпрограммы
ret
ps2: call
prch2 ;вывод
символа на экран
inc
DPTR ;увеличиваем
значение указателя
jmp
ps1
;подпрограмма
вывода сообщения об ошибке
prErr: push
acc
call
eclr2 ;очистка
экрана
mov
a, #2 ;курсор
в позицию 2
call
ecur2
mov
DPTR, #serr ;вывести надпись
«Error»
call
prst2
pop
acc
call
prch2 ;вывод номера
ошибки
ret
;сообщение
«Error»
ORG 0680H
Serr: DB 14,
19, 19, 20, 19, 0 ;сообщение «Error»,
0 в конце – признак окончания слова
;подпрограмма
вывода Туст на ЖКИ №1
prtmu: mov
a, #16
call
prch1
mov
a, bufLAN2
mov
b, #10
div
ab
call
prch1
mov
a, b
call
prch1
mov
a, #17
call
prch
mov
a, #0CH
call
prch1
ret
;подпрограмма
с длительностью выполнения примерно 3 мин. опроса клавиатуры и вывода Тпм
zader: mov
R2, #7
za1: mov
R1, #255
za2: mov
R0, #56;
za3: mov
LoopCnt, #255
za4: call
Delay
djnz
LoopCnt, za4
djnz
R0, za3
call
inkl ;опрос клавиатуры
jnz
za5 ;переход
при нажатии
call
eclr2 ;вывод Тпм
mov
a, #2
call
ecur2
call
sttmp
call
rdtmp
call
prtmp
djnz
R1, za2
djnz
R2, za1
mov
a, #0
ret
za5: mov
a, #1
ret
;подпрограмма
запуска процесса измерения температуры
sttmp: push
psw
mov
psw, #bank2 ;выбор
банка 2 памяти
stm1: call
resLAN ;сброс
cjne
a, #0, stm6 ;если
ошибка переход
mov
a, #0CCH ;пропуск
ПЗУ
call
wr8LAN
mov
a, #44H ;запуск
преобразования
call
wr8LAN
stm4: call
rd1LAN ;запрос
об окончании преобразования
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 |