微机COM串口与单片机UART串口进行双向通信

微机COM串口与单片机UART串口进行双向通信

项目实现功能:
利用微型计算机的超级终端功能,经过异步串行通信端口COM和PIC16F877单片机内的通用同步/异步收发器UART端口模块,进行双向异步串行通信实验,效果非常理想。

软件设计思路:
令UART模块工作于异步收/发两种状态之间切换。将通信波特率设定在19200,当单片机的时钟频率为4MHz,并且UART工作于高速波特率时,经过查表得到波特率发生器寄存器的初始值为12。

汇编程序清单:
;常数定义:
VAL_US EQU .249 ;短延时定时常数
VAL_MS EQU .200 ;长延时定时常数
;变量声明:
COUNT EQU 0X70 ;定义一个短延时计数器
COUNT_MS EQU 0X71 ;定义一个长延时计数器
;*****************************************************
;复位矢量和中断矢量:
ORG 0X0000 ;复位矢量
GOTO STARTUP ;跳转到初始化程序
ORG 0X0004 ;中断矢量
;*****************************************************
;中断服务程序:
BTFSS PIR1,RCIF ;检查是否为USART发出的中段请求
GOTO ERR_EXIT ;否!推出
MOVF RCREG,0 ;是!从USART接受数据
MOVWF TXREG ;并且传送回去
ERR_EXIT RETFIE ;中段返回

;*****************************************************
;主程序初始化部分
STARTUP BSF STATUS,RP0 ;选择RAM的体1为当前体
CLRF TRISD ;设置PORTD全部输出以便驱动LED显示
BSF TRISC,6 ;断开RC模块与USART TX引脚的联系
BSF TRISC,7 ;断开RC模块与USART TX引脚的联系
MOVLW .12 ;装载波特率发生器,为19.2kb/s
MOVWF SPBRG ;在单片机时钟为4MHz时
MOVLW b’00100100’ ;使能USART发送,设置波特率发生器为高速方式
MOVWF TXSTA ;
BSF PIE1,RCIE ;开放USART的接受中段
BCF STATUD,RP0 ;恢复RAM体0为当前体
MOVLW b’10010000’ ;使能USART连续接受
MOVWF RCSTA ;同时使能USART端口
BSF INTCON,GIE ;使能全局中断使能位
BSF INTCON,PEIE ;使能外设中断使能位
;主程序主体部分
MAIN CLRWDT ;看门狗(如果启用的话)清0
INCF PORTD,F ;PORTD=PORTD+1,可以驱动LED作显示(可选)
CALL DELAY_MS ;调用2次延时子程序
CALL DELAY_MS ;
GOTO MAIN ;返回
;延时子程序(略)
;******************************************************
END ;源文件结束