您的位置 首页 新品

单片机的串口通讯编程的总结

本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重…

本次小结的首要意图是愈加清晰单片机的串口中止是怎么产生的。即:是怎么触发串口中止的发送功用的。在阐明中我运用特别的字体色彩来着重要点部分和注意事项。

程序一:

本程序是运用软件设置TI来完成串口中止的触发,如果在初始化函数中不添加“TI=1;”这条查办,那么是不会触发中止的

#include //包括51单片机的头文件

#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 //包括51单片机的头文件

#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;”查办就形成了程序三,这个程序是用来与上面的两个程序比照阐明的。程序三是不能正确的发送数据的,串口中止服务程序一向都不会进去的!

不知道阐理解没有,期望我们能够好好的看看!

自己着手调试一下就会有很深的领会!!!!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/263644.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部