在上一篇文章中我们通过串口实现了上位机接收单片机发送的信息,也可以通过上位机控制接在单片机上的led 但是有延迟。解决这个问题我们可以通过串口中断实现。

#include "reg52.h"
#include "intrins.h"
sfr AUXR = 0x8e;
sbit D5 = P3^7;char cmd;void UartInit(void)        //9600bps@11.0592MHz
{SCON = 0x50; //配置串口工作方式1,RE不使能接受PCON = 0x00; //TMOD &=0x0F;TMOD |=0x20;TH1 = 0xFD;TL1 = 0xFD;TR1 = 1;EA =1 ;//打开总中断ES = 1;//开启串口中断
}void Delay1000ms()     //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}void sendByte(char data_msg)
{SBUF = data_msg;while(TI==0);TI =0;
}void sendString(char* str)
{while(*str !='\0'){sendByte(*str);str++;}
}void main()
{   D5 =1;UartInit();  while(1){Delay1000ms();sendString("xiao wang ");//向缓冲区写入数据;
//          if(RI==1)
//          {//              RI = 0 ;
//              cmd = SBUF;
//              if (cmd == 'o'){//                  D5 =0;
//}
//            if (cmd == 'c'){//                      D5 =1;
//  }}}void Uart_Handler() interrupt 4
{//中断处理函数中对于接收中断的处理if(RI==1)  //RI = 1 说明单片机接收缓冲区接收到到了数据{RI = 0 ;  // 软件复位接收中断标志位RI 以可以连续工作cmd = SBUF;// 判断接收的数据是说明,o开灯 c关灯if (cmd == 'o'){D5 =0;}if (cmd == 'c'){D5 =1;}//对于发送中断的处理if(TI);}
}

实现效果:类似于双线程,单片机一直向上位机发送信息;而当上位机向单片机发送开灯关灯指令单片机立刻相应。

51单片机串口中断控制灯相关推荐

  1. 关于51单片机串口中断的理解

    关于51单片机串口中断的理解 关于这个问题找了好几个帖子,都没看到能让我明白的.自己就想了想,又看了看.新手不一定说得对,您凑合着看看.要不对的话,望指正. 首先,我们在SCON中设置的时候,一般都会 ...

  2. 单片机串口中断控制流水灯c语言,基于单片机AT89C51控制的中断控制流水灯_课程设计报告...

    <基于单片机AT89C51控制的中断控制流水灯_课程设计报告>由会员分享,可在线阅读,更多相关<基于单片机AT89C51控制的中断控制流水灯_课程设计报告(25页珍藏版)>请在 ...

  3. 单片机串口中断控制流水灯c语言,利用单片机中断实现流水灯

    在我们的生活中,随处可见各式各样的彩灯,给这本来充满美丽的世界又添加了一份别致的美,想知道流水灯是怎么实现的吗?现在就跟我走进这实现流水灯的大道吧! 其实利用单片机的中断功能就可以实现.本篇文章是当每 ...

  4. 51单片机串口中断功能的设置

    51单片机的串口功能就是和外界进行通讯,所谓的"外界"也就是与单片机进行交互的媒介,最常用的就是我们经常使用的计算机.平板或者其他设备(比如另一个单片机配合显示模块使用). 既然和 ...

  5. 笔记 学习51单片机串口中断

    单片机的串口通信功能是比较常用的功能. 80C51的串行口 我在学习的过程中,觉得SBUF的使用方法是最难的,于是对着这个图和资料一步步理解,才搞明白一点"A=SBUF"和&quo ...

  6. 51单片机震动传感器控制灯,控制继电器

    震动传感器控制灯 震动传感器原理图: 由产品介绍知道,震动传感器感受震动时输出低电平,那要实现震动时灯亮则可以用如下代码: #include "reg52.h"sbit led1 ...

  7. 中断控制流水灯c语言程序,51单片机按键中断控制流水灯

    满意答案 levis501523 2018.01.03 采纳率:58%    等级:12 已帮助:8301人 #include #include #define uchar unsigned char ...

  8. 51单片机外中断流水灯

    按下K3按键,触发外中断,启动灯效; 按下K4按键,触发外中断,停止灯效 #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include< ...

  9. c语言一个按键控制1个灯的亮灭,51 单片机:按键控制灯亮灭和闪烁

    要求: 上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下灯闪烁更快, 再按一下灯灭.... 如此循环. 链接:http://zhidao.baidu.com/question/1639123949 ...

  10. 51单片机-串口通信(串口向电脑发送信息电脑通过串口控制LED)

    文章目录 前言 一.串行通信口的功能以及串行通信口的结构及原理 1.1 串行通信口的功能 1.2 51单片机串口的结构 二.串行通信口的控制寄存器 2.1 串行控制寄存器SCON 2.2 电源控制寄存 ...

最新文章

  1. 4岁的儿子还不会写红黑树,我该怎么办?
  2. 编程语言“考古”:曾经影响一代人的BASIC,原来还有前身
  3. s3c6410 uboot代码分析《一》
  4. 庄导就业指导2020.4.6
  5. OpenCV霍夫直线检测的实例(附完整代码)
  6. 2020年lumia怎样安装软件_2020年软件行业市场分析
  7. udemy下载课程无法播放_最好的Udemy Web开发课程+热门免费课程
  8. The Shapes of CSS
  9. 单人存档_R星:会为GTA做更多单人内容,steam圣诞特惠即将开启,2077坏档BUG,那个游戏重回steam销量榜,Epic喜加一...
  10. java 阻塞 直到完成_完成所有提交的任务后关闭Java执行程序而不会阻塞
  11. 第1章 数据库系统及应用
  12. 走在“辞职”路上的数据科学家们!
  13. 和catch的区别_面试刷题2:Exception和Error的区别?
  14. python日期模块datetime常用操作总结(字符串与datetime对象互转、日期差值计算、时间戳获取、时间数组生成等)
  15. Java蓝桥杯杨辉三角形_Java蓝桥杯练习——杨辉三角形
  16. html固定表格宽度代码,如何固定HTML表格的宽度
  17. 时隔两年之后,证监会官网再次更新瑞丰银行的IPO进度。
  18. 计算机科学顶尖期刊,重磅!中国各学科顶级期刊名单发布!(影响力指数排名)...
  19. 网络安全技能竞赛之Web安全之综合渗透测试
  20. Discarded invalid param(s) “msg“ when navigating

热门文章

  1. python数字转拼音输出_python 小程序:转换阿拉伯数字到拼音
  2. JavaScript常用库和API学习文档
  3. mysql中用来取余数的函数是_mysql数学函数有哪些?
  4. Java创造者詹姆斯·高斯林采访
  5. wget不是内部命令 windows_wget 不是内部或外部命令 - 卡饭网
  6. 无人机影像的植被覆盖度、叶面积指数估算
  7. 浅谈 NCSI 及其在 Linux 上的实现
  8. 最全的Excel-sumif函数多条件求和案例汇总
  9. Windows 技术篇-修改电脑时间格式显示为12小时、24小时时间制式方法
  10. JSON对象与JSON模式