51单片机入门教程(5)——定时器中断

本文介绍了51单片机中的定时器中断,阐述了中断的概念、中断源和中断优先级,并详细讲解了定时器中断寄存器的设置,包括中断允许控制寄存器IE、定时器工作方式寄存器TMOD、定时器控制寄存器TCON和定时器初值寄存器THx/TLx。此外,还提供了定时器中断程序的编写方法,以及一个简单的应用实例,展示了如何通过定时器实现LED灯的秒闪和流水灯效果。
摘要由CSDN通过智能技术生成


写在开头: 中断是包括单片机在内的所有微处理器很 重要的功能之一,初学单片机必须这一部分的知识。

一、中断的概念

先看百度百科是怎么定义中断的:

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
—— 百度百科

那么怎么理解中断?看下面的例子。

关于中断
小A正在学习。这时,他的朋友小B叫他一块儿吃鸡,小A停止学习,转去玩吃鸡游戏。玩了几局后,关掉游戏,继续学习。
关于中断优先级
小A正在学习。这时,他的朋友小B叫他一块儿吃鸡,小A停止学习,转去玩吃鸡游戏,(吃鸡过程中,小A女朋友打来电话,于是挂机游戏,去接电话,接完电话,继续游戏。)玩了几局后,关掉游戏,继续学习。

  • 几个重要概念:

中断:小A学习被小B打断的过程就称为中断
中断源:小B被称为中断源
中断服务程序:小A执行的玩游戏操作称为中断服务程序
中断优先级:小A女朋友的电话比游戏优先级

在89c52单片机中,有3类中断源:

1、外部中断:当外部中断引脚信号产生跳变(低电平→高电平)时引起中断。
2、定时器/计数器中断:当计数器计满溢出时引起跳变。
3、串口中断:串行端口完成一帧数据的发送/接受时引起(如蓝牙传输)。

其优先级如下表:

中断源 优先级 中断服务号
INT0 – 外部中断0 最高 0
T0 – 定时器/计数器0中断 第2 1
INT1 – 外部中断1 第3 2
T1 – 定时器/计数器1中断 第4 3
串口中断 第5 4
T2 – 定时器/计数器2中断 最低 5

下面以定时器中断为例,讨论中断的编程方法。

二、定时器中断

2.1 软件延时的不足

根据现有的知识,如果要在程序中等待一端时间,想到的操作应该是通过执行若干次空指令,达到延时的效果。
如下:

//延时xms
void delayms(uint xms){
   
  uint i,j;
  for(i = 0; i < xms; ++i)
    for(j = 0; j < 110; ++j)
    ;
}

但是,假设要实现以下功能:

1、8位数码管动态扫描显示。
2、LED灯每隔1s闪烁一次。

电路如下:
在这里插入图片描述
考虑程序怎么写……

//代码不完整,仅为举例说明
void main(){
   
  P2 = 0x01;       //数码管从最低位开始扫描
  while(1){
   
    //功能1:执行数码管动态扫描
    //P2控制显示哪一个数码管,P0控制数码管显示什么内容
    P2 = P2<<1;      //扫描更高一位的数码管
    P0 = xxxx;       //输出段码
    delayms(5);      //延时5ms后显示下一位数
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值