首页 > 编程知识 正文

51单片机定时器中断函数,单片机定时器程序详解

时间:2023-05-04 19:24:34 阅读:112224 作者:4996

1 .中断的概念

当CPU处理一个事件a时,发生另一个事件b并请求CPU快速处理(发生中断);

CPU暂时中断当前工作,处理事件b (中断响应和中断服务);

在CPU处理事件b之后,返回原始事件a中断的位置并且继续处理(中断并返回)事件a的过程被称为中断。

2 .中断优先级

51单片机共有5个中断源,分别为外部中断0、定时器0、外部中断1、定时器1、串行中断,中断优先级从大到小分别为0、1、2、3、4。

3 .中断的好处

分时操作。 CPU可以分时服务于多个I/O设备,提高了计算机的利用率

实时响应。 CPU可以及时处理APP应用系统的随机事件,大大提高了系统的实时性;

可靠性高。 CPU具有处理设备故障和停电等突发事件的能力,提高系统的可靠性。

4 .外部中断

外部中断0定义为P3.2端口,外部中断1定义为P3.3端口

TCON的中断标志(控制寄存器) :

it0(TCON.0 )、外部中断0触发方式控制位。

IT0=0时,为电平触发方式。

IT0=1时,为边缘触发方式(下降沿有效)。

ie0(TCON.1 )、外部中断0中断请求标志位。

it1(TCON.2 )、外部中断1触发方式控制位。

ie1(TCON.3 )、外部中断1中断请求标志位。

tr0(tcon.4 ) T0运行控制位,其功能与TR1类相同。

TF0(TCON.5 )、定时器/计数器T0溢出中断请求标志位。

tr1(tcon.6 ) T1运行控制位。 当TR1被设置为1时,T1开始操作; 当TR1变为0时,T1停止工作。 TR1通过软件设置为1或0。 因此,可以通过软件控制定时器/计数器的启动、停止

TF1(TCON.7 )、定时器/计数器T1溢出中断请求标志位。

外部中断初始化:

voidbsp_int0_init(void ) /外部中断0 ) it0=1; //使边缘触发方式为0是电平触发方式EX0=1; //打开外部中断,在中断寄存器中EA=1; //打开总中断(voidbsp_int1_init ) void )//外部中断1 ) it1=1; EX1=1; EA=1; }voidISR_int0(void ) interrupt 0//中断处理函数({ P1=0x55; }voidISR_int1(void ) interrupt2) P1=0xaa; )5.计时器中断

动作模式寄存器TMOD :

GATE :门控。 GATE=0时,通过软件将TCON的TR0或TR1设为1,就可以启动计时器/计数器动作; GATA=1时,必须在软件中将TR0或TR1设为1,设为外部中断端子或高电平,才能开始计时器/计数器动作。 也就是说,在这种情况下,启动计时器需要多一个条件。 (默认情况下等于0,因此请不要设置。)

C/T :定时/计数模式选择位。=0是定时模式;=1是计数模式。

M1M0:动作模式设定位。 定时器/计数器有4种动作方式,用M1M0设定。 (正常时的自旋方式1,即M1M0=01 )。

中断寄存器:

EA总中断

ET0是计时器0中断

EX0是外部中断0

ET1是计时器1中断

EX1是外部中断1

voidtimeR0_init(void ) { TMOD |=0x01; //将计时器设为动作模式1 C/T比特为1时为计数器模式,为0时为计时器模式,高位4比特为计时器1,低位4比特为计时器0TL0=(65536-1000 ) ) 6; //初始值,低8位th0=(65536-1000 )/256; //前8位ET0=1; //接通计时器中断TR0=1; //接通定时器EA=1; //打开总中断(voidtimeR0) void (interrupt1) TL0=) 65536-1000 ) %6; //加入初始值,后8位//初始值为1000即1msth0=(65536-1000 )/256; //高8位count; if (计数==1000 ) {计数=0; LED=~LED; //LED每秒闪烁一次}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。