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

125

Таблица 6.1. Окончание

Старший разряд

PD0

РС5

РС4

РСЗ

РС2

РС1

РСО

Код

5

1

1

0

1

1

0

1

6D

6

1

1

1

1

1

0

1

7D

7

0

0

0

0

1

1

1

07

8

1

1

1

1

1

1

1

7F

9

1

1

0

1

1

1

1

6F

Таблица 6.2. Преобразование двоично-десятичного значения в семисегментный код для младшего разряда

Младший разряд

РВЗ

РВ2

РВ1

РВО

PD7

PD6

PD5

Код

0

1

1

1

1

1

1

0

1

0

1

1

0

0

0

0

30

2

1

1

 

1

1

0

1

6D

3

1

1

1

1

0

0

1

79

4

0

1

1

 

0

1

1

33

5

1

0

1

1

0

1

1

6

1

0

1

1

1

1

1

5F

7

1

1

1

 

0

0

 

70

8

1

1

1

1

1

1

1

7F

9

1

1

1

1

0

1

1

Программа на ассемблере представлена в листинге 6.1, а шестна-дцатеричный код — в листинге 6.2. Соответствующие файлы term75. asm и term75.hex находятся на прилагаемом к книге компакт-диске в папкеПрограммьЛОб - Термометр. Листинг 6.1. Программа управления термометром

.include "C:\Program Files\Atmel\Avr Studio\Appnotes\m8def.inc"

;Азтор: Кразченко А.В.

.-Дата: 5.01.2008

.•Версия: 1.0.4

;Имя файла: term75.asm

.•Микроконтроллер: ATmega8

;Тактовая частота: 1.ОмГц

.•Питание: нестабилизирозанное 5 В

.list

126

Глава 6

Листинг 6 ' Продолжение

;***** Регистровые переменные

def

tmp

=

rl6

def

tmpl

=

rl7

def

tmp2

=

rl8

def

Fig

=

rl9

def

Dig21

=

r20

def

tmp3

=

r21

def

tt2

=

r22

def

Dig43

=

r23

def

dbyt

=

r24

def

adr

=

rO

def

prgl

=

r25

def

prg2

=

r26

def

tmp3

=

r27

def

tmp 4

=

r28

Рабочий регистр

Рабочий регистр Рабочий регистр

; Флаги в регистре Fig:

. equ Аск = 0 ; Флаг квитирования = разряд О ; Входы/выходы I2C:

.equ SDA = РВ4 ; SDA - порт В / разряд О

.equ SCL = РВ5 ; SCL = порт В / разряд 1

; Адреса ведомых устройств I2C:

.equ TempAdr = $90 ; Адрес Ш75

;Начало области памяти, вектор прерывания . org 0

rjmp

RESET

   

пор

;rjmp

INTO

 

пор

;rjmp

INT1

 

пор

; rjmp

TIMER2

COMP

пор

;rjmp

TIMER2

OVF

пор

; rjmp

TIMER1

CAPT

пор

; rjmp

TIMER1

COMPA

пор

; rjmp

TIMER1

COMPB

пор

; rjmp

time

 

пор

; rjmp

TIMERO

OVF

пор

;rjmp

SPI, STC

пор

;rjmp

USART,

RXC

пор

;rjmp

USART,

UDRE

пор

; rjmp

USART,

TXC

пор

;rjmp

ADC

 

пор

;rjmp

EE RDY

 

пор

; rjmp

ANA_COM?

пор

; rjmp

TWI

 

Простой термометр

127

Листинг 6.1. Продолжение

nop ;гjmp SPM_RDY

/Начало зсей программы без

вектора прерывания

.org 22

   

;настройка

портов 3, С, D

 

RESET: пор

   

clr

tmp

 

clr

tmpl

 

;зыходы на

дисплей

 

ldi

tmpl, $FF

;Порт В,-выходы

out

DDRB, tmpl

 

out

PORTB, tmp

/обнулить порт В

;выходы на

дисплей

 

ldi

tmp2, $3F

 

out

DDRC, tmp2

/Порт С-зыходы

out

PORTC, tmp

/Обнулить порт С

;зыходы на

дисплей

 

ldi

tmp3, $FF

/Порт D-выходы

out

DDRD, tmp3

 

ldi

tmp, $1E

/символ градуса Цельсия

out

PORTD, tmp

/установить порт D

;установка

верхнего урозня

стека

clr

tmp

 

ldi

tmp, high(RAMEND)

out

SPH, tmp

 

ldi

tmp, low(RAMEND)

out

SPL, tmp

 

:сброс всех значений cli

/общий запрет прерываний

/Начало программы nStart: пор

rcall res


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






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_50.html on line 1696

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_50.html on line 1696

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book8_50.html on line 1696