291
В ходе реализации подпрограммы выяснилось что у микроконтроллера mega8 ограничен запас арифметических функций (например, он не работает с командой SBC Rd, Rr). При этом компилятор программы не смог точно указать ошибку компиляции. После некоторых ухищрений программа возобновила работоспособность.
Как только значение выбрано, происходит переход к адресу, в котором записано два байта информации "Базис 12" (5-6 столбцы табл. 11.1) и дйа байта кода дисплея (7-12 столбцы табл. 11.1). Для реализации метода регулирования "Базис 12" автор использовал функцию команд микроконтроллера "сдвиг вправо через перенос". При этом значение переноса анализируется логическими командами. Если перенос равен единице, то семистор включается, если же — нулю, то выключается.
Для отображения информации на дисплее также используется функция переноса. В формировании второй цифры индикации учувст-вуют порты В и D. Для того чтобы правильно передать информацию в порт В, семь разрядов цифры маскируется логической функцией "И", а для порта D разряды цифры получаются в результате комбинирования логических функций с первой цифрой порта D. Это необходимо для экономии памяти кодов значащих цифр.
Скорость выполнения программы микроконтроллером очень высока, поэтому АЦП2 успевает вычислить уровень сетевого напряжения и выключить семистор при нулевом напряжении сети и включить при напряжении выше 10 единиц АЦШ.
Программа повторяется циклически. При этом за один цикл полностью выполняется функция "Базис 12". В каждом новом цикле проверяется уровень регулятора мощности Р1.
Программа управления паяльником представлена в листинге 11.1, а шестнадцатеричный код программирования микроконтроллера — в листинге 11.2. Соответствующие файлы warm9.asm и warm9.hex находятся на прилагаемом к книге компакт-диске в папке ПрограммьЛП - Паяльник.
Листинг 11.1. Программа цифрового управления паяльником
;Автор: Кразченко А.В.
;Дата: 17.07.2008
;Версия: 1.0.4
;Имя файла: Warm9.asm
.•Микроконтроллер: ATmega8
;Тактовая частота: 4.ОмГц
.•Питание: стабилизированное 5 В
.list
Глава 11
Листинг 11.1. Продолжение
.include "C:\Program Files\Atmel\AVR Studlo\Appnotes\m8def.inc"
|
. * * * * + |
Регистровые |
переменные |
||
|
def |
adr |
= |
rO |
|
|
def |
disl |
= |
rl4 |
;младший адрес дисплея |
|
def |
dis2 |
- |
rlO |
;старший адрес дисплея |
|
def |
cotl |
= |
rll |
.■младший адрес кода 12 |
|
def |
cot2 |
= |
rl2 |
.•старший адрес кода 12 |
|
def |
copy |
= |
rl3 |
;копия адреса кода |
|
def |
cxt |
= |
rl6 |
; Счетчик мощности |
|
def |
cms |
= |
rl7 |
; Рабочий регистр |
|
def |
poyl |
= |
rl8 |
;данные дисплея1 |
|
def |
poy2 |
= |
rl9 |
.•данные дисплея2 |
|
def |
Digl |
= |
r20 |
|
|
def |
Dig2 |
= |
r21 |
|
|
def |
dadcl |
= |
r22 |
|
|
def |
dadc2 |
= |
r23 |
|
|
def |
adcl |
= |
r2 4 |
|
|
def |
adc2 |
= |
r2 5 |
|
|
def |
tmp |
= |
r2 6 |
; Рабочий регистр |
|
def |
tmp2 |
= |
r27 |
; Рабочий регистр |
|
def |
tmp3 |
= |
r2 8 |
; Рабочий регистр |
. cseg
.•Начало области памяти, вектор прерывания
| НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |