十年专注单片机方案开发的方案公司金沙js5线路,分享串口调试程序例子。金沙js5线路现提供服务产品涉及主控芯片:8位单片机、16位单片机、32位单片机及各类运算放大器等。
1
;********************UAT******************** ;本程序实现USART异步方式发送1个字节数据和奇校验位,在4M的主频下波特率为9600。 ;入口参数:待发送数据在SOU中。 ;出口参数:无。 ;占用资源:W,STATUS,INT,TMR1,023H,024H,025H,028H,029H,二重堆栈。
IFNDEF UAT1 #DEFINE UAT1 INCLUDE "OECHK.ASM" UAT BSF STATUS,RP0 MOVLW 19H MOVWF SPBRG BSF TXSTA,BRGH ;高速模式,波特率为9600 BCF TXSTA,SYNC ;异步模式 BSF TXSTA,TX9 ;发送9位数据 BSF TXSTA,TXEN ;工作在发送方式 BCF STATUS,RP0 BSF RCSTA,SPEN ;使能串行口 MOVLW 0FFH CALL OECHK ;奇校验 BSF STATUS,RP0 BTFSC STATUS,C BSF TXSTA,TX9D BTFSS STATUS,C BCF TXSTA,TX9D ;数据第9位 BCF STATUS,RP0 MOVF SOU,W MOVWF TXREG ;开始发送 RETURN ENDIF
2
;
********************UAR******************** ;本程序实现USART异步方式连续接收数据并进行奇校验,在4M的主频下波特率为9600。 ;入口参数:无。 ;出口参数:接收到的数据在SOU中,如果出错,则TEMP3=0FFH。 ;占用资源:W,STATUS,INT,023H,024H,025H,028H,029H,07FH,07EH,17FH, 二重堆栈。 ;说明: 1.使用该程序需在中断入口程序中填入如下两条指令 ; BTFSC PIR1,RCIF ; GOTO RCINT
IFNDEF UAR1 #DEFINE UAR1
INCLUDE "OECHK.ASM"
SAVEW EQU 07FH ;现场保护中保存W的地址 SAVES EQU 07EH UAR BSF STATUS,RP0 MOVLW 19H MOVWF SPBRG BSF TXSTA,BRGH ;高速模式,波特率为9600 BCF TXSTA,SYNC ;异步模式 BSF PIE1,RCIE ;开串行口中断 BCF STATUS,RP0 BCF RCSTA,FERR BSF RCSTA,RX9 ;接收9位数据 BSF RCSTA,CREN ;开始连续接收 BSF RCSTA,SPEN ;使能串行口 BSF INTCON,PEIE BCF PIR1,RCIF ;清中断标志 BSF INTCON,GIE RETURN ;*****************接收中断服务程序***************
RCINT MOVWF SAVEW SWAPF STATUS,W CLRF STATUS MOVWF SAVES ;保护现场 BTFSC RCSTA,FERR GOTO ANERROR ;发生桢格式错误 CLRF TEMP3 BTFSC RCSTA,RX9D DECF TEMP3,F ;记录奇偶校验位 MOVF RCREG,W MOVWF SOU MOVLW 0FFH CALL OECHK ;奇校验 RLF TEMP3,W SUBWF TEMP3,F BTFSS STATUS,Z GOTO ANERROR BACK SWAPF SAVES,W MOVWF STATUS SWAPF SAVEW,F SWAPF SAVEW,W ;恢复现场 RETFIE ANERROR CLRF TEMP3 DECF TEMP3,F GOTO BACK ENDIF
3
;********************USMT******************** ;本程序实现USART同步主控方式发送1个字节数据和奇校验位。 ;入口参数:待发送数据在SOU中。 ;出口参数:无。 ;占用资源:W,STATUS,INT,TMR1,023H,024H,025H,028H,029H,二重堆栈。 ;说明: 1.使用该程序需在中断入口程序中填入如下两条指令 ; BTFSC INTCON,INTF
IFNDEF USMT1 #DEFINE USMT1 INCLUDE "OECHK.ASM" USMT BSF STATUS,RP0 MOVLW 19H MOVWF SPBRG BSF TXSTA,BRGH ;高速模式,波特率为9600 BSF TXSTA,SYNC ;同步模式 BSF TXSTA,TX9 ;发送9位数据 BSF TXSTA,TXEN ;工作在发送方式 BSF TXSTA,CSRC ;主控方式 BCF STATUS,RP0 BSF RCSTA,SPEN ;使能串行口 MOVLW 0FFH CALL OECHK ;奇校验 BSF STATUS,RP0 BTFSC STATUS,C BSF TXSTA,TX9D BTFSS STATUS,C BCF TXSTA,TX9D ;数据第9位 BCF STATUS,RP0 MOVF SOU,W MOVWF TXREG ;开始发送 RETURN ENDIF
4
;********************USMR******************** ;本程序实现USART同步主控方式连续接收数据并进行奇校验。 ;入口参数:无。 ;出口参数:接收到的数据在SOU中,如果出错,则TEMP3=0FFH。 ;占用资源:W,STATUS,INT,023H,024H,025H,028H,029H,07FH,07EH,17FH, 二重堆栈。 ;说明: 1.使用该程序需在中断入口程序中填入如下两条指令 ; BTFSC PIR1,RCIF ; GOTO RCINT2
IFNDEF USMR1 #DEFINE USMR1 INCLUDE "OECHK.ASM"
SAVEW EQU 07FH ;现场保护中保存W的地址 SAVES EQU 07EH USMR BSF
STATUS,RP0 MOVLW 19H MOVWF SPBRG BSF TXSTA,BRGH ;高速模式,波特率为9600 BSF TXSTA,SYNC ;同步模式 BSF TXSTA,CSRC ;主控方式 BSF PIE1,RCIE ;开串行口中断 BCF STATUS,RP0 BSF RCSTA,RX9 ;接收9位数据 BSF RCSTA,CREN ;开始连续接收 BSF RCSTA,SPEN ;使能串行口 BSF INTCON,PEIE BCF PIR1,RCIF ;清中断标志 BSF INTCON,GIE RETURN ;*****************接收中断服务程序*************** RCINT2 MOVWF SAVEW SWAPF STATUS,W CLRF STATUS MOVWF SAVES ;保护现场 CLRF TEMP3 BTFSC RCSTA,RX9D DECF TEMP3,F ;记录奇偶校验位 MOVF RCREG,W MOVWF SOU MOVLW 0FFH CALL OECHK ;奇校验 RLF TEMP3,W SUBWF TEMP3,F BTFSS STATUS,Z GOTO ANERROR2 BACK2 BCF RCSTA,SPEN ;结束串行通信 SWAPF SAVES,W MOVWF STATUS SWAPF SAVEW,F SWAPF SAVEW,W ;恢复现场 RETFIE ANERROR2 CLRF TEMP3 DECF TEMP3,F GOTO BACK2 ENDIF
(文源网络,侵删)