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.hqwc.cn/news/67846.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis_缓存1_缓存类型

14.redis缓存 14.1简介 穿透型缓存&#xff1a; 缓存与后端数据交互在一起&#xff0c;对服务端的调用隐藏细节。如果从缓存中可以读到数据&#xff0c;就直接返回&#xff0c;如果读不到&#xff0c;就到数据库中去读取&#xff0c;从数据库中读到数据&#xff0c;也是先更…

二次封装element-plus上传组件,提供校验、回显等功能

二次封装element-plus上传组件 0 相关介绍1 效果展示2 组件主体3 视频组件4 Demo 0 相关介绍 基于element-plus框架&#xff0c;视频播放器使用西瓜视频播放器组件 相关能力 提供图片、音频、视频的预览功能提供是否为空、文件类型、文件大小、文件数量、图片宽高校验提供图片…

实录分享 | 使用Prometheus和Grafana监控Alluxio运行状况

欢迎来到【微直播间】&#xff0c;2min纵览大咖观点 本次分享主要包括三个方面&#xff1a; Prometheus&Grafana简介环境搭建手动调优 一、 Prometheus&Grafana简介关于Prometheus&#xff1a; Prometheus 是一个开源的完整监控解决方案&#xff0c;其对传统监控系…

js操作剪贴板讲解

文章目录 复制&#xff08;剪切&#xff09;到剪贴板Document.execCommand()Clipboard复制Clipboard.writeText()Clipboard.write() copy&#xff0c;cut事件 从剪贴板进行粘贴document.execCommand(paste)Clipboard粘贴Clipboard.readText()Clipboard.read() paste 事件 安全性…

领航未来!探索开源无人机与5G组网的前沿技术

近年来无人机行业高速发展&#xff0c;无人机被广泛应用于航拍、农业、电力、消防、科研等领域。随着无人机市场不断增长&#xff0c;其对实时超高清图传、远程低时延控制、海量数据处理等需求也在不断扩张&#xff0c;这无疑给通信链路带来了巨大的挑战。 为应对未来的需求变…

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

NLP文本匹配任务Text Matching [有监督训练]&#xff1a;PointWise&#xff08;单塔&#xff09;、DSSM&#xff08;双塔&#xff09;、Sentence BERT&#xff08;双塔&#xff09;项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本匹配的方法进行实现&#xff1a;Poin…

数据分析两件套ClickHouse+Metabase(一)

ClickHouse篇 安装ClickHouse ClickHouse有中文文档, 安装简单 -> 文档 官方提供了四种包的安装方式, deb/rpm/tgz/docker, 自行选择适合自己操作系统的安装方式 这里我们选deb的方式, 其他方式看文档 sudo apt-get install -y apt-transport-https ca-certificates dirm…

【冒泡排序及其优化】

冒泡排序及其优化 冒泡排序核心思想 冒泡排序的核⼼思想就是&#xff1a;两两相邻的元素进⾏⽐较 1题目举例 给出一个倒序数组&#xff1a;arr[10]{9,8,7,6,5,4,3,2,1,0} 请排序按小到大输出 1.1题目分析 这是一个完全倒序的数组&#xff0c;所以确定冒泡排序的趟数&#xff0…

如何手动创建可信任证书DB并配置 nss-config-dir

以阿里云免费邮箱为例 1. 如何下载证书链 证书链说明 使用 gnutls gnutls-cli --print-cert smtp.aliyun.com:465 < /dev/null > aliyun-chain.certs使用 openssl showcerts $ echo -n | openssl s_client -showcerts -connect smtp.aliyun.com:465 | sed -ne /-BE…

机器学习笔记之优化算法(十三)关于二次上界引理

机器学习笔记之优化算法——关于二次上界引理 引言回顾&#xff1a;利普希兹连续梯度下降法介绍 二次上界引理&#xff1a;介绍与作用二次上界与最优步长之间的关系二次上界引理证明过程 引言 本节将介绍二次上界的具体作用以及它的证明过程。 回顾&#xff1a; 利普希兹连续…

Rabbitmq延迟消息

目录 一、延迟消息1.基于死信实现延迟消息1.1 消息的TTL&#xff08;Time To Live&#xff09;1.2 死信交换机 Dead Letter Exchanges1.3 代码实现 2.基于延迟插件实现延迟消息2.1 插件安装2.2 代码实现 3.基于延迟插件封装消息 一、延迟消息 延迟消息有两种实现方案&#xff…

postman入门基础 —— 接口测试流程

一、编写接口测试计划 接口测试计划和功能测试计划目标一致&#xff0c;都是为了确认需求、确定测试环境、确定测试方法&#xff0c;为设计测试用例做准备&#xff0c;初步制定接口测试进度方案。一般来说&#xff0c;接口测试计划包括概述、测试资源、测试功能、测试重点、测试…