当前位置: 首页 > news >正文

c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

 

 

 单片机一般采用中断方式接受数据,这样便于及时处理

#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
int szc[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int bufferc[6]={0};
int sza[6]={0x01,0x02,0x04,0x08,0x10,0x20};
void display()
{uchar i=0;uchar num=0;for(i=0;i<6;i++){num=bufferc[i];P2=szc[num];P1=sza[i];sleep(100);P2=0xff;}
}void main()
{TMOD=0x20;TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/STL1=0XF4;TR1=1;SCON=0x40;//串口工作与方式1,定义了传送数据的格式EA=1;ES=1;   //串口中断开关打开REN=1;while(1){display();}
}void int_4() interrupt 4
{static uchar i=0;EA=0;bufferc[i]=SBUF;i++;if(i==6)i=0;RI=0;EA=1;
}void sleep(long int a)
{uchar i=0;for(i=0;i<a;i++){;}
}
#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
long int sleep_i=0;
long int main_i=0;
void main()
{uchar sendx[6]={2,0,2,3,8,1};sleep(2000);TMOD=0x20;TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/STL1=0XF4;TR1=1;SCON=0X40;for(main_i=0;main_i<6;main_i++){SBUF=sendx[main_i];while(TI==0);//这个是清除发送的中断,不是清除闹钟中断TI=0;}while(1);
}void sleep(long int a)
{for(sleep_i=0;sleep_i<a;sleep_i++){;}
}

其中发送数据段采用的是查询方式,接收端采用了中断方式,

要注意的地方有:

在中断处理函数int_0()内,处理数据前要先关闭中断,否则中断可能会不断传过来,

EA=0;

然后退出中断处理函数前恢复中断处理能力:

EA=1;

另外再main函数内比较查询方式要添加:

EA=1;

ES=1;

因为既然使用中断,一定要把中断中开关和serial通讯开关打开

http://www.lryc.cn/news/124169.html

相关文章:

  • 腾讯面试题算法还原【游戏安全】
  • vue + less 实现动态主题换肤功能
  • matlab使用教程(15)—图论基础
  • 【量化课程】02_4.数理统计的基本概念
  • 【计算机视觉|生成对抗】改进的生成对抗网络(GANs)训练技术
  • SQLyog中导入CSV文件入库到MySQL中
  • Spring Security6 最新版配置该怎么写,该如何实现动态权限管理
  • CommandLineRunner 和 ApplicationRunner 用于Spring Boot 应用启动后执行特定逻辑
  • 一、Dubbo 简介与架构
  • 软考:中级软件设计师:文件管理,索引文件结构,树型文件结构,位示图,数据传输方式,微内核
  • 实践-CNN卷积层
  • 【设计模式】MVC 模式
  • 看康师傅金桔柠檬X国漫IP跨界出圈,打开IP合作新思路
  • ElementUI的MessageBox的按钮置灰且不可点击
  • pc端与flutter通信失效, Method not found
  • linux 防火墙经常使用的命令
  • Docker desktop安装mysql
  • Java SpringBoot Vue ERP系统
  • 什么是CSS中的渐变(gradient)?如何使用CSS创建线性渐变和径向渐变?
  • 【深度学习】PyTorch快速入门
  • 学习Vue:组件通信
  • springboot项目打包后读取jar包里面的
  • 设计模式之七大原则
  • pytorch入门-TensorBoard和Transforms
  • 【java】Java基础——接口和实现
  • JetPack Compose 学习笔记(持续整理中...)
  • 遍历集合List的五种方法以及如何在遍历集合过程中安全移除元素
  • 【SQL应知应会】索引(二)• MySQL版
  • Android 简单的视频、图片压缩工具
  • 信息论、推理和机器学习算法之间交叉的经典例子