C语言中断/定时的疑问?

如图,我对程序运行的理解:mian开始,定时的50mS到了就跳到中断函数里,中断函数重新赋值50mS,但此时的count不是等于0吗,那它就不执行这个if函数了,就相当于... 如图,我对程序运行的理解:mian开始,定时的50mS到了就跳到中断函数里,中断函数重新赋值50mS,但此时的count不是等于0吗,那它就不执行这个if函数了,就相当于这个中断函数就只进行了50mS。问题1:程序进入while(1)后不是会一直在里面执行吗,那不是相当于中断函数运行一次结束后就不执行中断了吗,那它(这是个简易秒表)后面又怎么实验1S定时的?问题2:这个程序是怎么个运行顺序?请详细讲解一下。 展开
 我来答
shine1991
科技发烧友

2022-06-25 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

中断函数是不需要额外通过代码调用的

当中断条件满足,单片机会打断当前执行的语句,跳转到中断函数,然后执行完中断函数后,再次返回之前被打断的语句继续执行

中断函数中,每次都会对定时器重新初始化,即头两句对TH1和TL1的赋值,这样每50ms会再次进入一次中断函数.每20次进入中断,即经过了1秒,然后对全局变量miao自增1

而main函数则是不断对变量miao进行输出

更多追问追答
追问
一:count不是也是全局变量自增1吗,那它不是不满足中断函数if函数吗,为什么不是50mS而是20次(1S)进入中断?(第一遍开始程序的执行顺序是怎样的?)
二:当程序执行完一边时,程序不是从while(1)里面开始执行了吗,那它是怎么再进入中断的?(第二遍开始程序的执行顺序是怎样的?)
追答
定时中断触发的条件是定时器1的TH1和TL1计数累加满0xff,而根据初值的设置导致每50ms会自动触发一次定时中断,和全局变量count的值无关

你这是根本就不理解单片机硬件中断的原理
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式