;перемещение в старший полубайт /запись младшего полубайта .•запись младшего байта
;делим на 8
Простой термометр
133
Листинг 6.1. Продолжение
rcall delit
nop
ret
;подпрограмма деления
.•Подпрограмма перекодировки в семисегментный код Get7Segm: пор
ZH, high(2*prog3) ZL, Low(2*prog3) ZL, dig43
;чтение dig43, adr ;запись
ZH ZL
ZH, high (2*prog4) ZL, Low(2*prog4) ZL, dig21
;чтение
dig21, adr ;запись
ldi ldi Add lpm mov ret
Get7Segn: nop clr clr ldi ldi Add lpm mov ret
;Подпрограмма зывода данных на дисг Disp: nop nop
;формируем младший разряд дисплея dig43 dig21
в аккумулятор старший байт в аккумулятор младший байт
из таблицы в конце программы в регистр из таблицы
в аккумулятор старший байт в аккумулятор младший байт
из таблицы а конце программы в регистр из таблицы
mov |
tmp2, |
mov |
tmp3, |
clc |
|
rol |
tmp3 |
clc |
|
rol |
tmp3 |
clc |
|
rol |
tmp3 |
clc |
|
rol |
tmp3 |
mov |
tmpl, |
rol |
tmpl |
rol |
tmp3 |
руем |
старший |
mov |
tmp2, |
andi |
tmp2, |
mov |
tmp 4, |
clc |
|
ror |
tmp 4 |
clc |
|
ror |
tmp4 |
запис запис сброс сдвиг сброс сдвиг сброс сдвиг сброс сдвиг
ь кода ь кода флага кода флага кода флага кода флага кода
переноса влево
переноса влево
переноса влево
переноса влево
:сдвиг кода влево с переносом :сдвиг кода влево с заемом
:запись кода
F dig21
г запись кода
;сброс флага переноса
г сброс флага переноса
Глава 6
Листинг 6.1. ГЪодолжение
rfv:
wpo:
clc |
;сброс флага переноса |
||
ror |
tmp4 |
||
nop |
|||
out |
PORTC, |
tmp 2 |
;вывод на дисплей |
out |
PORTD, |
tmp3 |
;вывод на дисплей |
out |
PORTB, |
tmp 4 |
;вывод на дисплей |
clz |
;подготовка условия |
||
cpi |
prgl, |
;есть минус? |
|
brne |
rfv |
;равен 1 |
|
sbi |
DDRB, |
6 |
/установка знака "минус |
rjmp |
wpo |
||
nop |
;не равен 1 |
||
cbi |
DDRB, |
6 |
;сброс знака |
nop |
|||
nop |
|||
ret |
.•Подпрограмма считывания температуры
GetTemp:
ldi dbyt,TempAdr rcall Start
sbrc Flg,Ack
ret
ldi dbyt,0
rcall sbrc
ret
ldi rcall
WriteByte Fig,Ack
dbyt,TempAdr+l Restart
sbrc Fig,Ack
ret
rcall
mov
sbr
rcall
mov
rcall
ret
ReadByte
Dig43,dbyt
Fig, l«Ack
ReadByte
Dig21,dbyt
stopp
Считываем температуру из LM75 Адрес LM75, направление - запись Передаем условие старта + адрес ведомого
Пропускаем следующую команду, если квитирование
Завершаем, если отрицательное квитирование
Указатель LM75 (указывает на
температуру)
Передаем
Пропускаем следующую команду, если квитирование Завершаем, если отрицательное квитирование
; Адрес LM75, направление - чтение Передаем новое условие старта + адрес
Пропускаем следующую команду, если бит квитирования = о Завершаем, если отрицательное квитирование
Считываем байт, бит квитированиям Сохраняем старший байт в буфер Нет квитирования
Считываем байт, бит квитирования^ Сохраняем младший байт в буфер Передаем условие завершения
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |