Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1569

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

O0002f eOaO

Idi XL, low(Mind)

000030 eOb 1

Idi XH, high(Mind)

; начальный адрес RAM для кодов SPI

000031 930d

st

X+, tempi

000032 930d

st

X+, tempi

000033 930d

st

X+, tempi

000034 eOaO

idi XL, iow(Mind); восстановление в Х начального адреса

000035 d087

rcall

spi_stc

; старт передачи байтов индикации

000036 9508

ret

;INT0, кнопки управления

key_cnt:

; сохранение в стеке регистров и флагов

000037 930f

push

tempi

000038 93If

push

temph

000039 924f

push

saveF

00003a b64f

in

saveF, SREG

; обработка сигналов "Стоп", "Пуск"

00003b ЬЗОб

in

tempi, PINB

контроль сигнала СТОП

00003c ff02

sbrs

tempi, PB2

00003d c012

rjmp

cnt_off

перейти к процедуре СТОН

00003effOl

sbrs

tempi, PB1

контроль сигнала ПУСК

00003 f c005

rjmp

cnt_on

перейти к процедуре ПУСК

; если оба сигнала в 1, завершить без изменения режима

key_out:

; завершение с восстановлением из стека флагов и регистров

000040 be4f

out

SREG,saveF

000041

904f

pop

saveF

000042 91 if

pop

temph

000043 91Of

pop

tempi

000044

9518

reti

cnt

on:

000045

2333

переход в режим ПУСК

tst

rent

000046 f7c9

brn

keyout

; завершить по признаку режима ПУСК

000047 6830

sbrrcnt, 0x80

; установить признак режима ПУСК в rent

000048 eO15

Idi

temph, 0x05

000049 bfl3

out

TCCR0, temph

; запуск таймера циклов контроля

00004a 2722

clr

counT

; сброс счетчика для формирования цикла

00004b

b927

out

ADMUX, counT ; канал РАО для АЦП

00004c 9a36

sbi

ADCSR, ADSC

; запуск АЦП дня 1 цикла контроля

00004d

98df

cbi

PORTA, PA7

; выключение охлаждения

00004e 98de

cbi

PORTA, PA6

; выключение подогрева

00004fcff0

rjmp

keyout

; завершение процедуры

119


cnt_off:

; переход в режим СТОП

000050 2333

tst

rent

000051 f3 71

breq

keyout

; завершить по признаку режима СТОП

000052

2733

clr

rent

; сбросить признаки режима ПУСК в rent

000053

2711

clr

temph

000054

ЬПЗ

out

TCCR0, temph

; останов таймера циклов контроля

000055 bf!2

out

TCNT0, temph

; сброс таймера циклов контроля

000056

2722

clr

counT

; сброс счетчика для формирования цикла

000057

98df

cbi

PORTA, PA7

; выключение охлаждения

000058

98de

cbi

PORTA, PA6

; выключение подогрева

waitspi:

000059

ЗОаО

cpi

XL, low(Mind); контроль вывода байтов индикации

00005а Ю11

breq

cnt_end

продолжение процедуры, если вывод завершен

00005b 9478

sei

; разрешить прерывания при ожидании

00005с effe

rjmp

wait_spi

; возврат к контролю завершения цикла вывода

cntend:

00005d dfdO

rcall

ind_off ;выключить индикацию температуры для СТОП

00005ecfel

rjmp

key_out

; завершение процедуры

;передача кодов управления индикацией

spistc:

0000bd930f

push

temp"!

0000be924f

push

saveF

OOOObf b64f

in

saveF, SREG

0000c0

30a3

cpi

XL, low(Mind+3)

0000c1

f051

breq

load

;

0000c2 910d

Id

tempi, X+

;

0000c3

30a2

cpi

XL, low(Mind+2)

0000c4

f409

brne

skip

;

0000c5

6800

sbr

tempi, 0x80

;

skip:

ООООсб b90f

out

SPDR, tempi

0000c7 b90f

out

SPDR, tempi

120


spiout:

; завершение с восстановлением из стека флагов и регистров

О000с8 be4f

out

SREG, saveF

O000c9 904f

pop

saveF

O000ca910f

pop

tempi

O000cb9518

reti

load:

OOOOcc 98c0

cbi

PORTB, PBO

OOOOcd 0000

nop

OOOOce 0000

nop

;

O000cf9ac0

sbi

PORTB, PBO ;

0OOOdOcff7

rjmp

spi_out

;

.ORG 0x0800

cdind:

; коды индикации цифр, начиная с нуля

