单片机程序什么作用啊 尤其是X++作用 定时器中断作用是什么呢?

2024-11-29 04:01:29
推荐回答(1个)
回答1:

x应该是一个全局变量,每次中断函数都会将x加1,程序的其余函数会扫描x的值来做出相应的动作,
interrupt 1 是计时器中断,这里应该是用一个全局变量计时,main函数或者其他中断函数检查x的数值做到定时的响应,如闪灯或者屏幕刷新又或者PWM输出 ,

定时器中断的作用是在CPU运行期间 ,定时器在不干扰CPU正常运行的情况下不停地将自身寄存器(从你的函数初始化看是TH0和TL0并起来的一个16位值)减一,当寄存器值为0时候发起中断(从1减去1开始到寄存器值为0之间发起的),这样可以做到CPU不用一直等待一个时间的到来而空转,或者运行一个程序的过程中计算运行的时间并定时插入一个额外的工作,
C51的计时器有4个工作模式(对于At89S51或者STC89C52及以上型号来说)不同的模式有不同的功能,这个百度文库能看到的,另外TMOD寄存器和其他寄存器还设定了计时器是外部的跳变信号或者单片机内部时钟来引起计时器的一次减1动作(计时动作)。
另外计时器可以设置为外部输入模式,这样就能作为计数器,比如说一个外接的按键,按10次后才触发中断,如果用外中断处理,那么整个主函数会被中断九次做无效中断才能等到第十次按键执行需要的中断处理动作。

这一点在操作系统中也用到了,比如我们的PC的多任务操作系统,就是用时钟中断来把一个程序中断执行另一个程序(比如操作系统和应用程序间)实现了时间片轮转,不过PC的操作系统把所有的中断处理函数都包含进去了,所以我们基本不用去管硬件中断就能编程。 反观单片机,因为资源有限,想要做到多任务(主函数与各个中断函数及其子函数)必须用定时器(也可以通过外部信号做计数器)以及外中断作为契机来切换多个任务。

如果需要解答整个中断函数的功能,最好把全部的程序都帖出来,因为x这个全局变量的作用没有在中断函数中体现

有问题可以继续跟我交流,我现在是大学本科生,学过C51单片机,正在学STM32