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

Асинхронный прием даннх RxD

            LIST        P=16F628A
            INCLUDE     P16F628A.INC
            __CONFIG    _INTOSC_OSC_NOCLKOUT&_WDT_OFF&_PWRTE_ON&_MCLRE_OFF&_LVP_OFF
            ERRORLEVEL  -302
            CBLOCK      20H
            i,j,CHAR,CMD
            ENDC
BANK0       MACRO
            BCF         STATUS,RP0
            ENDM
BANK1       MACRO
            BSF         STATUS,RP0
            ENDM
            ORG         0
            GOTO        START
START       BANK1
            MOVLW       B'00000110'
            MOVWF       TRISB
            MOVLW       .25
            MOVWF       SPBRG
            BSF         TXSTA,TXEN
            BSF         TXSTA,BRGH
            BANK0
            BSF         RCSTA,SPEN
            BSF         RCSTA,CREN             ;Включаем прием данных
            
            MOVLW       80H
            CALL        DELAY
            MOVLW       'T'
            CALL        PUTC
            MOVLW       'E'
            CALL        PUTC
            MOVLW       'S'
            CALL        PUTC
            MOVLW       'T'
            CALL        PUTC
            MOVLW       0C0H
            CALL        WRCMD
            MOVLW       0DH
            CALL        WRCMD
            CALL        GETC
            MOVLW       1
            CALL        WRCMD
            
MAIN        CALL        GETC
            MOVWF       CHAR
            CALL        PUTC
            GOTO        MAIN
;Подпрограмма установки комманд для жки           
WRCMD       MOVWF       CMD
            MOVLW       0FEH
            CALL        PUTC
            MOVFW       CMD
            GOTO        PUTC
            
;Подпрограмма приема данных,возвращает в WREG код нажатой клавиши на клаве            
GETC        BANK0
LOOPGETC    BTFSS       PIR1,RCIF      ;Проверяем есть ли данные в сдвиговом регистре
            GOTO        LOOPGETC       ;если данных нет программа зависает сдесь на всегда
            MOVFW       RCREG
            RETURN
            
PUTC        BANK0
            MOVWF       TXREG
            BANK1
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