单片机中段程序_80C51单片机中断的编程使用方法介绍
1、单片机中断:
找了一张 80C51 单片机的图如下:
其中,在 P3.2、P3.3 的位置,即 12 ,13 引脚处,标有 INT0 和 INT1,那两个引脚就是外部中断的输入。上面一个横杠代表低电平有效,给 P3.2、P3.3 赋值 0,就可以运行已经写好的中断服务程序。具体怎么用,还要熟悉一些中断寄存器的使用。
2、中断寄存器:
(1)、IE (Interrupt Enable):中断允许控制寄存器
EA (IE.7):EA=0 时,所有中断禁止(即不允许中断)
EA=1 时,各中断的产生由个别的允许位决定
ET2 (IE.5):定时器 2 溢出中断允许(8052 用,博主用的 STC89C54RD+ 也有)
ES (IE.4):串口中断允许(ES=1 允许,ES=0 禁止,下同)
ET1 (IE.3):定时器 1 中断允许
EX1 (IE.2):外部中断 INT1 中断允许
ET0 (IE.1):定时器 0 中断允许
EX0 (IE.0):外部中断 INT0 中断允许
(2)、IP (Interrupt Priority):中断优先级控制寄存器
PX0:外部中断 0 的中断优先级控制位,PX0=1,外部中断 0 被定义为高优先级中断;PX0=0,外部中断 0 定义为低优先级中断
PT0:定时器 T0 的中断优先级控制位,PT0=1,定时器 T0 被定义为高优先级中断;PT0=0,定时器 T0 定义为低优先级中断
PX1:外部中断 1 的中断优先级控制位,PX1=1,外部中断 1 被定义为高优先级中断;PX1=0,外部中断 1 定义为低优先级中断
PT1:定时器 T1 的中断优先级控制位,PT1=1,定时器 T1 被定义为高优先级中断;PT1=0,定时器 T1 定义为低优先级中断
PS:串口中断优先级控制位,PS=1,串口中断被定义为高优先级中断;PS=0,串口中断定义为低优先级中断
(暂时没用过,后续使用再更新)
(3)、TCON (Timer Control Register):定时器/计数器控制寄存器
这个寄存器在前面定时器里遇到过,再备份一下:
TF:定时器溢出标志,计数器溢出时硬件自动置位,即 TF=1,进入中断后再由硬件自动清除(TF=0)
TR:计数器的控制位
TR=1:计数器开始工作
TR=0:计数器停止计数
IE:外部中断 INT 的请求标志
当单片机检测到 INT 引脚上有下降沿时,IE=1 申请中断,进入中断服务程序时,硬件自动清除 IE 标志
IT:外中断触发类型控制
IT=1 时,外中断信号的下降沿触发 IE 标志
IT=0 时,外中断信号的低电平触发 IE 标志
3、中断的编程使用:
使用中断,就是说当发生某些事件的时候,运行“中断服务程序”,使用方法如下:
void TImer0_ISR(void) interrupt 1 using 1
{
/* 此处编写中断服务的具体内容 */
}
语句 interrupt x using y 是指:此函数作为“x 号中断”的“中断服务程序”,并且使用“y 号寄存器组”“传递参数”。
首先要清楚:80C51 单片机有 5 个中断源:2 个外部中断、2 个定时器中断(定时器 0 和 定时器 1)、1 个串口中断(8052 有 6 个中断源,多了一个定时器 2 中断),x 即为“中断号”:
上面的程序是定时器 0 的中断服务程序,因此是 interrupt 1;要是想按一个键进行中断,那么就是外部中断,因此是 interrupt 0 或者 interrupt 2。
关键字 using,用来指定中断服务程序使用的“寄存器组”。用法是:using 后跟一个 0 到 3 的数,对应着 4 组工作寄存器。一旦指定工作寄存器组,默认的工作寄存器组就不会被压栈,这将节省 32 个处理周期,因为入栈和出栈都需要 2 个处理周期。这一做法的缺点是所有调用中断的过程都必须使用指定的同一个寄存器组,否则参数传递会发生错误。顺便一提,默认使用 0 号寄存器组,即:不写 using y 就会默认 using 0,因为主程序使用 0 号寄存器组做参数传递。
补充:中断入口地址:
单片机中段程序_80C51单片机中断的编程使用方法介绍相关推荐
- 单片机中段程序_单片机外部中断详解及程序
单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态.比如一个电子时钟,它会按时.分.秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来 ...
- 单片机中段程序_单片机c语言中的一小段程序解读
函数名称:System_CalculateSolubility()函数功能:采样ADC0832的电压值,换算成浮点数溶度值*************************************** ...
- 小程序 sha1和服务器有关系吗,微信小程序使用sha1实现密码加密的方法介绍
微信小程序使用sha1实现密码加密的方法介绍,字符串,程序,转换为,详解,函数 微信小程序使用sha1实现密码加密的方法介绍 易采站长站,站长之家为您整理了微信小程序使用sha1实现密码加密的方法介绍 ...
- 用计算机控制单片机的程序编写,单片机程序编写步骤
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上.相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备.概括的讲:一块芯片就成了一台计算机.它的体 ...
- c语言单片机计时程序,C51单片机秒表计时(C语言)
<C51单片机秒表计时(C语言)>由会员分享,可在线阅读,更多相关<C51单片机秒表计时(C语言)(4页珍藏版)>请在人人文库网上搜索. 1.南开大学滨海学院C51嵌入式软件设 ...
- c语言51单片机延时程序,51单片机c语言延时.doc
1,_nop_() 适用于us级的少量延时 标准的C语言中没有空语句.但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果.这在汇编语言中很容易实现,写几个nop就行了. 在keil C51 ...
- 用Keil C编制单片机高级语言程序,KeilC单片机C语言与研究.doc
KeilC单片机C语言与研究.doc KeilC单片机C语言应用研究 系 别 计算机系 专 业 计算机科学与技术 姓 名 刘志远 指导教师 张连生 Keil C单片机C语言应用研究 刘志远 (太原师范 ...
- 用计算机控制单片机的程序编写,单片机初学者必须掌握的基础内容
原标题:单片机初学者必须掌握的基础内容 未知!很恐怖!西红柿最初被人们称之为"狼桃"然后是----'情人果'------最后才是成为餐桌上的美食"番茄"! 汽车 ...
- cad展点kszd小程序_cad实现批量展坐标点方法介绍
cad中是没有直接批量展点的方法,不过通过一些方法是可以实现批量展坐标点的.本经验将介绍其中一种,利用cad的复制功能,指定插入点为要展的坐标点,从而实现批量展点.步骤如下: 工具/原料 1.画一个指 ...
- 单片机的延时与中断问题及解决方法
延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了MCS-51系列单片机.MSP430单片机.C51单片机.8051F的单片机.avr单片机.STC89C52. ...
最新文章
- 综述 | 三大路径,一文总览知识图谱融合预训练模型的研究进展
- linux的零碎知识
- 一块钱买一瓶水,两个空瓶换一瓶水,三个瓶盖换一瓶水,现在有20块钱,一共可以喝多少瓶水?
- Lesson_7 上课笔记_1 ----static关键字和导包
- 全套学习!mysql命令窗口执行sql文件
- 极客大学产品经理训练营:数据分析 第16课总结
- 国内外php主流开源cms汇总
- 输入两个电阻的值a和b,求它们并联和串联的电阻值。求并联电阻公式:a*b/(a+b),求串联的公式为:a+b。
- office服务器草稿位置,精确定位图片在Word文档中的位置的操作方法
- Calendar代替Date类获取当前年月日,getYear,getMonth,getDay
- NoSql的四大类型
- 融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法-附代码
- 直接修改class文件的方式
- 任务签到表(2006.11.20)
- 企业在线ERP系统与内控控制因素管理
- android:浏览器添加书签
- 在MT6572平台上,怎样把已做好的签名编译成到apk中?
- 问题:xls文件如何转成vcf联系人导入手机
- 反射(com on com on gogogo!!!)
- CSNET上网图文使用教程