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

В начале программы поочередно опрашивается клавиатура шестна-дцатеричным кодом. В данном примере использованы только четыре клавиши, однако при добавлении устройств можно использовать 10 клавиш (в этом случае программу необходимо расширить). Для линий РВ2 и РВЗ контроллер формирует четыре комбинации выходных сигналов с задержкой между комбинациями 0,01 с. Дешифратор преобразует код в "бегущую единицу". С каждой комбинацией микроконтроллер снимает данные с линии РВ1 и записывает зарегистрированный код в регистр R6. Вывод РВ1 порта В опрашивается каждую 1 мс.

Радиоуправление моделями автомобилей

246

Глава 10

Сканирование клавиатуры производится дважды. Каждой клавише присваивается такой код, чтобы сумма кодов давала уникальный результат. Результаты первого и второго опроса клавиатуры сравниваются, и в случае их расхождения (дребезг контактов) сканирование повторяется заново. Коды нажатых клавиш суммируются (только для тех клавиш, комбинации которых логически верны).

Предположим у нас есть четыре кода клавиш (табл. 10.1). В таком случае комбинация "вверх влево" даст суммарный код 6, а комбинации "вверх вниз" и "влево вправо" будут просто проигнорированы.

Таблица 10.1. Пример кодирования клавиш

Действие

Код

Сумма

Вверх

1

 

Вниз

3

 

Влево

5

 

Вправо

9

 

Вверх влево

 

6

Вверх вправо

 

10

Вниз влево

 

8

Вниз вправо

 

12

Выделенный код комбинации нажатых клавиш преобразуется в табличный помехозащищенный код, представленный в виде байта (восемь бит). Для передачи байта информации используется алгоритм поразрядного сдвига влево через разряд переноса. Передаваемый бит выделяется (анализируется состояние разряда переноса) и поступает на модулятор передатчика через вывод РВО порта В.

Передача восьмибитной информации (с частотой 3 кГц) повторяется 10 раз с паузой между посылками 10 мс. Это необходимо для анализа принятых данных в приемнике и выявления правдивой информации с вероятностью более 50%.

Программа передатчика представлена в листинге 10.1, а шестнадца-теричный код программирования микроконтроллера передатчика — в листинге 10.2. Соответствующие файлы Peredatcikl91 .asm и Реге-datcikl91 .hex находятся на прилагаемом к книге компакт-диске в папке ПрограммыМО - Радиоуправление.

Листинг 10.1. Программа упранлснин передатчиком

.include "C:\Program Files\Atmel\AVR Stud_i_o\Appnotesdef.inc" .def tmp = rl6

.def top = rl7

.def tip = r26

Радиоуправление моделями автомобилей

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

equ

row2

= PB4

equ

hkayl

= PB2

equ

hkay2

= PB3

equ

rowl

= PbO

equ

broad

= РЫ

equ

cvlevo

= $A4

equ

cvpravo

= SAl

equ

cverh

= $A8

equ

cvniz

= $AA

equ

cvlevniz

= $A5

equ

cvpravniz

= $A3

equ

cvleverh

= $AB

equ

cvpraverh

= $A9

. cseg .org 0

rjmp

nop

nop

RESET: ldi

RESET

;rjmp EXT_INT0 ;rjmp TIM_OVF0 tmp, low(RAMEND) ;определение стека ОЗУ


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



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz