微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机中断一直搞的不太明白

单片机中断一直搞的不太明白

时间:10-02 整理:3721RD 点击:
这个程序到底怎么理解,THO的数值怎么理解
void Timer0_isr(void) interrupt 1
{
TH0=0xfe;       
TL0=frq;     
SPK=!SPK;      
}

0xfe是指11111110,也就是高8位的初值是11111110.

你可以去看下汇编,中断就是执行了跳转指令,这个中断位置处写的中断函数,里面对计数值又赋了一下。这应该是16位计数器,你用的是8位单片机,所以寄存器都是8位的,把16位数据拆开,高的扔到THO,低的扔到TL0。“SPK=!SPK;”应该是需要执行的代码。个人见解,仅供参考。

你这样理解,1、计算机暂停正在执行的程序去执行别的程序,2、你附上的程序,是定时器0的中断程序,你这样理解,定时器是单片机内部钟表,它的值为0~65535,相当于表转一圈,现在你可以想象,你家的表转一圈,你就去喝杯水,那么,单片机也是这样,当单片机定时器从0~65535走一圈的时候,它就执行一次,你给他的中断函数,也就是你写的这个,那么如果你把你家的表实现设定一个时间,那么你喝水的时间就不是表走十二个小时的时间了,可能是6个小时,定时器也是这个道理,这就是初值的意义,在中断函数中需要不断重复对TH0 ,TL0进行赋值就是为了总是给他设定一个时间初值,理解了吗?

这个我能理解,谢谢,就是定时之后,一段时间后就跳转到SPK=!SPK;这个步骤了吧

嗯是的,一段时间后就跳转到中断函数里的语句

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top