完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
ORG 0000H AJMP START ORG 000BH AJMP tiME0 ORG 0030H START: MOV P1,#0FFH MOV TMOD,01H MOV TH0,#15H MOV TL0,#0A0H SETB EA SETB TR0 SETB ET0 SJMP $ LOOP: AJMP LOOP TIME0: PUSH ACC PUSH PSW CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H POP PSW POP ACC RETI END 困惑的问题就是 当RETI中断返回后,它返回的是哪个语句,返回到哪里。。。 |
|
相关推荐
7个回答
|
|
这段代码中RETI是定时器中断返回,他是定时器溢出触发的中断,它返回的不是固定语句。他返回的是触发中断的下一跳语句。例如主程序运行到一条语句LOOP1的时候,定时器刚好溢出了,触发中断,那么他返回的就是这条语句的下一条语句。至于每次返回在什么地方就要看他每次运行到哪里刚好定时器触发中断。
|
|
|
|
还是不太明白,可不可以拿我写出来的程序讲解一下 |
|
|
|
你还有有点不理解中断的概念,他和函数返回是不一样的,函数返回是返回到调用它的地方,而中断是不确定在什么时候时候触发的。主程序运行到哪里刚好中断,那个执行完中断后就返回到哪里。你程序因为SJMP $这条语句,程序一直运行在这里,因此中断返回都返回到这里。例外LOOP: AJMP LOOP这条语句不要,他和SJMP $是一样的意思,运行不到这里的。
|
|
|
|
我写的那个例子,如果中断结束后,程序又重新计时开始了么?定时计数器自动重新开始的么? |
|
|
|
本帖最后由 依然落叶飘零 于 2014-5-9 13:45 编辑
楼主还是对中断的概念有点不理解。首先单片机CPU是执行程序的指令,而定时器计数是不占用CPU的,也就是只要有时钟脉冲定时器计数就加1.说定时器计数是不需要通过运行程序的,只要有时钟脉冲他就自动计数。定时器计数的时候主程序就一步步运行,定时器对他没有影响。 例如CPU在看电影,定时器就是闹钟,当定时器计数满了的时候他就向CPU发送一个中断请求,就是闹钟响了,对CPU说“嘿,该吃药了”,然后定时器又重新计数。等到下一次溢出。CPU接收到定时器的中断请求后,也就是说CPU“知道了,真烦”,于是CPU暂停主函数去执行中断函数,就是CPU按了一下暂停按钮去吃药了(药不能停 ![]() 也就说你想问我CPU吃完药后回去看电影从第几分钟开始看,我只能说“鬼知道他刚才看到哪里了,他看到第几分钟闹钟响,那他就从第几分钟接着看啊”。 希望你对定时器中断有个深入的了解。我是不是可以写小说了? ![]() |
|
|
|
看电影和吃药有趣,看完之后茅塞顿开! |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
126 浏览 0 评论
【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开发板简介与上电测试
269 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之传参
441 浏览 0 评论
【xG24 Matter开发套件试用体验】点灯之后的UART测试
509 浏览 0 评论
【xG24 Matter开发套件试用体验】第一个LED测试工程
435 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11005 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-7 04:14 , Processed in 0.702101 second(s), Total 52, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191