资讯详情

51单片机学习记录(三)中断系统

文章目录

  • 1.介绍中断系统
    • 1、中断概念
    • 2.中断相关寄存器
    • 三、中断服务函数
  • 2.定时器中断
    • 1.单片机中的时序
    • 2.51单片机定时器
    • 3.相关寄存器
    • 4、定时器配置
    • 5.定时器配置
  • 3、串口中断
    • 1.串口中断相关寄存器
    • 2.波特率计算

注:以下内容参考普中科技51单片机教程

1.介绍中断系统

1、中断概念

首先是中断系统的过程,即中断后的处理过程: 在这里插入图片描述 相关概念,下面例举一些后面可能出现的概念,可能会在后面出现的:

  • 中断源:引起CPU中断的因素
  • 中断优先级:同时有多个CPU多个中断源根据中断优先级排队(高优先级打断低优先级中断会导致嵌套中断

51单片机上的中断系统可总结为:

这里需要注意的是,外部中断2和3以及定时器2中断不一定有一些51。这里需要谨慎使用。这里有四个中断优先级(几乎只有两个中断优先级)

普中还提供了相关的中断查询表

如果设定的中断优先级相同,则中断执行的顺序应根据下表中相同优先级的查询顺序确定:

2.中断相关寄存器

这里51单片机对中断的控制叫做允许寄存器中断IE为了控制,这里也用普中给出的图片来看 相关位置说明如下:

打开中断请求后,需要读取中断请求标志寄存器为TCON,如下所示: 相关位置说明如下:

  • 当 IT0=0 时, 电平触发法 当 IT0=1 时, 边缘触发法(下降边缘有效)

以下是中断优先级和中断号: 中断号如下: 综上所述,所有的中断过程所有过程,所以我们需要回应我们的中断:

  • 中断源设置中断请求
  • 中断源中断允许被触发
  • 总中断开启(EA=1)

三、中断服务函数

如果我们在中断函数中编写外部中断函数,配置如下 exit0()是函数名, 可自定义, 但必须符合 C 语言标识符合定义规则,interrupt 是关键词, 表示 51 单片机中断。 后面的“0” 是中断号, 外部中断 0 中断号为 0, 这个可以参考前面的内容。 前面已经介绍了相关寄存器的说明,可以向上查看源代码如下:

void exit0_init(void) { 
             IT0=1; //下降沿触发     EX0=1; //int0中断打开     EA=1; ///打开总中断 } void exit0() interrupt 0 ////外部中断0的中断服务函数 { 
             if(KEY3 == 0)         LED1 = !LED1; } 

2.定时器中断

1.单片机中的时序

  • 振荡周期: 为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) 。
  • : 2 个振荡周期为 1 个状态周期, 用 S 表示。 振荡周期又称 S 周期或时钟周期。
  • : 1 个机器周期含 6 个状态周期, 12 个振荡周期。
  • : 完成 1 条指令所占用的全部时间, 它以机器周期为单位。

2、51单片机的定时器

51单片机的定时器是一个16位的自增计数器,由两个8位寄存器组成,

3、相关的寄存器

下面是工作方式寄存器,根据这个寄存器中M1,M2的取值,定时器可以有四种工作方式,同时可以看到这个寄存器其实可以拆分成高四位还有低四位,GATE是一个门控位,就是如果这个位置1的话,定时器的开启要多一个步骤了(多的这个步骤为外部信号触发,就是是否需要外部信号触发才能打开) C/T是计数模式选择位,就是选择是定时模式(0)还是计数模式(1),M1M0是工作方式设置位。 根据M1M0的选择定时/计数器的四种工作方式如下所示: 下面是控制寄存器的说明: 说明如下: 下面是四个定时器的工作方式介绍:

4、定时器配置

定时器的配置如下,下面顺序不分先后 下面是定时器计数时间的计算,这里需要注意就是定时时间的计算方式:

5、定时器配置

根据上面的部分,可以对定时器进行配置,如下所示: 下面是源代码,相关寄存器都可以在上文查到

void time0_init(void)
{ 
        
    TMOD=0x01;
    TH0=0xFC;
    TL0=0x18;
    ET0=1;
    EA=1;
    TR0=1;
}

void time0() interrupt 1
{ 
        
    static u16 i;
    TH0=0xFC;
    TL0=0x18;
    i++;
    if(i == 1000)
    { 
        
        i=0;
        LED1 = !LED1;
    }
}

或者我们也可以直接在官方提供的工具里面生成:

3、串口中断

1、串口中断相关寄存器

下面是串口控制寄存器的描述: 其中SM0还有SM1决定了串口的四种工作方式: 相关寄存器的说明我根据参考资料画了一张表:

补充上面没有说到的位,REN,REN是串口接收使能为,软件置REN=1的话就会启动串口接收数据,反之就会关闭串口数据接收。

下面是电源控制寄存器,电源控制寄存器的说明如下: 其中SMOD寄存器决定了波特率是否倍增,当SMOD=1的时候,波特率就会倍增。

下面对定时器的四种模式进行说明:

2、波特率计算

这边波特率也可以用官方工具来计算

标签: thx03微量程动态扭矩传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台