Обучение : Программирование на Ассемблере для PIC


Приём данных от ПК на стороне МК

Настало время рассмотреть программу по приёму на стороне МК символов от компьютера. В нашем примере было принято решение не отягощать код программы сегментами по обработке принятого сигнала. Принятый 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 минуту.


<<< назад далее >>>

Просмотров: 19034

 








 
 
 

В русском Интернете бестолку защищать свои права. Хотите использовать материалы - используйте,
но с письменного согласия авторов. В противном случае будут высланы соответствующие письма
в поисковые системы об ограничении индексации ваших сайтов. Не доводите до греха.