MAIN MOVLW 0X30 ;将RAM单元初始化
MOVWF FSR
BCF STATUS,RP0
MOVLW 0X22
MOVWF COUNT
INTRAM MOVF COUNT,0
MOVWF INDF
INCF COUNT,1
INCF FSR,1
BTFSS FSR,7
GOTO INTRAM
BANKSEL TXSTA ;波特率设置为9 600 bps
MOVLW 0X19
MOVWF SPBRG ;异步高速方式
MOVLW 0X04
MOVWF TXSTA
BCF STATUS,RP0
MOVLW 0X80 ;串行口使能
MOVWF RCSTA
MOVLW 0X30
MOVWF FSR
BSF RCSTA,CREN ;接收允许
BSF STATUS,RP0
BSF TXSTA,TXEN ;发送允许
BCF STATUS,RP0
WAIT BTFSS PIR1,RCIF ;接收PC机命令
GOTO WAIT
MOVF RCREG,0
MOVWF TEMP
MOVWF INDF
INCF FSR
DECFSZ TEMP ;接收到的数据为1,则接收
GOTO TXW ;否则发送数据
MOVLW 0X06
MOVWF TEMP
WAIT1 BTFSS PIR1,RCIF ;接收一个数据
GOTO WAIT1
MOVF RCREG,0
MOVWF COUNT
MOVWF TXREG
LOOPTX BTFSS PIR1,TXIF ;将接收到的数据送回PC机
GOTO LOOPTX
MOVF COUNT,0
MOVWF INDF
INCF FSR
DECFSZ TEMP
GOTO WAIT1
GOTO OVER ;处理完毕
TXW MOVLW 0X09 ;向PC机发送9个数据
MOVWF TEMP
MOVLW 0X30
MOVWF FSR
TXW0 MOVF INDF,0
MOVWF TXREG
INCF FSR
TXW1 BTFSS PIR1,TXIF
GOTO TXW1
DECFSZ TEMP
GOTO TXW0
OVER BCF RCSTA,CREN ;通信任务完成,关接受和发送允许
BSF STATUS,RP0
BCF TXSTA,TXEN
BCF STATUS,RP0
CALL LED ;调用显示子程序,将发送(或接收)的数据显示出来
END ;程序完