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

прерывание не используется прерывание не используется

.•настройка порта В

out SPL, tmp

clr tmp

clr top

out PORTB, R6

ldi tmp,content>E

out DDRB, tmp /Проверка клавиатуры, выдача кода из таблицы .■устранение дребезга контактов. Клавиатура -SNOV:

на всех линиях порта В РВ1,РВ2,РВЗ-выходы

4 клавиши

VVOD:

clr

top

   

clr

tip

   

rcall

SBR1

 

;

rcall

SBR2

 

;

wdr

   

;сброс сторожевого таймера

cbi

PORTB,

rowl

;обнуление порта

cbi

PORTB,

hkayl

.-сброс PORT32

cbi

PORTB,

hkay2

;сброс PORTB3

rcall

dlOOms

   

sbic

PORTB,

rowl

.■пропуск команды, если ноль

rcall

VERH

   

sbi

PORTB,

hkayl

.•установка PORTB2

cbi

PORTB,

hkay2

.•сброс PORTB3

rcall

dlOOms

   

sbic

PORTB,

rowl

 

rcall

VNIZ

   

cbi

PORTB,

hkayl

.•сброс PORTB2

248

Глава 10

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

sbi

PORTB, hkay2

;установка PORTB3

rcall

dlOOms

 

sbic

PORTB, rowl

 

rcall

VLEVO

 

sbi

PORTB, hkayl

.•установка PORTB2

sbi

PORTB, hkay2

.•установка PORTB3

rcall

dlOOms

 

sbic

PORTB, rowl

 

rcall

VPRAVO

 

nop

   

sbrc

R6, 0

 

rjmp

SRAV

 

mov

R22, R18

;обмен данными

mov

R23, R19

 

mov

R24, R20

 

mov

R25, R21

 

inc

R6

 

rjmp

VVOD

 

nop

   

clz

   

cp

R18, R22

;проверка нажатия клавиши

brbc

1, SNOV

;для устранения дребезга

cp

R19, R23

;контактов

brbc

1, SNOV

 

cp

R20, R24

 

brbc

1, SNOV

 

cp

R21, R25

 

brbc

1, SNOV

 

:выделение кода клавиши и передача зсех нажатых комбинаций

.•получаем возможную комбинацию ;сохранение данных регистра .•перегрузка в оперативный регистр .•переход з подпрограмму декодировки ;восстанозление данных регистра

add

R18, R20

push

R18

mov

R27, R18

rcall

recod

pop

Rla

add

R18, R21

mov

R27, R18

rcall

recod

nop

 

add

R19, R20

push

R19

mov

R27, R19

rcall

recod

pop

R19

nop

 

add

R19, R21

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

249

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

 

mov

R27, R19

   
 

rcall

recod

   
 

nop

     
 

rjmp

SNOV

.■возврат в начало

;подпрограмма

. передачи полученных

данных

;путем

сдвига

злево через

флаг са

rry

brodcast:

cbi PORTB,

1

.•установить коль з P0RT31

 

clr

top

   
 

clr

tip

   
 

ldi

top, content>A

 

.•передача 10 раз команды

ВАТ:

nop

     
 

ldi

tip,

 

/передача 8 битоз

 

clc

   

.•сброс флага carry

 

mov

R4, R2 7

 

;загрузка из таблицы команды

BIT:

nop

   

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

 

nop

     
 

rol

R4

 

;сдвиг влево через флаг carry

 

brbs

0, L

 

;переход, если саггу=1

 

brbc

0, К

 

.•переход если саггу=0

 

rjmp

К

   

L:

sbi

PORTB, broad

 

.•установить еденицу в PORTB1

 

rcall

dO16ms

   
 

rjmp

CON

   

К:

cbi

PORTB, broad

 

.•установить ноль в P0RTB1

 

rcall

d016ms

   

CON:

nop

     
 

clz

     
 

dec

tip

   
 

brbc

1, BIT

 

.•пропуск команды, если Z=0

       

;конец цикла передачи битоз

 

cbi

PORTB, broad

 

.•установить ноль з PORTB1

 

clz

   

;сброс флага нуля

 

dec

top

 

;начало цикла передачи командь

 

brbc

1, BAT

 

.•переход, если Z=0

       

;конец цикла передачи

 

nop

     
 

ret

     

;подпрограмма

кодирования

нажатой

клавиши

VERH:

clr

tip

   
 

clr

R18

   
 

ldi

tip,

   
 

add

R18, tip

 

;кодирование нажатой

 

ret

   

;клавиши для

250


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



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