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