Предыдущая Следующая

пор

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 ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz