📄 uart.asm
字号:
;*************************************************
;* UART.asm **
;*************************************************
;* 本程序为串口通讯处理模块程序
;* 占用I/O RC6,RC7
;* 使用RAM 1个字节
;* 程序包括:
;* - InitUart 初始化串行口子程序
;* - TXData 发送数据子程序
;* - RCintsever 接收数据中断服务程序
;* 入口参数 TX_End,FSR
;* 出口参数 FSR
;*************************************************
#include p16f876a.inc ;定义所用单片机的头文件
;*************************************************
Uart_group udata ;数据区
;*************************************************
TX_END res 1
global TX_END
;*************************************************
PROG_RS232 CODE ;程序区
;*************************************************
InitUart ;初始化串行口
global InitUart
movlw 0x90 ;即10010000,使能串口,八位连续接受
movwf RCSTA
bsf STATUS,RP0
bsf TRISC,7
bcf TRISC,6
movlw 0x24 ;即00100100,被控8位发送,异步模式,使能发送,高速
movwf TXSTA
movlw 0X19 ;9600=4000000/(16*(X+1))->X=25 0.16% 0x19
movwf SPBRG ;high speed mode
bsf PIE1,RCIE
bcf STATUS,RP0
return
;*************************************************
TXDATA ;发送数据子程序
global TXDATA
TXLoop
btfss PIR1,TXIF
goto $-1
movf INDF,W
movwf TXREG
incf FSR,F
DECFSZ TX_END,F
goto TXLoop
return
;********************************************
RCintsever ;接收数据中断服务程序
global RCintsever
btfsc RCSTA,OERR ;溢出?
goto RCerror
movf RCREG,w
movwf INDF
incf FSR,f
return
RCerror
bcf RCSTA,CREN
bsf RCSTA,CREN
return
;*******************************************
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -