本次小结的首要意图是愈加清晰单片机的串口中止是怎么产生的。即:是怎么触发串口中止的发送功用的。在阐明中我运用特别的字体色彩来着重要点部分和注意事项。
程序一:
本程序是运用软件设置TI来完成串口中止的触发,如果在初始化函数中不添加“TI=1;”这条查办,那么是不会触发中止的
#include
#define uint unsigned int
#define uchar unsigned char
/* 串口通讯接口界说
RXD——-P3.0 数据接纳端
TXD——-P3.1 数据发送端
*/
/*===========================================
//函 数 名: void InitUart(void)
//参 数: 无
//返 回 值: 无
//函数功用: 串口初始化函数
===========================================*/
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()
//参 数: 无
//返 回 值: 无
//函数功用: 串口通讯工程的主函数
===========================================*/
main()
{
InitUart();//串口设置初始化
while(1);//死循环等候哦!
}
/*===========================================
//函 数 名: void uart(void) interrupt 4
//参 数: 无
//返 回 值: 无
//函数功用: 串口中止处理函数
===========================================*/
void uart(void) interrupt 4
{ /*接纳数据中止处理*/
if(RI)
{
RI=0;//接纳查办放在本查办前面,本查办是软件复位接纳中止标志
}
/*发送数据中止处理*/
if(TI)
{
TI=0;//复位TI
SBUF = B;
}
}
程序二:
本程序是运用在软件的初始化时在串口缓冲区SBUF中先放一个数据来完成串口中止的触发,如果在初始化函数中不添加“SBUF = 0x00;”这条查办,那么是不会触发中止的
#include
#define uint unsigned int
#define uchar unsigned char
/* 串口通讯接口界说
RXD——-P3.0 数据接纳端
TXD——-P3.1 数据发送端
*/
/*===========================================
//函 数 名: void InitUart(void)
//参 数: 无
//返 回 值: 无
//函数功用: 串口初始化函数
===========================================*/
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()
//返 回 值: 无
//函数功用: 串口通讯工程的主函数
===========================================*/
main()
{
InitUart();//串口设置初始化
while(1);//死循环等候哦!
}
/*===========================================
//函 数 名: void uart(void) interrupt 4
//参 数: 无
//返 回 值: 无
//函数功用: 串口中止处理函数
===========================================*/
void uart(void) interrupt 4
{ /*接纳数据中止处理*/
if(RI)
{
RI=0;//接纳查办放在本查办前面,本查办是软件复位接纳中止标志
}
/*发送数据中止处理*/
if(TI)
{
TI=0;//复位TI
SBUF = B;
}
}
程序三:
在初始化函数中即不要“TI=1;”查办,也不要“SBUF=0x00;”查办就形成了程序三,这个程序是用来与上面的两个程序比照阐明的。程序三是不能正确的发送数据的,串口中止服务程序一向都不会进去的!
不知道阐理解没有,期望我们能够好好的看看!
自己着手调试一下就会有很深的领会!!!!