在严重的工作中,现在对单片机的串口通讯编程有了一个新的知道,下面就针对下面不同的几个工程程序文件的差异做一个比较具体的总结。
本次小结的首要意图是愈加清晰单片机的串口中止是怎么产生的。即:是怎么触发串口中止的发送功用的。在阐明中我运用特别的字体色彩来着重要点部分和注意事项。
程序一:
本程序是运用软件设置TI来完成串口中止的触发,如果在初始化函数中不添加“TI=1;”这条句子,那么是不会触发中止的
#include //包括51单片机的头文件
#define uint unsigned int
#define uchar unsigned char
void InitUart(void)
{
//运用定时器1作为波特率产生器
TMOD|=0x20;//T1工作为方法2
SCON=0x50;//方法1:10位异步同通讯,串口答应接纳
PCON|=0x80;//波特率倍增,SMOD=1
TH1=0xfa;
TL1=0xfa;
TR1=1;
TI=1;//运用软件触发初次串口中止的产生
ES=1;//串口中止答应
EA=1;//总中止答应
}
main()
{
InitUart();//串口设置初始化
while(1);//死循环等候哦!
}
void uart(void) interrupt 4
{
if(RI)
{
RI=0;//接纳句子放在本句子前面,本句子是软件复位接纳中止标志
}
if(TI)
{
TI=0;//复位TI
SBUF = B;
}
}
程序二:
本程序是运用在软件的初始化时在串口缓冲区SBUF中先放一个数据来完成串口中止的触发,如果在初始化函数中不添加“SBUF = 0x00;”这条句子,那么是不会触发中止的
#include //包括51单片机的头文件
#define uint unsigned int
#define uchar unsigned char
void InitUart(void)
{
//运用定时器1作为波特率产生器
TMOD|=0x20;//T1工作为方法2
SCON=0x50;//方法1:10位异步同通讯,串口答应接纳
PCON|=0x80;//波特率倍增,SMOD=1
TH1=0xfa;
TL1=0xfa;
TR1=1;
SBUF = 0x00;//初始化是来完成串口中止的触发,在这里你也能够将TI复位为’0’不会影响串口中止的数据发送,恣意的值都能够放到SBUF中,纷歧定非是0x00哦
ES=1;//串口中止答应
EA=1;//总中止答应
}
main()
{
InitUart();//串口设置初始化
while(1);//死循环等候哦!
}
void uart(void) interrupt 4
{
if(RI)
{
RI=0;//接纳句子放在本句子前面,本句子是软件复位接纳中止标志
}
if(TI)
{
TI=0;//复位TI
SBUF = B;
}
}
程序三:
在初始化函数中即不要“TI=1;”句子,也不要“SBUF=0x00;”句子就形成了程序三,这个程序是用来与上面的两个程序比照阐明的。程序三是不能正确的发送数据的,串口中止服务程序一向都不会进去的!
不知道阐理解没有,期望我们能够好好的看看!
自己着手调试一下就会有很深的领会!!!!
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/261156.html