📄 ussr.asm
字号:
;********************USSR********************
;本程序实现USART同步从动方式连续接收数据并进行奇校验。
;入口参数:无。
;出口参数:接收到的数据在SOU中,如果出错,则TEMP3=0FFH。
;占用资源:W,STATUS,INT,023H,024H,025H,028H,029H,07FH,07EH,17FH, 二重堆栈。
;说明: 1.使用该程序需在中断入口程序中填入如下两条指令
; BTFSC PIR1,RCIF
; GOTO RCINT1
IFNDEF USSR1
#DEFINE USSR1
INCLUDE "OECHK.ASM"
SAVEW EQU 07FH ;现场保护中保存W的地址
SAVES EQU 07EH
USSR BSF STATUS,RP0
BSF TXSTA,SYNC ;异步模式
BSF PIE1,RCIE ;开串行口中断
BCF STATUS,RP0
BCF RCSTA,CREN
BCF RCSTA,SREN
BSF RCSTA,RX9 ;接收9位数据
BSF RCSTA,SPEN ;使能串行口
BSF RCSTA,CREN ;开始连续接收
BSF INTCON,PEIE
BCF PIR1,RCIF ;清中断标志
BSF INTCON,GIE
RETURN
;*****************接收中断服务程序***************
RCINT1 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 ANERROR1
BACK1 SWAPF SAVES,W
MOVWF STATUS
SWAPF SAVEW,F
SWAPF SAVEW,W ;恢复现场
RETFIE
ANERROR1 CLRF TEMP3
DECF TEMP3,F
GOTO BACK1
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -