📄 multibyte_send.txt
字号:
STATUS EQU 03H ; 定义状态寄存器地址
PORTA EQU 05H
PORTB EQU 06H ;端口B的数据寄存器地址
TRISA EQU 5H
TRISB EQU 6H ;定义端口B的方向控制寄存器地址
CMCON EQU 1FH
SPBRG EQU 19H
TXSTA EQU 18H
RCSTA EQU 18H
TXREG EQU 19H
RCREG EQU 1AH
PIR1 EQU 0CH
dataL EQU 20H
DATA1 EQU 21H
PIE1 EQU 0CH
INTCON EQU 0BH
FSR EQU 04H
INDF EQU 00H
;----------------------
RP0 EQU 5 ;定义状态寄存器中的RAM页选位RP0
RP1 EQU 6
RCIF EQU 5
TRMT EQU 1
KEY1 EQU 6
KEY2 EQU 7
IRP EQU 7
RCIE EQU 5
PEIE EQU 6
GIE EQU 7
TXIE EQU 4
TXIF EQU 4
ORG 0x000 ; Program starts at 0x000
; ----------------
; INITIALIZE PORTS
; ----------------
;
GOTO MAIN ;跳转到初始化程序
ORG 0X0004 ;中断矢量
BCF STATUS,RP0
BTFSS PIR1,RCIF
GOTO TX_INT
RC_INT
NOP
MOVF RCREG,W
MOVWF INDF
INCF FSR
NOP
TX_INT
BSF STATUS,RP0
BTFSS PIE1,TXIE
GOTO INT_END
BCF STATUS,RP0
BTFSS PIR1,TXIF
GOTO INT_END
MOVLW 05H
MOVWF TXREG
bsf STATUS,RP0 ; RAM PAGE 1
WAIT_SEND btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WAIT_SEND
BSF STATUS,RP0 ; close send int
BCF PIE1,TXIE
bcf STATUS,RP0 ; RAM PAGE 0
INT_END
RETFIE
MAIN movlw 7
movwf CMCON ; CMCON=7 set comperators off
INITA
BCF STATUS,RP0
BCF STATUS,RP1
bsf STATUS,RP0 ; RAM PAGE 1
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
; BSF STATUS,RP0
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh
BSF PIE1,RCIE ; open receive int
BCF PIE1,TXIE
BCF STATUS,RP0
MOVLW B'10010000' ;打开串口,连续接收
movwf RCSTA
BCF PIR1,RCIF
CLRF INTCON
BSF INTCON,GIE ;使能全局中断使能位
BSF INTCON,PEIE ;使能外设中断使能位
BCF STATUS,RP0
BCF STATUS,IRP
MOVLW 0B0H
MOVWF FSR
MOVLW 99H
CALL SEND
; CALL DLY10MS
MOVLW 88H
CALL SEND
; CALL DLY10MS
MOVLW 77H
CALL SEND
; CALL DLY10MS
MOVLW 66H
CALL SEND
; CALL DLY10MS
MOVLW 55H
CALL SEND
; CALL DLY10MS
LOOP
NOP
GOTO LOOP
SEND
MOVWF TXREG
bsf STATUS,RP0 ; RAM PAGE 1
TEST btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto TEST
BCF STATUS,RP0 ; close send int
RETURN
DLY10MS MOVLW 05H ;不是10MS
MOVWF 63H ;(254*3+2+3+2)*4+2=3078
DLY10MS1 MOVLW 0FFH
MOVWF 64H
DLY10MS2 DECFSZ 64H
GOTO DLY10MS2
DECFSZ 63H
GOTO DLY10MS1
RETLW 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -