中断&定时计数器

本文为LED-执棋困昌,csdn原创首发。
> 发布人LED-执棋困昌
> 欢迎大家与LED-执棋困昌相互点赞+关注+收藏+评论,也祝大家生活安康,学业愉快,工作顺利。
> 我的格言是:“尽最大努力,做最好的自己!
> 上一篇我们讲了独立按键的单一键项目实战,为大家更好地理解行列扫描的使用。

今天我们来讲中断和定时器,为下一文章键盘之中断法打好基础。

一、中断理论

1.1中断概念及作用


单片机中断是指在执行程序时,出现了某些特殊状况,例如定时时间到、有键盘信号输入等,需要暂停当前的程序,转去执行处理这些事件的程序,待执行完这些特定的程序后,再返回到原先的程序去执行,形成了一次中断。

中断的作用包括:

1. 实现实时处理:在实时控制的过程中,CPU会根据当时的情况及时做出反应,进行实时控制。

2. 实现分时操作:采用中断技术后,快速的CPU和慢速的外设可以各做各的事情。

3. 进行故障处理:系统在运行过程中往往会出现一些异常情况,可在中断中及时处理。

4. 待机状态的唤醒:当单片机处于待机状态时,可以唤醒并继续执行程序。

1.2中断结构图


6abc0473db83453d96ee535ea01da215.jpg

 从图可得,中断涉及到多个寄存器,有IE寄存器和IP寄存器等。

1.3中断理论


(1)寄存器

①中断允许控制寄存器IE

fcb7f74497f1416682a2213c0c7c7500.png

EA:总中断允许开关,EA=1时,打开总中断

ET0、ET1:定时器0/1的溢出中断允许位。

ET0、ET1:外部中断0/1的溢出中断允许位。

ES:串口通信中断允许位

②中断优先级控制寄存器IP

965834d6ec8044d8bba77bc6f161395b.png

PT0、RT1:定时器0/1优先级控制位

PX0、PX1:外部中断0/1优先级控制位

PS:串口优先级控制位

③定时器方式寄存器TMOD

51单片机有2个定时器/计数器,即T0、T1。

c3b472397c554e2cab8f6d14ddc04d9f.png

GATE:门控位

C/T:=0,定时器;=1,计数器

M0、M1决定定时计数器的工作方式。

④定时器控制寄存器TCON

85336a9dbab3475283904d261fbaae7c.png

TF0、TF1:定时器0/1的溢出标志位。

TR0、TR1:定时器0/1的启动位。为0是,定时计数器关闭;为1时,定时计数器打开。

IT0、IT1:外部中断0/1触发方式设置。为0时,电平触发;为1时,下降沿触发。

IE0、IE1:外部中断0/1请求标志位。

(2)中断优先级

cd2eca75dc43488baf91e0136d5466b0.png

1.优先级高的要比优先级低优先执行:当优先级在执行前或执行过程中,有优先级高的要执行,则打断低优先级的执行,优先级先执行。

优先级相同时,按顺序执行

2.中断源自然优先级:外部中断0>定时计数器0>外部中断1>定时计数器1>串行口

3.优先级可分为软件设置优先级和自然优先级,一般地,软件设置优先级>自然优先级

4.软件设置优先级可以借用IP寄存器进行设置,设置成1,为高优先级,设置为0,为低优先级。

(3)中断服务函数

2a4ae16f98e7489e807b6b988a1debc9.png

中断服务函数格式:

void timer() interrupt n

①中断服务函数返回值为空

②中断服务函数不能被调用

③中断服务函数无需声明

④n:入口编号。可以通过不同的n,进入相应的中断向量,从而执行对应的中断服务函数

⑤中断向量:中断服务函数入口地址。

二、代码

(1)定时器/计数器中断

中断与定时器结合,除了打开总中断EA和ET0/ET1外,还要设置定时计数器的方式和初值。

为了能重复进行初值,通常还要在中断服务函数重新赋初值

初值计算:

首先,第一步,先算初值X。与设置的方式有关。方式0,为13位定时器/计数器,所以初值X=2^13-N/(12/fosc),同理可得:方式1,为16位定时器/计数器,所以初值X=2^16-N/(12/fosc)

第二步,计算高8位TH0/TH1和低8位TL0/TL1

方法一:将初值X化为16位2进制,取高8位和低8位,然后分别用十六进制表示。

方法二:直接用算法。高8位TH0/TH1=X/256,高8位TL0/TL1=X%256。

(2)外部中断

外部中断分外部中断0和外部中断1,分别对应引脚INT0和INT1

一般与按键结合,先打开EA,接着设置触发方式IT和外部中断EX0/EX1。

当按键按下时,按键一端连接的I/O口电平变成低电平,触发中断,根据值得向量地址进入中断服务函数。

三、生成工具

为了能更快写出定时器函数,为你们介绍烧录工具。

软件界面:

定时器时钟要选12T,模式、频率、定时长度按自己需求调

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值