51单片机快速入门之中断的应用 2024/11/23 串口中断
51单片机快速入门之中断的应用
基本函数:
void T0(void) interrupt 1 using 1
{
这里放入中断后需要做的操作
}
void T0(void):
这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。
interrupt 1:
这是关键字和参数,用于指定这个函数是一个中断服务例程,其中 1 表示中断号。不同的中断号对应不同的中断源.
using 1:
这是另一个关键字和参数,用于指定该中断服务例程使用的工作寄存器组。
在一些微控制器中,允许程序员在中断服务例程中使用不同的工作寄存器组,以避免与主程序中的寄存器冲突。这里的 1 表示使用第1个工作寄存器组。
中断号解释: interrupt
- 外部中断0 (INT0) 中断号0
- 定时器/计数器0 (T0) 中断号1
- 外部中断1 (INT1) 中断号2
- 定时器/计数器1 (T1) 中断号3
- 串行口中断 (串行I/O) 中断号4
使用中断前必要的设置:
串行通信控制寄存器 SCON 简称:串口控制 图片来源于网络
多机通信控制位 (SM2)
SM2 位主要用于多机通信模式(方式2和方式3)。它的功能如下:方式0:SM2 必须为0。
方式1:SM2 不使用。方式2和方式3:如果 SM2 为0,无论接收到的第9位数据(RB8)是什么,
都会将前8位数据送入接收缓冲区 SBUF 并产生中断请求。如果 SM2 为1,只有当接收到的第9位数据(RB8)为1时,
才会将前8位数据送入接收缓冲区 SBUF 并产生中断请求;否则,丢弃前8位数据。
REN:是串行接收允许位
1时:允许串行接收
0时:禁止串行接收
- REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
快速理解参考:
SM0 SM1 串行通信 模式选择 ,参考前面文章中的传送门
关于 通信模式 设置 的资料 传送门
TI = 1; 表示数据 发送成功 一帧数据 触发中断处理 之后需要手动 =0
RI =1; 表示数据 接收成功 一帧数据 触发中断处理 之后需要手动 =0
复习拓展:
一帧数据的组成
- 起始位(Start Bit):
- 通常是一个低电平(0),用于标记数据传输的开始。
- 起始位的宽度通常是一个比特时间。
- 数据位(Data Bits):
- 通常包含8位数据,但也可能是5位、6位、7位或9位。
- 数据位是实际要传输的有效数据。
- 校验位(Parity Bit)(可选):
- 用于检测传输过程中是否发生错误。
- 校验位可以是奇校验或偶校验。
- 奇校验:数据位中1的个数加上校验位后为奇数。
- 偶校验:数据位中1的个数加上校验位后为偶数。
- 停止位(Stop Bit):
- 通常是一个高电平(1),用于标记数据传输的结束。
- 停止位的宽度可以是一个或两个比特时间。
51单片机快速入门之串口中断的应用
举例说明:通过 串口控制1602 显示文字
1602驱动代码(省略),不会写的参考 之前的文章.
串口通信原理:
- 接收:
RXD串口信息过来,当接收到起始信号,SCON寄存器将打开接收,允许接收,通过T1 计数器/定时器 来产生移位脉冲 由低位到高位传入 移位寄存器,再 传输到SBUF(数据缓冲器) 中 中断后可取出其中内容
串口初始化:
SCON = 0x50;
:设置串口工作方式 1(8 位数据,1 位停止位)。PCON = 0x00;
:不使用倍速模式。配置 T1 计数器/定时器
定时器初始化:
TMOD = 0x20;
:设置定时器 1 为模式 2(8 位自动重装)。TH1 = 0xA0;
设置初值,计算公式为256 - (晶振频率(
晶振频率需要转换成 Hz(赫兹)1 MHz 等于 (10^6) Hz) / 12 / 波特率)
。对于 11.0592 MHz 的晶振和 9600 bps 的波特率,初值为0xFD
。1 MHz 等于 (10^6) Hz 11.0592x10^6 =11059200 11059200/12/9600=96 256-96=160 1010 0000 A0TL1 = 0xA0;
TR1 = 1;
:启动定时器 1。
- 发送:
只需要把数据写入SBUF中即可发送
串口中断代码:
#include <STC89C5xRC.H>#include <intrins.h>typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef bit BOOL ;sbit rs = P3^3;
sbit rw = P3^4;
sbit ep = P3^5;BYTE *rr= "WELCOME!1602";
BYTE *rt= "2024/11/24";
void delay(BYTE ms); //延时
void lcd_wdat(BYTE dat);//因为不能在声明前使用,这里声明一下函数1602 输出
void lcd_pos(BYTE pos);
void lcd_wcmd(BYTE cmd);void Uart1_Init(void) //9600bps@18.432MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率AUXR &= 0xFE; //串口1选择定时器1为波特率发生器TMOD &= 0x0F; //设置定时器模式TMOD |= 0x20; //设置定时器模式TL1 = 0xF6; //设置定时初始值TH1 = 0xF6; //设置定时重载值ET1 = 0; //禁止定时器中断TR1 = 1; //定时器1开始计时
}void delay(BYTE ms)
{while(ms--);
}void lcd_wcmd(BYTE cmd)
{rs = 0;rw = 0;ep = 1;P0 = cmd;delay(500);ep = 0;}void lcd_wdat(BYTE dat)
{rs = 1;rw = 0;ep = 1;P0 = dat;delay(500);ep = 0;}lcd_init()
{lcd_wcmd(0x3c);delay(50);lcd_wcmd(0x0f);delay(50);lcd_wcmd(0x01);delay(50);}int main(void)
{unsigned char dtt=33;P10=0;lcd_init();lcd_wcmd(0x01);delay(50);lcd_wcmd(0x80);while(*rr) {lcd_wdat(*rr);rr++;}lcd_wcmd(0xc0);while(*rt) {lcd_wdat(*rt);rt++;}Uart1_Init();SBUF=dtt;while(TI==0);TI=0;}
发现电脑串口无法识别单片机发出的信息2024/11/26
相关文章:
51单片机快速入门之中断的应用 2024/11/23 串口中断
51单片机快速入门之中断的应用 基本函数: void T0(void) interrupt 1 using 1 { 这里放入中断后需要做的操作 } void T0(void): 这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。 interrupt 1: 这是关键字和参…...
[Java]微服务配置管理
介绍 代码拆分为微服务后, 每个服务都有自己的配置文件, 而这些配置文件中有很多重复的配置, 并且配置变化后需要重启服务, 才能生效, 这样就会影响开发体验和效率 配置管理服务可以帮助我们集中管理公共的配置, 并且nacos就可以实现配置管理服务 配置共享 我们可以把微服务共…...
c/c++ 用easyx图形库写一个射击游戏
#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…...
Rust eyre 错误处理实战教程
在《Rust 错误处理库: thiserror 和 anyhow》中我们介绍了Rust简化处理错误策略,本文解释eyre错误处理库,并通过多个实际示例进行说明,最后于anyhow库进行对比,让你更好理解其应用场景。 eyre是一个用于 Rust 的错误处理库&#x…...
面试小札:JVM虚拟机
1. 定义与基本概念 - JVM(Java Virtual Machine)即Java虚拟机,是Java程序的运行核心。它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来运行Java字节码。字节码是一种中间格式,它使得Java程序能…...
Docker扩容操作(docker总是空间不足)
Docker扩容操作(docker总是空间不足) 1、df二连,一共也就70g,总是占满93%以上。所以需要移动到其他目录上 查看docker镜像和容器存储目录的空间大小 du -sh /var/lib/docker/2、停止docker服务 systemctl stop docker3、首先创建目录并迁移 # 首先创…...
数字图像处理(4):FPGA中的定点数、浮点数
(1)定点数:小数点固定在数据的某一位置的数,可以分为定点整数和定点小数和普通定点数。定点数广泛应用于数字图像处理(图像滤波、图像缩放)和数字信号处理(如FFT、定点卷积)中。 定…...
毕昇入门学习
schemas.py 概述 这段代码主要定义了一系列基于 Pydantic 的数据模型(BaseModel),用于数据验证和序列化,通常用于构建 API(如使用 FastAPI)。这些模型涵盖了用户认证、聊天消息、知识库管理、模型配置等多…...
2411C++,学习C++提示4
结构绑定 auto [first, ...ts] std::tuple{1, 2 ,3};assert(1 first);浮点作为非类型模板参数 template<double Value> constexpr auto value Value;int main() {std::cout << value<4.2>; // prints 4.2 }template<double... Vl1s, double... Vl2s&g…...
STM32-- 看门狗--介绍、使用场景、失效场景
STM32 中的看门狗(Watchdog Timer,简称 WDG)有两种主要类型:独立看门狗(IWDG) 和 窗口看门狗(WWDG)。它们的喂狗机制各有特点,主要区别如下: 1. 独立看门狗&a…...
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都…...
linux安全管理-会话安全
文章目录 1 设置命令行界面超时退出2 配置终端登录失败策略3 配置 SSH 登录失败策略 1 设置命令行界面超时退出 1、检查内容 检查操作系统是否设置命令行界面超时退出。 2、配置要求 操作系统设置命令行界面超时退出。 3、配置方法 配置命令行界面超时时间,编辑/et…...
Ubuntu监视显卡占用情况
在终端中运行 watch -n 0.5 nvidia-smi【以下内容由大模型生成】 watch -n 0.5 nvidia-smi 是一个组合命令,用于在 Linux 终端中定期执行 nvidia-smi 命令并显示其输出。让我们分解一下这个命令的各个部分: watch: watch 是一个用于定期执行其他命令并显…...
学成在线day06
上传视屏 断点续传 通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成&…...
Mac安装及合规无限使用Beyond Compare
文章目录 Beyond CompareBeyond Compare简介Beyond Compare安装Beyond Compare到期后继续免费使用 Beyond Compare Beyond Compare简介 Beyond Compare 是一款由 Scooter Software 开发的文件和文件夹比较工具。它主要用于对比两个文件或文件夹之间的差异,并支持文…...
【青牛科技】2K02 电动工具专用调速电路芯片描述
概述: 2K02 是电动工具专用调速电路。内置稳压电路,温度系数好,可以调节输出频率以及占空比的振荡输出,广泛的应用于小型电钻,割草机等工具。 主要特点: ● 电源电压范围宽 ● 占空比可调 ● 温度系数好 …...
基于SpringBoot实现的民宿管理系统(代码+论文)
🎉博主介绍:Java领域优质创作者,阿里云博客专家,计算机毕设实战导师。专注Java项目实战、毕设定制/协助 📢主要服务内容:选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 💖精彩专栏…...
安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2
本篇主要针对只使用过QT5的qmake,没有用过MSVC,VS的老同学。 建议一部分一部分安装,全部勾选安装遇到问题会中断,前功尽弃。 我自己需要的是QT5,编出的软件用在公司设备上。 QT6:建议也安装学习…...
MinIO常见操作及Python实现对象的增删改查
MinIO常见操作 MinIO是一个高性能的开源对象存储服务,它兼容Amazon S3云存储服务API。在MinIO中,常见的操作包括: 存储桶操作: 创建、列出、获取信息、删除存储桶。 对象操作: 上传、下载、列出、删除对象。 权限管理&…...
网络编程中的字节序函数htonl()、htons()、ntohl()和ntohs()
目录 1,网络字节序和主机字节序 2. 函数的具体作用 2.1,htonl(Host to Network Long) 2.2,htons(Host to Network Short) 2.3,ntohl(Network to Host Long) 2.4,ntohs(Network to Host Sho…...
【dvwa靶场:File Upload系列】File Upload低-中-高级别,通关啦
目录 一、low级别,直接上传木马文件 1.1、准备一个木马文件 1.2、直接上传木马文件 1.3、访问木马链接 1.4、连接蚁剑 二、medium级别:抓包文件缀名 2.1、准备一个木马文件,修改后缀名为图片的后缀名 2.2、上传文件,打开burpSuite&…...
RHCE NFS
RHCE NFS 1.11. 2 NFS 主机名格式1.3 NFS 服务器配置1.3.1 /etc/exports 配置文件1.3.1.1 导出条目1.3.1.2 默认选项1.3.1.3 默认和覆盖选项 1.4 启动 NFS 服务器1.5 练习1.5.1 配置 NFS 服务器和客户端挂载1.5.2 配置autofs自动挂载(需要时才挂载) 1.6 …...
【数据结构】ArrayList与顺序表
ArrayList与顺序表 1.线性表2.顺序表2.1 接口的实现 3. ArrayList简介4. ArrayList使用4.2 ArrayList常见操作4.3 ArrayList的遍历4.4 ArrayList的扩容机制 5. ArrayList的具体使用5.1 杨辉三角5.2 简单的洗牌算法 6. ArrayList的问题及思考 【本节目标】 线性表顺序表ArrayLis…...
互联网基础
TCP/IP协议(协议组) 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP,UDP网络层IP链路层(网络接口层)Ethernet,Wi-Fi... 链路层(网络接口层) 链路层的主要作用…...
ffmpeg.js视频播放(转换)
chrome 临时设置SharedArrayBuffer "C:\Program Files\Google\Chrome\Application\chrome.exe" --enable-featuresSharedArrayBuffer 引用的js及相关文件 ffmpeg.min.js ffmpeg.min.js.map ffmpeg-core.js ffmpeg-core.wasm ffmpeg-core.worker.js 以上几个现…...
后端 Java发送邮件 JavaMail 模版 20241128测试可用
配置授权码 依赖 <dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.5.5</version> </dependency> <dependency><groupId>com.sun.mail</groupId><artifa…...
电脑中的vcruntime140_1.dll文件有问题要怎么解决?一键修复vcruntime140_1.dll
遇到“vcruntime140_1.dll无法继续执行代码”的错误通常表明电脑中的vcruntime140_1.dll文件有问题。这个文件属于Visual C Redistributable,对很多程序的运行至关重要。本文将提供几个步骤,帮助你迅速修复这一错误,使电脑恢复正常工作状态。…...
探索 Vue 3.0中Treeshaking特性?
Vue 3.0 中的 Tree Shaking 特性 Tree Shaking 是一种优化技术,旨在通过静态分析代码,去除未使用的模块或函数,从而减小最终的打包文件大小。在 Vue 3.0 中,由于其模块化设计和代码按需引入的特性,Vue 的 Tree Shaking 特性得到了增强,能够有效地去除那些在生产环境中未…...
Paddle Inference部署推理(十)
十:Paddle Inference推理 (python)API详解 9. 启用内存优化 API定义如下: # 开启内存 / 显存复用,具体降低内存效果取决于模型结构 # 参数:None # 返回:None paddle.inference.Config.enable…...
万能门店小程序管理系统 doPageGetFormList SQL注入漏洞复现
0x01 产品简介 万能门店小程序管理系统是一款功能强大的工具,旨在为各行业商家提供线上线下融合的全方位解决方案。是一个集成了会员管理和会员营销两大核心功能的综合性平台。它支持多行业使用,通过后台一键切换版本,满足不同行业商家的个性化需求。该系统采用轻量后台,搭…...
哈尔滨网站制作建设/郑州优化网站公司
一、压缩文件的原理压缩技术,简而言之,我们可以将其想象成:其实文件里面有很多的"空间"存在,并不是完全填满的,而"压缩"技术就是将这些"空间"填满,从而使得整个文件占用量下…...
从零开始建设企业网站/关键词歌曲免费听
一、题目分析 欲运行四种求最大公约数的算法,并比较在不同测试数据规模下四种算法的平均运行时间 用文字描述步骤 输入测试数据的规模(数组大小);调用random()函数,创建数组;定义c…...
html5网站链接标签/自媒体有哪些平台
一个不具备消息推送功能的APP不能称之为APP,消息推送是产品和运营人员常用用户运营工具。消息推送的目的在于: 通知某件事已发生。如支付成功的扣款提醒,发货提醒等等。通知平台有什么东西,促进用户进入查看或参与,提升…...
济南外贸网站建设/腾讯搜索引擎入口
对数器的概念 1.有一个你想要测的方法a; 2.实现一个绝对正确但是复杂度不好的方法b; 3.实现一个随机样本产生器; 4.实现对比算法a和b的方法; 5.把方法a和方法b比对多次来验证方法a是否正确; 6.如果有一个样本使得比对…...
cf刷枪网站怎么做的/做百度seo
Multitouch Mac破解版是Mac平台上一款触控板手势增强软件,你可以使用multitouch mac破解版添加各种不同的触控板手势,手指轻点、轻扫等就能快速进行操作,使用非常便捷,想要增强触摸板手势的朋友可以试试multitouch for mac破解版哦…...
专做蔬菜大棚的网站/网页免费制作网站
图形用户界面(GUI )(Graphics User Interface ,GUI )三大界面布局介绍一、边界布局BorderLayout –介绍边界布局BorderLayout使用边界布局BorderLayout—注意事项1、不是五个部分都必须添加2、中部组件会自动的调节大小3、JFrame,JDialog 默认布局管理器就是BorderLayout二、流…...