社区
单片机/工控
帖子详情
51单片机中一个定时计数中断如何使用多个中断程序(C语言)
nihs2008
2010-09-30 02:21:05
51单片机中有二个定时/计数中断,其中一个已使用.另一个我想定义多个中断例程,如:
void timer_0() interrupt 1 using 3
void timer_1() interrupt 1 using 2
void timer_2() interrupt 1 usring 1
其中中断程序的中断时间及程序内容是不同的.
在主程序中,想要根据不同情况,使用不同的中断程序.应如何处理.请大师们指教
使用的是C语言编程.
...全文
2651
4
打赏
收藏
51单片机中一个定时计数中断如何使用多个中断程序(C语言)
51单片机中有二个定时/计数中断,其中一个已使用.另一个我想定义多个中断例程,如: void timer_0() interrupt 1 using 3 void timer_1() interrupt 1 using 2 void timer_2() interrupt 1 usring 1 其中中断程序的中断时间及程序内容是不同的. 在主程序中,想要根据不同情况,使用不同的中断程序.应如何处理.请大师们指教 使用的是C语言编程.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nihongsheng
2011-03-20
打赏
举报
回复
1
在中断服务程序中设置不同的case,在主程序中设置不同状况的变量,开然后开中断,在中断服务程序中根据不同情况调用不同case,很简单
远上寒杉
2010-10-01
打赏
举报
回复
实现这个最好仿照μC/OS的做法,用闲置的定时器设定一个TimeTick()函数,每一个比较小的时间t调用一次;另外设置一个链表存放定时数和调用函数地址,设定Delay()函数用来给这个链表添加项目。每调用一次TimeTick则遍历一次链表,将所有定时值减1,减到0的调用返回函数。
这样做的缺点是定时值不能足够精确。
另外,C51也有实时操作系统,如果系统比较复杂使用操作系统也是个不错的选择。
Corepy
2010-09-30
打赏
举报
回复
【参考】
http://www.eefocus.com/article/10-06/1623741276165827.html?sort=1111_1125_1480_0
多中断处理注意的问题
1)要处理多路中断问题,中断处理程序的算法大体上可以分为两类:弱中断优先级(使用CALL和RETURN方式)和强中断优先级(使用GOTO方式)。
2)如果同时发生多个中断请求,则中断处理的顺序取决于中断程序中的检查中断源的顺序。
3)若要防止中断请求被丢失,则要注意下面两种情况:如果同一中断源的中断发生间隔时间小于该中断服务的处理时间,则可能出现中断事件被忽略(体现在中断服务的过程中,标志位被连续发生了两次置位),例如:中断事件发生的时间间隔为30ms,中断服务处理加上跳转判断的时间为50ms,则情况将会如下所示:
[中断次数______1][中断次数______2][中断次数_____3][中断次数_____4]
[处理次数______1][处理次数______2][处理次数_____4]
如果在中断处理一开始就清除IF,那么如上图所示,中断事件3、4在处理次数2的过程中发生了两次,那么即使IF清除发生在中断次数3发生之前,也将丢失第三次中断。
另外,即使中断出现的时间间隔大于中断服务的时间间隔,如果清除中断标志位的指令安排在中断服务子程序的尾部,就有可能造成丢失该中断请求(即两次中断标志置位的事件只对应一条清除指令和一次中断处理),也就是如果清除中断标志位的指令安排在中断服务程序的尾部,就有可能丢失响应在处理中断期间该中断源第2次中断请求的机会。
4)为了能够编写好一个简洁的中断程序,应抓住中断的特点是具有实时性,针对实时中断数据采集系统,也就是中断的特点在于数据的采集。因此在中断程序中只应该处理数据采集和标志位的设置,而将数据的处理放在中断之外,由主程序通过循环检测执行数据处理工作,具体做法:先开辟一个“储存缓冲区”,作为采集来的数据的传递媒体,即存储采集数据,等待主程序的处理;中断程序负责数据的采集,并且将采集来的数据值赋给“存储缓冲区”;主程序通过条件循环语句反复检测“存储缓冲区”情况,及时处理采集信息。这样在处理方法既能有效的实现中断的功能,又可以极大的缩减每个中断的时间,提高整个程序的反应速度。
5)对于中断响应和处理时间有严格要求的应用,保护现场的指令安排也应考虑延时问题。
6)在进行查表操作时必须禁止CPU响应中断。以避免中断返回时跳转到不希望的地址上去。
Corepy
2010-09-30
打赏
举报
回复
中断嵌套?
51单片机
的
定时
器与
计数
器
难的东西学不会是因为简单的知识没学好 基础不牢,地动山摇 1.0 1.0.1
定时
器 (1)
51单片机
的
定时
器是
一个
内部外设。 (2)
定时
器相当于CPU的
一个
“闹钟”。 (3)
定时
器是用
计数
器来实现的。 1.0.2
计数
器 (1)
计数
器可以
计数
外部脉冲的个数. (2)脉冲:(个人理解)单片机
中
一个
低电平跳变成高电平在回到低电平的这么
一个
过程就称为
一个
脉冲。 1.0.3
定时
器是如何工作的 (1)第一步:...
【毕设论文】基于
51单片机
的超智能鞋柜设计
该系统按键模块设置了6个按键,6个按键分别通过与单片机的6个I/O口连接,独立工作,在此电路
中
,按键输入采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平,(STC89C52 的P1口内部接有上拉电阻),把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口,通过按键与地相连,变成低电平,
程序
一旦检测到I/O口变为低电平,则说明按键被按下,然后执行相应的指令。
单片机-初学-1
说明: 知识与经验: 参考网址: https://blog.csdn.net/qq_29350001/article/details/52241802 Keil uVision4
使用
总结 ====================================== 项目目标 通过构造单片机开发环境,了解单片机开发系统结构和流程。 建议学时 4学时 ...
蓝桥杯单片机学习笔记02
你正在追电视剧,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程
中
,门铃又响了,你暂时放下电话,去把门打开。如果追电视剧是在执行主
程序
,那么电话就是
中
断
源,电话铃响了就是
中
断
请求,暂停电视就是现场保护,接电话就是
中
断
响应,门铃响了是更高一级的
中
断
请求,去把门打开,那就是
中
断
嵌套。开完门回来接着聊电话,那是
中
断
返回,接完电话把电视剧暂停打开是现场恢复。轮询和
中
断
。轮询的方式看似公平,但实际的工作效率很低,且不能及时响应紧急事件;而
中
断
系统使得内核具备了应对突发事件的能力。
单片机(MCU)最强科普(万字总结,值得收藏)
MCU是Microcontroller Unit 的简称,
中
文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、
计数
器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。http://www.makeru.com.cn/live/1392_401.html?s=144282 一、单片机发展简史单片机
单片机/工控
27,382
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章