单片机之魂——定时器、中断


一、中断是什么

中断的控制是我们学习单片机所必须掌握的,可以说“如果中断都不会,那根本谈不上掌握了单片机。”
那么中断是什么呢?

(1)中断

中断是单片机CPU在处理某一事件时,发生了另一事件B。CPU立马停止处理事件A,转去处理事件B。等到处理完事件B后在回去继续执行事件A的过程。

(2)中断优先级

既然有事件的执行有先后顺序,那么就涉及到一个非常重要的关键词——中断优先级。
以89C52单片机为例:52单片机有6个中断源
INT0——外部中断0
INT1——外部中断1
T0——定时器、计数器0中断
T1——定时器、计数器1中断
T2——定时器、计数器2中断
TI/RI——串行口中断
单片机中断口优先级

二、中断的使用

1.外部中断

在这里插入图片描述

同时我们也可以对中断的优先级进行更改

在这里插入图片描述

(2)定时器中断

定时器的实质是加一计数器(16位),由高八位和低八位两个寄存机构成。
TMOD——工作方式寄存器,确定中断控制方式和功能。
TCON——控制寄存器,控制中断源T0、T1的启动和停止。

一、定时器中断使用

单片机定时器中断实质上是加一计数器,每来一个脉冲加一,当加到计数器全唯一,再输入一个脉冲,计数器回零,并且向CPU发送中断请求。
这里补充一个概念知识点:1个机器周期等于12个振荡周期,即计数频率是晶振频率的1/12 。
计数值N×机器周期=定时时间

二、TMOD与TCON

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里控制TCON和TMOD既可以采用直接输入如GATE=1,也可以通过位操作直接控制。
例如我想要使GATE=0,C/T=0、M1=0、M0=1. 就可以写成TMOD=0x01

2.中断服务程序写法

代码如下(示例):

void T1_time()interrupt3//3为中断序号,这里使用定时器1 中断序号为3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
}

T H1、TL1代表着定时器1的高八位和低八位数据。


总结

中断程序的设计:
1、 打开总中断
2、设置触发方式(IT0=0低电平触发、IT0=1下降沿触发)
3、选择中断
4、中断时间计算
5、编写中断服务程序
6、设置TMOD

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值