搜索
bottom↓
回复: 15

定时中断,搞不懂。初学者。

[复制链接]

出0入0汤圆

发表于 2012-4-11 23:55:31 | 显示全部楼层 |阅读模式
[img][/img][img][/img]其实原理是知道的。但是在程序里面的运行流程,过程是怎样的有点含糊。你们看看这个图片里面的程序我看的懂。意思也理解一点。也知道那个原理意思;就是说在做主程序时突然计数器溢出就执行中断函数,中断函数做完后再返回刚才主程序断点的地方又开始做、我虽然知道这些,但是还是迷糊的很、、、迷迷糊糊的。。执行完中断函数后是否返回到主程序我好想听说不再执行主程序其他的,就是从断点开始运行。我是想问TMOD EA ET0 TR0 这些是否都要运行一边啊?我的意思是想问问中断函数做完后是否还要运行一遍TMOD EA ET0 TR0 这些东西。
我希望个位老师们为我细细解说一下。我就要知道流程过程。。好想知道。、、详细详细,。,。。麻烦把程序运行过程说三次以上、、、不然我还是不明白的。麻烦啦。。好急好急啊、、、一直被困扰着 虽然很多网友都为我解释啦。但还是有点生。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-12 00:51:24 | 显示全部楼层
单步调试,你就懂了

出0入0汤圆

发表于 2012-4-12 01:29:59 | 显示全部楼层
不要太钻牛角尖 , 就像被规定水杯满时 , 一定要去把水喝掉 .
你讲的那些 , 只是确定你要把水阀打开 , 也确定要有水 , 你才能一杯一杯的喝 .
你喝完时又没把水阀关掉 , 干麻在开水阀 ?

出0入0汤圆

 楼主| 发表于 2012-4-12 14:16:48 | 显示全部楼层
我的问题很幼稚吗?怎么都没人说说啊,起码多说点我也可以多看点嘛!

出0入0汤圆

发表于 2012-4-13 21:01:44 | 显示全部楼层
“中断函数做完后是否还要运行一遍TMOD EA ET0 TR0 这些东西”
不用,这个中断是从哪里被打断就再回到哪里,所以完成后会再回到while(1)

出0入4汤圆

发表于 2012-4-14 04:17:21 | 显示全部楼层
以前开到个很经典的中断解释。
把大象放冰箱:打开冰箱门---把大象放进去---关闭冰箱门。中断就是你在做任何一步时,老婆打电话来了,不接电话会引起家庭问题,所有要优先接老婆电话(优先级),接完电话在接着原来的顺序把大象放冰箱。打开冰箱门---老婆来电话(中断)---执行老婆下达指令(中断处理)---老婆的人物做完回来放大象(中断返回并执行原任务)---关闭冰箱门

出0入0汤圆

发表于 2012-4-14 07:48:00 | 显示全部楼层
程序的注释已经很清楚了。不知楼主是怎么学习的。要多做实验,再不济就在keil仿真运行试试。
主程序while(1)前面的语句只执行一遍,负责定时器的初始化及打开中断,这个只要执行一次就够了。
主程序运行到while(1)进入死循环,等待定时器的中断。50ms定时到,定时器发出中断请求,CPU收到该请求,就会中断当前的while(1),并将断点地址入栈,然后转到对应的中断入口,再跳到中断服务程序。
由于是C语言编程,有关的断点地址入栈、跳转到中断服务程序,从程序里你是看不到的。
目前你知道定时器中断请求发生,CPU响应并停止当前的while(1), 跳到T0_time(), 就行了。在中断服务程序结束后CPU会返回到while(1),继续那个断点运行(断点地址是从栈里弹出的),等待下一次的定时器中断。

出0入0汤圆

发表于 2012-4-14 07:53:42 | 显示全部楼层
你喜欢每次都执行,也不会有问题的

出0入0汤圆

发表于 2012-4-14 09:29:25 | 显示全部楼层
初始化原则上执行一次,除非有特殊的需求,如抗干扰等。这里的定时器初始化如果每次中断后都执行一次,会影响定时精度的。

出0入0汤圆

发表于 2012-4-15 13:53:55 | 显示全部楼层
他们不会再执行第二次了,它们只会执行一次,因为你程序里面有while(1)语句,所以当所有语句执行完以后程序只会停留在while(1)语句这里循环。并且,即使是你把while(1)语句去掉,它们也只会是执行一次,除非你把那些语句放在while(1)语句里面,那么它们就会跟着while(1)语句在那里循环。

出0入0汤圆

发表于 2012-4-15 16:42:28 | 显示全部楼层
我遇到这种问题,好晕

出0入0汤圆

发表于 2012-4-15 18:37:43 | 显示全部楼层
麻烦把程序运行过程说三次以上、、、不然我还是不明白的。


dense, very dense.

出0入0汤圆

发表于 2012-4-15 23:47:57 | 显示全部楼层
初始化完成后就不用再管它了
除非你有别的特殊用途
才需要再次改变它

出0入0汤圆

 楼主| 发表于 2012-4-18 13:37:41 | 显示全部楼层
millwood0 发表于 2012-4-15 18:37
dense, very dense.

什么意思啊??

出0入8汤圆

发表于 2012-4-18 14:36:20 | 显示全部楼层
yesno 发表于 2012-4-18 13:37
什么意思啊??

愚钝的意思

出0入0汤圆

 楼主| 发表于 2012-4-18 20:03:11 | 显示全部楼层
如果 发表于 2012-4-18 14:36
愚钝的意思

你好聪明。可以不拉
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 00:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表