Понедельник, Май 25, 2020

Асинхронная передача данных TxD

            LIST        P=16F628A
            INCLUDE     P16F628A.INC
            __CONFIG    _INTOSC_OSC_NOCLKOUT&_WDT_OFF&_PWRTE_ON&_MCLRE_OFF&_LVP_OFF
            ERRORLEVEL  -302
            CBLOCK      20H
            i,j
            ENDC
BANK0       MACRO
            BCF         STATUS,RP0
            ENDM
BANK1       MACRO
            BSF         STATUS,RP0
            ENDM
            ORG         0
            GOTO        START
START       BANK1
            MOVLW       B'00000110'
            MOVWF       TRISB       ;По даташиту RB1 и RB2 должны быть установленны как вход
            MOVLW       .25         ;Загружаем число в генератор-у нас 1МГц будет скорость 2400 бода
            MOVWF       SPBRG       ;В даташите есть формула и таблицы по расчетам какое чило загружать для какой скорости
            BSF         TXSTA,TXEN  ;Включаем передатчик
            BSF         TXSTA,BRGH  ;Высокая скорость
            BANK0
            BSF         RCSTA,SPEN  ;Включаем последовательную передачу
            
            MOVLW       80H
            CALL        DELAY       ;Задержка
            MOVLW       'T'         ;Загружаем символ
            CALL        PUTC        ;Передаем его
            MOVLW       'E'
            CALL        PUTC
            MOVLW       'S'
            CALL        PUTC
            MOVLW       'T'
            CALL        PUTC
            
MAIN
            GOTO        MAIN
            
;Подпрограмма передачи байта            
PUTC        BANK0
            MOVWF       TXREG       ;Загружаем байт для передачи
            BANK1
            MOVFW       TXSTA
LOOPPUT     BTFSS       TXSTA,TRMT  ;Проверяем передан ли байт
            GOTO        LOOPPUT
            BANK0
            RETURN
            
DELAY       MOVWF       i
DELi        MOVLW       0FFH
            MOVWF       j
DELj        DECFSZ      j,F
            GOTO        DELj
            DECFSZ      i,F
            GOTO        DELi
            RETURN
            END

Back to Top