📄 comm_s.c
字号:
////////////////////////////////////////////////////////////////////
//文件名:comm.c
//功能描述:从单片机上串口通信模块
////////////////////////////////////////////////////////////////////
#include "reg52.h"
#include "comm_s.h"
//////////////////////////////////////////////////////////////////
//变量定义
data uchar temp_msg; //暂存消息,此处直存一条消息,若存多条可以设置一个消息队列
////////////////////////////////////////////////////////////////////
//串口中断处理函数
//使用高优先级
//但程序其他地方有时是关中断的
void comm(void) interrupt 4
{
if(RI)
{
RI=0;
temp_msg=SBUF;
}
if(TI)
{
TI=0;
}
}
////////////////////////////////////////////////////////////////
//初始化串口通信
//方式2,11位异步收发方式,波特率:375Kbps
void initcomm(void)
{
SCON=0x90; //工作于方式2,REN=1
PCON|=0x80; //SMOD=1
ES=1; //开串口中断
PS=1; //置为高优先级中断
EA=1;
}
/////////////////////////////////////////////////////////////////
//发送消息函数
void sendmsg(uchar msg,char canshu)
{
uchar i;
EA=0;
if(TI)TI=0;
if(MSG_FOUND==msg) //若发送光源方位值,则将TB8置成1
{ //8位数据为光源方位
TB8=1;
SBUF=canshu;
}
else //若发送的是其他消息,则TB8置成0
{ //8位数据为消息值
TB8=0;
SBUF=msg;
}
for(i=0;i<20;i++); //延时一段时间,等待串口发完一个字节后返回
EA=1;
}
/////////////////////////////////////////////////////////////////
//取得消息函数
uchar getmsg(void)
{
return temp_msg;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -