【心得】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 ...
随机推荐
- 2023 Hubei Provincial Collegiate Programming Contest题解 C F H I J K M
补题链接:https://codeforces.com/gym/104337 原文链接:https://www.eriktse.com/algorithm/1136.html M. Different ...
- FreeSWITCH对接vosk实现实时语音识别
环境:CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.2 一.背景描述 vosk是一个开源语音识别工具,可识别中文,之前介绍过python使用vosk ...
- 聊一聊 Valgrind 监视非托管内存泄露和崩溃
一:背景 1. 讲故事 只要是程序总会出现各种莫名其妙的问题,比如:非托管内存泄露,程序崩溃,在 Windows 平台上一般用微软自家的官方工具 App Verifier 就可以洞察,那问题出在 Li ...
- Java并发(四)----线程运行原理
1.线程运行原理 1.1 栈与栈帧 Java Virtual Machine Stacks (Java 虚拟机栈 JVM) 我们都知道 JVM 中由堆.栈.方法区所组成,其中栈内存是给谁用的呢?其 ...
- 2023-05-06:X轴上有一些机器人和工厂。给你一个整数数组robot,其中robot[i]是第i个机器人的位置 再给你一个二维整数数组factory,其中 factory[j] = [posit
2023-05-06:X轴上有一些机器人和工厂.给你一个整数数组robot,其中robot[i]是第i个机器人的位置 再给你一个二维整数数组factory,其中 factory[j] = [posit ...
- SqliLabs 第二关 ,数字型注入!!!
首先打开网页,进行注入点的测试 输入?id=1 and 1=1发现1=2的时候出现了报错,说明服务器接收了我们的指令,并且进行了反馈,说明了有注入点的存在,然后对注入点进行测试 然后输入order b ...
- 2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个
2022-11-30:小红拿到了一个仅由r.e.d组成的字符串 她定义一个字符e为"好e" : 当且仅当这个e字符和r.d相邻 例如"reeder"只有一个&q ...
- 2021-07-14:接雨水。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2021-07-14:接雨水.给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 福大大 答案2021-07-14: 左右指针向中间移动.左指针是左边柱 ...
- Github Copilot Chat 初体验
最近因为阳了的缘故一直躺在床上.今天终于从床上爬起来了.不是因为好透了,而是因为我收到了申请Copilot Chat preview 权限通过的邮件.实在忍不住,于是起床开电脑在咳嗽声中进行了一番体验 ...
- 2020-06-11-ASP.NET Core Blazor 子组件父组件数据同步的问题
上一篇写数据绑定的文章,写到最后留了一个坑.当子组件绑定父组件的一个字段,并且子组件修改它的时候父组件不能实时进行同步更新UI的问题,最近终于在Blazui作者的指导下搞定了. UserInfo类要实 ...