51单片机protues仿真学习:[18]中断概念

2025-05-09 14:42:34

PU在处理A发生了B,请求CPU去处理中断发生

处理过程:中断请求------中断响应-----中断返回

52单片机有6个中断源:

1.INT0,INT1外部中断0和1,有P3.2和P3.3端口引入,低电平和下降沿引起。

2.T0T1T2定时/计数器中断,有计数器计满回凌引起

3.TI/RI串行口中断,串行端口完成一帧字符发送/接收引起

51单片机protues仿真学习:[18]中断概念

初值问题:

以--0-----1----方式1,为16位定时器/计数器为例假设时钟频率为12MZH

12个时钟周期为1个机器周期,如果此时机器周期为1us的话,计满TH0和TL0的话就需要2的16次-1个数,在加一个数计数器就溢出,向CPU申请中断,因此65536us=65.536ms,如果要50ms的话,先给TH0和TL0装一个初值,,计满50000个数后定时器溢出,此时刚好就是50ms中断一次,我们定时1S的话,产生20次50ms就是1S

要计满50000个数的

TH0=(65536-50000)/256求模

TL0=(65536-50000)%256求余

总结如下:当定时器方式为1时,假设机器周为Tcy,定时器产生一次中断的时间为t,需要计数的个数为N=t/Tcy

THX=(65536-N)/256

TLX=(65536-N)%256

中断服务程序的写法:

void函数名()interrupt中断号using工作组

{

中断服务程序内容

}

中断函数不能返回任何值,所以最前面用void

定时器程序初始化过程如下:

1,对TOMD赋值,以确认T0和T1的工作方式

2,计算初值,并将初值写入TH0,TL0或TH1,TL0

3,中断方式时,对IE赋值,开放中断

4,使TR0或TR1置位,启动定时器/计数器定时或计数

最关键就是下面三句话

使用中断:你要做什么?

1.你想使用中断是哪个?选择相应的中断号

2.你所希望的触发条件是什么?

3.你希望在中断之后干什么?

补充

检测定时器溢出标志位法

1,对TOMD赋值,以确认T0和T1的工作方式

2,计算初值,并将初值写入TH0,TL0或TH1,TL0

3,通过设置TCON来启动定时器,让其计数

4,判断TCON寄存器TFX(01)位,检测定时器的溢出情况

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