串口这货,重要性就不用说了。哪里有单片机,哪里就有串口了。
直接上代码:
#include
#define uint unsigned int
#define uchar unsigned char
uint flag; //串口中止标志变量
uchar accept_data; //串口接收到的数据
uint i; //用于把”I get “六个字符型数据发送出去
uchar code table[]=”I get “; //字符型编码数组
void init(); //串口中止初始化函数声明
void send(); //发送函数声明
void main()
{
init();
while(1)
{
if(flag==1)
{
send();
}
}
}
//串口初始化函数主体
void init()
{
//t1定时器初始化(由于t0定时器溢出之后没有动作需求,所以这儿不需求翻开t0中止,不需求写t0中止服务程序)
TMOD=0x20;
TH0=0xfd;
TL0=0xfd;
TR1=1;
//串口中止初始化
REN=1; //答应承受数据
SM0=0;
SM1=1; //挑选方法一
EA=1; //翻开总中止
ES=1; //翻开串口中止
}
//串口数据发送函数主体
void send()
{
if(flag==1) //假如承受了数据,由于承受数据完结之后,单片时机主动请求中止,又串口中止翻开的,所以中止有用
{
ES=0; //封闭串口中止,此刻仅仅发送数据,不需求承受数据。有必要封闭
for(i=6;i>0;i–)
{
SBUF=table[i]; //”I_get_”总共六个字符,需求一个一个发送出去
while(!TI) //发送一个字符完毕之后,TI=1(主动)
{
}
TI=0; //软件清零
}
SBUF=accept_data; //发送承受到的数据
while(!TI)
{
}
TI=0;
ES=1; //翻开串口中止,下一次承受数据预备
flag=0;
}
}
//串口中止服务程序主体
void serial_port() interrupt 4
{
flag=1;
RI=0;
accept_data=SBUF;
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/259185.html