|
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
компаратор и интерфейс UART. Следует отметить, что значительный объ ем резервных ресурсов микроконтроллера не является признаком неэффек тивного решения задачи. Напротив, эти резервные ресурсы практически всегда должны оставаться для возможной модернизации: изменения алго ритмов работы или введения каких-либо дополнительных функций. Неко торые варианты модернизации функций системы управления приведены ниже.
Программу несложно доработать при изменении и усложнении требуе мых алгоритмов управления. Например, управление нагревом и охлажде нием будет более эффективным, если использовать не релейное управление (включено/выключено), а ПИД-регулятор с управлением тепловой мощно стью по отклонению температуры. Аналоговый сигнал управления в этом случае можно формировать таймером 1 или 2 в режиме модулятора ШИМ.
Пороговые значения температур в программе фиксированные, так как определены в виде констант. Несложно реализовать процедуру ввода, ин дикации и хранения в EEPROM изменяемых пороговых значений темпера туры. В этой процедуре можно использовать уже имеющийся цифровой индикатор температуры, а для управления вводом необходимо подключить дополнительные кнопки на свободные входы портов микроконтроллера по схеме, которая аналогична приведенной на рис. 7.
Неиспользованный интерфейс UART позволяет создать средства обмена данными с другими устройствами управления. Например, в рассматривае мую систему управления температурой можно ввести средства поддержки дистанционного контроля работы через интерфейс UART. Функции дис танционного контроля могут выполняться из персонального компьютера с передачей команд управления параметрами и режимами работы и с запро сом данных о текущем состоянии системы.
5.3. Средства подготовки программ
Подготовка файла программы микроконтроллера для процедуры внутри системного программирования может выполняться инструментальным па кетом AVR Studio 4.X. Пользовательский интерфейс пакета AVR Studio стандартный для Window's-приложений (рис. 10) и содержит полоску ме ню, панель инструментов и рабочую область. Для активизации функций AVR Studio, необходимых для работы с текстом программы, должны быть выполнены следующие операции:
1.Для работы с текстом программы необходимо создать проект (project). Проект создается с помощью меню Project (пункт New Project). В поя вившемся на рабочем поле окне (рис. 11) указать тип проекта - AVR Assembler, имя и путь папки, имя проекта. Кнопкой "Next" необходимо
123
to
РисЛО. Интерфейс AVR Studio