000800 063f

000801 4f5b

000802 6d66

000803 077d

000804 6f7f

.dB

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f

;EndOfFile

RESOURCE USE INFORMATION

Notice:

The register and instruction counts are symbol table hit counts, and hence implicitly used resources are not counted, eg, the 'lpm' instruction without operands implicitly uses rO and z, none of which are counted.

x,y,z are separate entities in the symbol table and are counted separately from r26..r31 here.

.dseg memory usage only counts static data declared with .byte

AT90S8535 register use summary:

rO:

1 rl

: 0

r2 :

0

r3 :

0

r4 :

16

r5 :

0

r6 :

0

r7 :

0

r8:0r9:

0

rlO:

0

rll:

0

rl2:

0

rl3:

0

rl4:

0

rl5:

0

rl6:

50

rl7:

29

rl8:

7

rl9:

6

r20:

0

r21:

0

r22:

0

r23:

0

r24:

0

r25:

0

r26:

5

r27:

2

r28:

0

r29:

0

r30:

2

r31:

1

x :

5

у :

0

z

:

0

Registers used: 11 out of 35 (31.4%)

121


AT90S8535 instruction use summary:

adc

:

0

add

:

4

adiw

:

0

and

:

0

andi

:

0

asr

:

0

bclr ::

0

bid

;;

0

brbc

:

0

brbs

:

0

brcc

:

4

brcs

:

8

breq

:

12

brge :0

brhc

:

0

brhs

:

0

brid

:

0

brie ::

0

brio

:

0

brlt :

0

brmi

:

0

brne

:

4

brpl

:

0

brsh

:

0

brtc ::

0

brts :

0

brvc

:

0

brvs

:

0

bset

:

0

bst

:

0

cbi

:

14

cbr

:

0

clc

:

0

clh

:

0

cli

:

0

cln

:

0

clr

:

20

els

:

0

clt

:

0

civ

:

0

elz

:

0

com

:

0

cp

:

0

epe

:

0

cpi

:

18

cpse

:

0

dec

:

0

eor

:

0

icall:

0

ijmp

:

0

in

:

16

inc

:

6

Id

:

21

dd

:

0

Idi

:

32

Ids

:

2

1pm

:

2

Isl

:

0

lsr

:

4

mov

:

2

neg

:

0

nop

:

6

or

2

ori

:

0

out

:

48

pop

:

20

push

:

20 rcall: 20

ret

:

10

reti

:

8

rjmp

:

40

rol

:

0

ror

:

6

sbc

:

0

sbci

:

0

sbi

:

14

sbic

:

4

sbis

:

4

sbiw

:

0

sbr

:

2

sbrc

0

sbrs : 4

sec

:

0

seh

:

0

sei

:

4

sen

:

0

ser

:

2

ses

:

0

set

:

0

sev

:

0

sez

:

0

sleep :

0

st

:

8

std

:

0

sts

:

2

sub

:

0

subi ::

4

swap :

0

tst

:

10

wdr

:

0

Instructions used: 37 out ofl 00 (37.0%)

AT90S8535 memory use summary [bytes]:

Segment

Begin

End

Code

Data Used

Size Use%

[xseg] 0x000000 0x00100a

394

10

400

8192

4.9%

[.dseg] 0x000060 0x000060

0

0

0

512

0.0%

[.eseg] 0x000000 0x000000

0

0

0

5J2

0.0%

Assembly complete, 0 errors, 1 warnings

В выходном сообщении компилятора указано, что программа содержит 394 команды, используя менее 5% адресного пространства FLASH. В алго­ ритме работы все необходимые функции управления реализованы вектора­ ми прерываний, основной программный цикл (метка main) при работе сис­ темы управления температурой не используется, с его помощью могут ре­ шаться любые дополнительные задачи. Управление аппаратными средст­ вами микроконтроллера, обеспечивающими выполнение всех необходимых функций, достаточно просто и эффективно производится программной об­ работкой прерываний, суммарное время загрузки процессора подпрограм­ мами обработки прерываний в каждом цикле работы составляет менее 1 %. Таким образом, суммарное использование программных ресурсов микро­ контроллера (процессора, памяти, регистров и т.п.) не превышает несколь­ ких процентов.

Оценку использования аппаратных ресурсов микроконтроллера можно произвести по функциональной схеме (рис. 9). Для передачи сигналов не­ обходимы 10 линий ввода-вывода из 32. Большая часть входов АЦП сво­ бодна, также не используются внешнее прерывание INT1, таймеры 1 и 2, 122