|
Приём данных от ПК на стороне МКНастало время рассмотреть программу по приёму на стороне МК символов от компьютера. В нашем примере было принято решение не отягощать код программы сегментами по обработке принятого сигнала. Принятый 8-ми битный сигнал напрямую прописывается в порт B и, тем самым, на индикаторе (и звуковом излучателе) мы можем наблюдать комбинацию принятых битовых последовательностей. Последовательность (порядок) нулей и единиц в принятом 8-ми битном числе выясняем с помощью схемы макетной платы. Затем полученное число сверяем с таблицей ANSI.
LIST P=PIC16F84A
__CONFIG H3FF1
W EQU 0
F EQU 1
STATUS EQU H0003
PORTA EQU H0005
PORTB EQU H0006
TRISA EQU H0005
TRISB EQU H0006
C EQU 0
Z EQU 2
Reg_1 EQU H000C ; для счетчиков пауз
Reg_2 EQU H000D ; для счетчика битов в байте
Reg_3 EQU H000E ; для получаемого символа
org 0 ; начало программы
; подготовительные моменты
Start bsf STATUS,5 ; переход в Банк 1
movlw b00011101 ; RA0 на выход, остальные на вход
movwf TRISA
clrf TRISB
bcf STATUS,5 ; переход назад в Банк 0
clrf PORTB ; очистка порта
; прием и отрисовка принятого бита
m4 call Rx ; уход в приём
movf Reg_3,W
movwf PORTB ; отрисовка полученного бита
goto m4
; сегмент приема данных от ПК на стороне МК (9600, 8-N-1, 104 мкс)
Rx movlw .8 ; ровно 8 бит
movwf Reg_2
m1 btfsc PORTA,0 ; отслеживаем стартовый бит
goto m1
;delay = 52 machine cycles ; задержка на 104/2 мкс
Pause1 movlw .17 ; для выхода на середину бита
movwf Reg_1
wr1 decfsz Reg_1, F
goto wr1
m3 call Pause2
btfsc PORTA,0
goto bit1
goto bit0
bit1 bsf STATUS,C
goto m2
bit0 bcf STATUS,C
goto m2
m2 rrf Reg_3,F ; сдвиг вправо
decfsz Reg_2,F
goto m3
call Pause3
return
;delay = 89 machine cycles ; задержка с учётом
Pause2 movlw .29 ; ранее выполненных команд
movwf Reg_1
wr2 decfsz Reg_1, F
goto wr2
nop
return
;delay = 104 machine cycles ; задержка под 1 стоповый бит
Pause3 movlw .34
movwf Reg_1
wr3 decfsz Reg_1, F
goto wr3
nop
return
end ; конец программы
Далее текст прошивки:
:020000040000FA
:1000000083161D3085008601831286010A200E08A2
:100010008600062808308D0005180C2811308C0049
:100020008C0B10281F2005181628182803141A28CE
:1000300003101A288E0C8D0B1228252008001D3065
:100040008C008C0B21280000080022308C008C0BC7
:0600500027280000080053
:02400E00F13F80
:00000001FF
По тексту программы сделаны комментарии. Зная, как организуется последовательный поток данных, несложно понять суть работы программы.
Для самостоятельного изучения рекомендуем вам сделать следующие модификации:
– отрисовывать на индикаторе определенные символы по факту посылки со стороны компьютера определенных букв или цифр;
– при посылке с компьютера чисел 1...8 на индикаторе макета переключать соответствующие сегменты (см. пример 5);
– создайте программу "кодового замка", согласно которой при посылке с компьютера последовательности символов (например, 721) срабатывал звуковой сигнал на макете (2 сек) и "замок" снова переходил в режим ожидания; если пришли три неправильные посылки, "замок" блокируется на 1 минуту.
|
<<< назад далее >>>
Просмотров: 24866
|
О сайте.
Электронные устройства и модели,
обучение и консультация,
документация и средства разработки.
Принимаем на реализацию проекты,
услуги, идеи. Возмездная помощь.
Здесь может быть
ваша реклама
Понравилась конструкция,
но не можете собрать?
Обращайтесь, мы удовлетворим
ваши запросы и пожелания!
Напишите нам письмо.
Типа юмор:
Cувенир – это товар, который в своем городе вы никогда бы не купили.
|