Главная страница  Комбинированное использование портов 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [ 29 ] 30 31 32 33 34 35 36 37 38 39 40

rcv byte

bit delay :loop

Принятый байт.

Размещение программы в ПЗУ с нолевого

; Определение типа PlC-микроконтроллера.

; Внимание! Используйте только версии

; с кварцевым резонатором

; для лучшей временной стабильности работы devicepicl6c54,xt osc,wdt off,protect off reset begin

; Определение входов/выходов.

begin

Ira, #0000100b

; RA2 - вход для асинхронной

; последовательности.

Irb, #0

; Порт В - выходной порт для индикации.

:start bit

serial in

; Обнаружение стартового бита (заменять

; на sb serial in, если прием без инверсии),

start bit

; Ожидание стартового бита.

call

start delay

; Ожидание середины бита.

Serial in, :start bit

; Если стартовый бит - продолжаем или ожидаен

; Заменять на jnb, если прием без инверсии.

bit cntr, #8

; Инициализация счетчика битов.

rcv byte

; Сброс предыдущего принятого байта.

: receive

call

bit delay

; Ожидание середины битовой посылки.

movb

c,Serial in

; Бит переноса равен принятому биту

; Заменять на movb c,/Serial in,

если прием без инверсии.

rcv byte

Сдвиг вправо, принимаемого байта.

djnz

bit cntr, :receive

Если приняли не 8 битов.

ожидаем следующий бит.

call

bit delay

Ожидаем стол-бит.

mov data out,rcv byte

goto begin:start bit

Индикация принятого байта. Прием следующего байта. Ожидание времени бита.

mov пор djnz ret

delay cntr,#bit K

delay cntr, :loop

; Ожидание середины бита.

tartjelay :loop

mov nop djnz ret

delay cntr,#half bit delay cntr, :loop

Если стартовый бит обнаружен, осутцествляем прием данных, повторяя восемь раз след) ющие операции: Ф ожидание времени регистрации бита;

считывание бита и запись его в бит переноса, а затем в байт приема с помощью команды сдвига вправо; Ф декрементирование счетчика битов;

f повторение процесса до тех пор, пока этот счетчик не станет равным нулю.

Затем программа посылает полученный байт на светодиоды.

Правильная работа этой программы зависит только от константы bit K. Эта константа определяется частотой тактового генератора используемого PIC-микроконтроллера и скоростью передачи принимаемой последовательности. В табл. 4.1 приводятся используемые значения для четырех различных частот тактового генератора и для четырех наиболее распространенньгх скоростей передачи асинхронных последовательностей. Как видно из таблицы, при использовании генератора на 8 МГц с этой подпрограммой можно работать на скорости до 19200 бод.

Таблица 4.1.............

Значение конаанты bit K в зависимости от скорости передачи асинхронной последовательноаи и чааоты тактового генератора

Частота Таймера (МГЦ)

Скорость передачи данных

300 (3,33 мкс

600 (1,66 мкс)

1200 (833 мкс)

2400 (417 мкф

4800 (208 мкс)

9600 (104 мкс)

19200 (52 мк



Передача асинхронной последовательности данных также не ь зывает затруднений. Схема рис. 4.11 и листинг 4.18 демонстрирл интересный пример, который помимо подпрограмм передачи д!} ных содержит главную программу, передающую слово Parallax.

Упрощенный бариант, если позболяет Внешнее оборудование

lOpF

lOpF

lOjuFi

Baxog -3. интерфеоса RS 232

WAX 232

C1 + + 10 C1-C2 + C2--10 X2 OUT R2 in

Vcc gnd XI OUT Rl in Rl OUT XI in X2 in R2 OUT

lOpF



Рис. 4.11

Схема программной реализации передачи асинхронной последовательноаи

Программа включает две основные подпрограммы: Again и xmt byte. Первая устанавливает счетчик битов, считывает буквы, подлежащие передаче из таблицы string, и помещает их в регистре Подпрс- ;амма xnit byte выполняет собственно передачу. Она начинается тем, что выдает логический ноль на выбранный для передачи выход, чтобы сгенерировать стартовый бит, а затем в цикле ocvW ствляет следующие операции:

Ф сдвиг вправо байта, подлежащего передаче (при котором теку-хдйй передаваемый бит пересылается в бит переноса);

пересылку бита переноса в соответств}тощий разряд параллельного порта;

отсчитывает интервал передачи бита;

уменьшает значение счетчика битов;

повторяет процесс, пока значение счетчика не станет равно нулю.

Как и в случае приема, передача сигналов основывается только на равильных значениях константы bit K. В обеих программах (приема и передачи сигналов) значения константы bit K идентичны, поэтому и в этом примере вы можете использовать табл. 4.1.

Листинг 4.18

Передача асинхронной последовательности. Соответствует инструкции по применению фирмы Parallax. Эта программа выдает данные в виде асинхронной последовательности через RA2. Скорость передачи определена константой bit K. Формат передачи - 8 битов данных и 1 стоп-бит без бита четности.

bit K

serial out

ra.2

Значение выбирается в зависимости от скорости.

; Определение переменных величин, org 8

delay cntr ds 1 ; Счетчик времени.

bit cntr ds 1 ; Число переданных битов.

sg cntr ds 1 ; Смещение в строке (таблице).

t byte ds 1 ; Байт, который надо передать.

I Программа в ПЗУ с адреса = 0.

org О

< Определение PIC-микроконтроллера.

Внимание! Используйте только версии о кварцевым генератором для лучшей временной стабильности.

device picl6c54,xt osc,wdt off,protect off reset begin

Sin irov Ira, ftOOOOOOOOb; Bee разряды порта A - выходы.

mov msg cntr, #0 ; Последовательность 9 букв (0-8).



:again

:xmlt

bit cntr. #8

; Счетчик битов равен 8.

w.msg cntr

; Указатель в последовательности.

call

string

; Считывание очередного символа.

xmt byte.w

; Символ, который надо передать.

clrb

serial out

; Заменять на SKtb serial out,

; если передача без инверсии.

call

bit delay

: Стартовый бит.

xmt byte

; Ротация бита, который надо передать в С.

movb

serial out,c

; Заменять movb serial out,/c

; если прямое соединение.

call

bit delay

djnz

bit cntr,:xmit

; Передача окончена?

setb

serial out

; Заменить clrb serial out.

; если передача без инверсии.

call

bit delay

; Стоп-бит.

msg cntr

; Инкрементирование указателя строки.

cjbe

msg cntr, #8, ragain

; Переданы все символы?

:endless

; Бесконечный цикл, выход при сбросе

:endless

; Чтобы изменить скорость передачи, измените значение bit K. bit delay :1оор

mov nop

delay cntr, #bit K

string ]Гф

djnz delay cntr, :loop ret pc+w

retw

; Последовательность букв Parallax P , a , r , a, Г, 1, a , x , 10

ГЛАВА 5

ПЕНИЯ

&.ЭТОЙ главе:

=Часы с будильником

1?еализация шины PC

Четырехканальный вольтметр [со светодиодной индикацирй

Микрокомпьютер, программируемый на Basic



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [ 29 ] 30 31 32 33 34 35 36 37 38 39 40

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.