?? 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 + -