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