打印
[其它应用]

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

[复制链接]
56|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、中断是什么
中断的控制是我们学习单片机所必须掌握的,可以说“如果中断都不会,那根本谈不上掌握了单片机。”
那么中断是什么呢?

(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
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/The_moonside/article/details/116013430

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

70

帖子

0

粉丝