51单片机中断的理解?
请教下51单片机的中断问题,把TMOD和TCON,IE寄存器的作用都了解了,执行中断需要操作什么位都了解了,但是就是不知道这个中断的意义何在啊,数码管显示通过位移函数和延...
请教下51单片机的中断问题,把TMOD和TCON,IE寄存器的作用都了解了,执行中断需要操作什么位都了解了,但是就是不知道这个中断的意义何在啊,数码管显示通过位移函数和延迟函数就可以显示和控制时间,写个中断是什么意思啊?那个高手可以给个具体的例子啊?
想了下,是不是这样?
我想我控制数码管显示,2S变化一次,先使用延迟函数可以得到目的,CPU会单独计算2S是多久,然后才变化;我用中断控制,或者说就是让板子本身的机器周期去核算多少个机器周期是2S,然后在回到主程序继续运行?是不是这个道理呢? 展开
想了下,是不是这样?
我想我控制数码管显示,2S变化一次,先使用延迟函数可以得到目的,CPU会单独计算2S是多久,然后才变化;我用中断控制,或者说就是让板子本身的机器周期去核算多少个机器周期是2S,然后在回到主程序继续运行?是不是这个道理呢? 展开
1个回答
展开全部
如果你单就是让单片机显示数码管的数字用不用中断都无所谓,但是普遍来讲,单片机都是有主要任务的,而显示只不过是人机界面而已,在一个中大型程序里显示不能算主要任务。那么这个时候就不能在用延时来显示了。
CPU在一个单位时间内只能做一件事,我们看CPU那么强大是因为他做事非常快,以至于我们误认为他是同时在做很多事。在延时程序中,CPU啥事都不干,就光等着,在等的时候是不会执行下一条命令的。但是利用定时器中断就不一样了。定时器是硬件实现的,因此和CPU是异步的,如果利用定时器让cpu在每时间t后的定时器中断里做一件事,在这个时间t内cpu是可以做其他事的,不然怎么叫异步呢?
再回来看你这个问题,我们假设这个单片机是产生PWM脉冲控制电机的,同时利用lcd做显示,很明显只能使用定时器利用中断使输出脚每次取反。因为如果你用延时,那么在执行显示模块的时候,执行显示的期间,会延长pwm引脚的电平时间,你的pwm脉冲就走样了。正确的做法是,每次要显示的数值变化时触发标志位,然后main函数不断循环对比标志位是不是1,如果是1则进入lcd显示的程序。因此主程序根本就没有pwm的任务,pwm的生成全权交给了定时器。
再举一个例子,假设有一个急停按键,利用外部中断,当按下这个按键,执行器立即停止。利用中断自然啥事没有。如果不用中断,靠程序本身的大循环那我就呵呵了,如果这期间一个命令要用3s的时间,那你的急停按键按下后要3s才能让cpu停止执行器,已经没有急停的意义了。
CPU在一个单位时间内只能做一件事,我们看CPU那么强大是因为他做事非常快,以至于我们误认为他是同时在做很多事。在延时程序中,CPU啥事都不干,就光等着,在等的时候是不会执行下一条命令的。但是利用定时器中断就不一样了。定时器是硬件实现的,因此和CPU是异步的,如果利用定时器让cpu在每时间t后的定时器中断里做一件事,在这个时间t内cpu是可以做其他事的,不然怎么叫异步呢?
再回来看你这个问题,我们假设这个单片机是产生PWM脉冲控制电机的,同时利用lcd做显示,很明显只能使用定时器利用中断使输出脚每次取反。因为如果你用延时,那么在执行显示模块的时候,执行显示的期间,会延长pwm引脚的电平时间,你的pwm脉冲就走样了。正确的做法是,每次要显示的数值变化时触发标志位,然后main函数不断循环对比标志位是不是1,如果是1则进入lcd显示的程序。因此主程序根本就没有pwm的任务,pwm的生成全权交给了定时器。
再举一个例子,假设有一个急停按键,利用外部中断,当按下这个按键,执行器立即停止。利用中断自然啥事没有。如果不用中断,靠程序本身的大循环那我就呵呵了,如果这期间一个命令要用3s的时间,那你的急停按键按下后要3s才能让cpu停止执行器,已经没有急停的意义了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询