пор
rcall W200
пор rcall
GetTeirro
пор
rcall righ
rcall righ
rcall righ
rcall righ
rcall righ : зьщеление знака
/начало программы
/подпрограмма сброса переменных
/задержка на 200 мс, /для устойчивости LM75
/чтение данных из LM75
/сдзиг зправо
/сдвиг впразо
/сдвиг зправо
/сдзиг впразо
/сдвиг зпоазо
128
Глава 6
Листинг 6 1. Продолжение
mov tmp, dig43
andi tmp,
ori tmp, clz
;проверка на минус
cpi tmp,
brne plus
plus:
nop rjmp nop rjmp
minus
kl
.•знаковая переменная
г маска для старшего полубайта
;маска для знака
;есть минус? ;больше разно
;переход к мхнусозым данным
.•длинный переход к плюсовым данным
minus: |
nop |
|||
ldi |
prgl, |
;метка "Минус" |
||
andi |
dig43, |
;эыделяем цыфру от знака |
||
sbci |
dig21, |
;зычитаем с заемом |
||
subi |
dig43, |
content> |
;вычитаем 1 |
|
com |
dig43 |
;инверсия данных |
||
andi |
dig43, |
;выделяем цыфру от знака |
||
com |
dig21 |
;инверсия данных |
||
nop |
||||
kl: |
nop |
|||
mov |
r5, dig43 |
;записываем данные з регистр |
||
mov |
r4, dig21 |
.•записываем данные з регистр |
||
rcall |
deldes |
.•операция деления на 8 |
||
;Преобразуем |
шестнадцатиричное в десятичное |
|||
mov |
dig43, |
r5 |
.•чтение данных из регистра |
|
mov |
dig21, |
r4 |
.•чтение данных из регистра |
|
nop |
||||
.•Менее |
8 - преобразование |
не нужно |
||
els |
||||
cpi |
dig43, |
;сравниваем старший разряд |
||
brlt |
wei |
|||
rjmp |
wqqq |
|||
wei: |
nop els |
|||
cpi |
dig21, |
/сравниваем младший разряд |
||
brlt |
sot |
|||
rjmp |
wqqq |
|||
sot: |
nop |
;да, менее 8 |
||
mov |
dig21, |
гб |
/записываем только младший разряд |
|
rjmp |
vos |
|||
wqqq: |
nop |
|||
rcall |
hexbed |
;зыполняем преобразование hex-bed |
||
vos: |
nop |
|||
mov |
dig43, |
dig21 |
.•данные только з одном байте |
Простой термометр
Листинг 6,1. Продолжение
andi dig43, $F0 nop
swap dig43 nop
andi dig21, SOF rcall Get7Segm nop
rcall Get7Segn nop mov
r4, prgl Disp
rcall W200
rcall Disp nop
nop rjmp
nStart
;выделяем цифру
;выделяем старший разряд десятичного
;выделяем младший разряд десятичного ;семисегментный код старшего разряда
;семисегментный код младшего разряда
.•восстанавливаем метку знака /•выводим на дисплей
/■задержка на 200 мс, ;для устойчивости LM75
;переходим в начало программы
Делимое r7r6r5r4 делитель гЗг2 результат г5:г4 остаток гб
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |