Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 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