单片机 串口采用中断服务收发数据
下图中左边的单片机用串口接收数据,用C语言编程,实现将接收的数值送到数码管进行实时显示(接收数据范围为0~9)。
(1) 已知晶振频率=11.0592MHz;
(2) 要求配置串口工作在异步方式,8位数据位,波特率=2400;
(3) 必须用中断服务程序对接收数据进行处理并驱动显示,主程序中的后台循环while应为空。
//发送
#include <reg51.h>
sbit button =P1^0;
void delay(unsigned int n);
char cnt=0;
void inter (void) interrupt 4
{ TI=0;delay(100);SBUF=cnt++;if(cnt>9) cnt=0;
}
void main(void)
{TMOD =0x20;TH1=0xf4;//256-(11059200/2400/32/12)=244TL1=0xf4;TR1=1;ES=1;//打开串口中断开关EA=1;//打开中断总开关SCON=0x50;PCON=0x00;SBUF=cnt++;//要先发送一帧才会产生中断while(1){; }
}void delay(unsigned int n)
{unsigned int cnt;for(;n>0;n--){for(cnt=0;cnt<1000;cnt++);}
}
//接收
#include <reg51.h>
sbit led=P1^0;
sfr display=0x80;
char led_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void inter (void) interrupt 4
{char serial_byte;serial_byte=SBUF;P0=led_mod[serial_byte];RI=0;
}
void main(void)
{TMOD=0x20;TH1=0xf4;TL1=0xf4;TR1=1;EA=1;//打开中断总开关ES=1;//打开串口中断开关SCON=0x50;PCON=0x00;while(1){;}
}
单片机 串口采用中断服务收发数据相关推荐
- STM32单片机串口空闲中断+DMA接收不定长数据
在上一篇文章STM32单片机串口空闲中断接收不定长数据中介绍了利用串口空闲中断接收不定长数据,这种方式有一个问题就是串口每接收到一个字节就会进入一次中断,如果发送的数据比较频繁,那么串口中断就会不停打 ...
- 华大HC32F460串口空闲中断+DMA收发配置,记录一下自己遇到的坑
华大HC32F460串口空闲中断+DMA收发配置,记录一下自己遇到的坑 华大HC32F460串口空闲中断+DMA收发配置,记录一下自己遇到的坑 注:个人笔记,如有错误,还望谅解. STM32 在STM ...
- STM32单片机串口空闲中断接收不定长数据
在使用单片机的串口通信功能时,常用的接收数据方法是通过固定的字节数来判断一帧数是否发送完成,或者是通过固定的结束标志位来表示一帧数据发送完成.但是有时候会遇到发送的数据长度不固定,也没有固定的结束标志 ...
- 51单片机 串口通信 中断
从一段程序开始 实现电脑向单片机发送一些数据,单片机返回Iget +数据 #include #define uchar unsigned char #define uint unsigned int ...
- wpf上位机 modbus串口通信,获取收发数据的完整报文
一. 1.网上很多modbus类库,封装的方法,大多只获取返回的数据,而不是完整的报文,有时使用不便. 2.大多类库"读取"有返回值,而"写"时没有返回值,不好 ...
- 单片机编程小错记录1:漏写串口中断服务函数
问题描述: 原本单独测试没问题的定时器程序,但在加上串口程序后出现了问题,发现定时器貌似没有在正常工作...... 问题发现: 程序如下: 该程序主要想实现的功能是: 1.串口在初始化时发送" ...
- 【串口发送中断】基于赛元单片机使用三合一串口的UART功能
文章目录 前言 中断的方式发送数据 代码示例 准备工作 宏定义及全局变量 初始化 中断服务函数 ==发送逻辑函数== 启动发送函数 总结 前言 关于赛元单片机触摸的那篇文章确实帮助到过一些网友,后来有 ...
- STM32串口中断接收帧数据并返回给上位机总结(配合MAX3483)
一.前言 这是我的第一篇CSDN,记录一些代码总结,一方面与大家分享交流,另一方面方便以后再次使用能够快速回忆,再就是提高自身写作水平.如有错误之处,欢迎各位大佬批评指正. 二.所涉及的芯片 1.ST ...
- 扫描枪读条码数据在单片机串口电路的读取与显示
相关知识声明: 1.单片机一般用TTL串口 TTL电平:+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算 ...
最新文章
- netscaler密码恢复
- css-padding
- js中将字符串转换成json的三种方式
- InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。
- 在wordpress中添加幻灯片展示
- Vue之单文件组件和脚手架
- centos 7 mysql 中文,解决centOS7 下mysql插入中文字符报错相关问题
- linux命令之route
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_08-vuejs研究-vuejs基础-v-if和v-for指令...
- C++入门系列博客四 const define static关键字
- 【优化算法】广义正态分布优化算法(GNDO)【含Matlab源码 1531期】
- 微信 php收藏功能,怎样使用微信小程序做出添加收藏
- 世界主要粮食作物和经济作物的生产及其分布
- 50组顶级4K彩色水墨溶解飞溅动画视频素材合集 mbackground ink
- db2归档日志与循环日志(转载weiruan85)
- vmvare虚拟机无法读取ntfs的U盘解决方法,以及更换镜像下载源
- Adobe Acrobat Pro DC 缩小文件大小
- HyperLynx(三十)高速串行总线仿真(二)
- Kafka组件connector使用详解
- Windows电脑垃圾清理 - 如何删除临时文件(Temp文件夹)