【心得】C51单片机_中断
@
①学习单片机中断总思想
- 标题客观的说,学习单片机只需要掌握 I/O 和 中断。掌握了这两点,也就掌握了单片机。再进一步,外设连接元器件,也就是说学会控制元器件的激活,外设就没有问题了,有趣的事,中断也需要“激活”,即配置。所以,可以将单片机的学习变得更精简——激活。
(当然,不是说知道怎么激活,就学通了,只能算入门) - 就激活而言,单片机这个接地气的玩意儿,也就两种方式:电平、电位。由于元器件较为杂乱,故,在这里先讨论中断。中断的配置自然是电位激活,所以这里讨论激活方式毫无意义。
②学习单片机中断总思想
- 相较而言,配置顺序就有趣多了,这就像你的生活习惯,好的习惯可以提升效率。为了增强认同,我先抛出几个问题。1、我写中断老是有一两句忘了配置怎么办?2、中断配置记不住怎么办?3、中断配置怎么看都不会,死都记不住怎么办?这三个问题基本是同一个原因——记不住。这时候大家反思一下,我们程序员敲代码是为了什么(说为了钱的门口罚站去),当然是为了解决问题。所以我们没必要记这些东西,我们脑子里装的应该是编程思想。那不记配置不会写怎么办,看原理图。看了又忘了怎么办,写的时候再看,如果你写的次数多,那你慢慢就会记住,如果你写的次数少,那就说明你不常用它,不常用你把它记脑子里干什么(而且图像记忆比文字记忆效率更高,记原理图更能拓展自身发展空间)。
③学习单片机中断总方法
外部中断
- 比如外部中断0,结合下图,很明显IT0 = 1时为下降沿触发中断,为0时为高电平触发中断。这时IE0左边已经配置好了,再看右边,显然EX0 = 1,EA = 1时,电路导通。外部中断1同理。
参考代码:
IT0 = 1;
EX0 = 1;
EA = 1;
定时计数器中断
- 如果是定时计数器中断,还需要有定时计数器原理图。这个就根据个人习惯了,我本人是喜欢先从外向内配置。以TF0为例,右边ET0和EA同理,这时要注意左边的TR0,你可以把它想象成外部中断的ITx(这里的x可以是0或1)是控制计数的。进入内部,从上往下配置TH0,TL0,TMOD(TMOD的注视会在后面附到),这样定时计数器就配置好了。总结一下就是看图。
参考代码:
EA = 1;
ET0 = 1;
TR0 = 1;
TH0 = 0xfc;
TL0 = 0x18;
TMOD |= 0x01; //或运算防止更改T1配置
串行口中断
串口通信有四种工作方式,这四种工作方式的区别主要表现在帧格式及波特率两个方面(选择看需求)。
我们以工作方式一为例,参照上图”单片机_中断_结构图“,打开EA与ES,再看串口结构图,配置串口控制寄存器SCON(细节在“附”中),需要注意的是PCON的最高位和串口通信有关,为0波特率不加倍(0x00),为1加倍(0x80)。至此,串口部分就已经配置完毕,但C51串口中断需要定时器,具体参照上面的方法即可。
参考代码
EA = 1;
ES = 1;
SCON = 0x50;
PCON = 0x80;
TR1 = 1;
TH1 = 0xf3;
TH0 = 0xf3;
TMOD |= 0x20;
④总结
想要快速入门单片机,需要理解:单片机是实现元器件激活的桥梁,编程是手段。单片机中断部分可以理解为单片机的内部状态激活,编程要看原理图。
以上内容为个人总结,转载请注明出处,如有错误,欢迎指出
附
附:定时/计数器控制——工作方式寄存器【TMOD】
位—— 0 ——1——2——3——4 ——5—— 6—— 7
——GATE —C/T—M1 —M0—GATE—C/T—M1— M0
- GATE——门控位(为0时,将TRx置为1,可启动定时计数器。为1时,中断角INT0/1需为高电平)
- C/T——为0定时,为1计数
- M1M0——工作方式设置位(4种)
- 【高四位控制T1,低四位控制T0】
【心得】C51单片机_中断的更多相关文章
- C51 单片机的中断号以及中断向量
1.外部中断0. 1:分别由引脚/INT0./INT1的电平信号引起. 2.定时/计数器0.1:分别由T0. T1的溢出引起. 3.串行口发送.接收:发送完一个字节或接收到一个字节引起. 上述共5个中 ...
- C51单片机_day_01(定时器和中断系统)
c51单片机 51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片. 51是用c语言做为程序编程的语言 ——我对基本基础 ...
- MCS-51 单片机的中断系统
MCS-51 单片机的中断系统 MCS-51中断系统:5个中断源(两个外部中断, 两个定时器, 一个串口),2个优先级 中断相关概念 中断:当CPU正在处理某件事情时,单片机外部或内部发生的某一紧急事 ...
- C51单片机中data、idata、xdata、pdata的区别
C51单片机中data.idata.xdata.pdata的区别 data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata: 固定指前 ...
- C51单片机头文件和启动文件
STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 <reg51.h> //特殊寄存器的字节地址和位地址,sfr定义字 ...
- C51单片机中断实验
实验要求: 要求通过中断方式检测有无按键 判断哪个按键(编号0-9),并且在数码管上显示对应的0-9 代码部分 #include<reg51.h> char led_mod[]={0x3f ...
- 一种基于C51单片机的非抢占式的操作系统架构
摘 要:从Keil C51的内存空间管理方式入手,着重讨论实时操作系统在任务调度时的重入问题,分析一些解决重入的基本方式与方法:分析实时操作系统任务调度的占先性,提出非占先的任务调度是能更适合于Kei ...
- 利用C51单片机模拟SPI进行双机通信
SPI协议简述 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.由Motorola首创.SPI接口主要应用在 EEPROM,FLASH,实时时 ...
- 51单片机外部中断INT0实例(汇编程序)
;普中51开发板 ;单片机的P3.2(INT0)引脚与按键K3脚连接 ;用汇编语言实现:按一次K1外部中断INT0响应一次,LED显示值加1(十进制), ;前提是共阴数码LED第一位,需要设定,由P0 ...
- python学习记录_中断正在执行的代码,执行剪切板中的代码,键盘快捷键,魔术命令,输入和输出变量,记录输入和输出变量_
2018-03-28 00:56:39 中断正在执行的代码 无论是%run执行的脚本还是长时间运行的命令ctrl + cIn [1]: KeyboardInterrupt 执行剪切板中的代码 ctrl ...
随机推荐
- 解决VM虚拟机中IP或域名不能ping通
c4548abb-da65-4f7d-827f-e95dca25a13d 问题 无法ping通域名, 检查事项 确定在同一个子网,能访问DNS服务器. DNS服务器正确设置了正反向解析,且DNS服务器 ...
- LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没 ...
- Git&GitHub简介与入手(二)
四.GitHub 1.建账号,仓库 https://github.com/ 用邮箱在官网注册: 增加远程库的地址取别名为origin,push为推送,fetch为取回: 2.推送操作 将本地当前所在 ...
- 2021-10-08:填充每个节点的下一个右侧节点指针。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找
2021-10-08:填充每个节点的下一个右侧节点指针.给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找 ...
- OData WebAPI实践-与ABP vNext集成
本文属于 OData 系列文章 ABP 是一个流行的 ASP. NET 开发框架,旧版的的 ABP 已经能够非常好的支持了 OData ,并提供了对应的 OData 包. ABP vNext 是一个重 ...
- Kotlin难点
目录 高阶函数 双冒号 函数引用 类引用 属性引用 匿名函数 Lambda 表达式 例子 作用域函数 高阶函数 高阶函数是将函数用作参数或返回值的函数,还可以把函数赋值给一个变量. 所有函数类型都有一 ...
- js有关dom操作学习
dom对象就是操作网页的document dom节点: 整个文档是一个文档节点(document对象) 每个 HTML 元素是元素节点(element 对象) HTML 元素内的文本是文本节点(tex ...
- UART-UART非常见波特率调试应用笔记
UART非常见波特率调试 应用笔记 串口通信中的波特率选择,对于确保可靠的数据传输至关重要.波特率是衡量单位时间内传输的比特数,常见的波特率包括300.1200.2400.9600.115200等.不 ...
- SPI通信协议
1. SPI 通信协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设 备接口,是一种高速全双工的通信总线.它被广泛地使用在 A ...
- 【Python&GIS】GDAL栅格转面&计算矢量面积
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式.它 ...