51单片机按键输入多位数_串口中断-即将消失的单片机技艺

今天粉丝催更,求“串口中断”的教程,第一次被催啊,我稍微认真点写。

之前讲过中断的概念,没看过的小伙伴可以 “中断”-嵌入式的灵魂 看一下,今天给大家讲一下,三种中断中最不起眼的串口中断,说实话,串口中断不适合单独讲,适合放在通信里去讲。

efb497fc314acb16b93a3a72ea04b251.png

大家都知道,我们做单片机想提高,肯定往通信连接的方向走,往这个方向就难免碰到串口通信的问题,今天我们就从最简单的UART(通用异步收发器)来讲,毕竟通信方式太多。

2e89fd6008c27e213bf3e740d3d6a0a2.png

具体的通信什么的我就不讲了,单独讲。。。。

这里要明确一点,串口中断就是服务于串口的,别的地方用不着,而且以我的认知只有51保存了,而且发扬光大,别的都直接 上库 ,所以以下我用51单片机来讲。

开始:

单片机会通过一系列的操作将多位数据传出去或者传回来。

以上就是串口通信的核心,单片机在传出去或者回来的时候都会经过一个“容器”,这个“容器”专业名词是SBUF,记着 去和回来都是这个;

8408594f1f97fa99e727dcec2ea5bb65.png

那问题来了,都是一个我们如何去用它,这时候我们就可以用串口中断了;

比如你现在正在往外发送数据,经过SBUF停下来了,只有串口中断开了你才能出去,像一个保安,回来也是一样,必须经过在串口中断才行;

具体怎么配置我用51程序给大家看一下:

#include #define uchar unsigned char#definr uint unsigned int unsigned char flag,a,i;uchar code table[] = "I get";void init(){TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;REN = 1;SM0 = 0;SM1 = 1;EA = 1;ES = 1;}void main(){init();while(1){if(flag == 1){ES = 0;for(i = 0;i < 6; i ++){SBUF = table[i];while(!TI);TI = 0;}SBUF = a;while(!TI);TI = 0;ES = 1;flag = 0;}}}void ser()interrupt 4{RI = 0;a = SBUF;flag= 1;}

之间一直不停的开启或者关闭串口中断,就是为了防止进去的出来的懵逼。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值