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

;перемещение в старший полубайт /запись младшего полубайта .•запись младшего байта

;делим на 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 ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz