51单片机中断系统详解
51 单片机中断系统详解(定时器、计数器)51 单片机中断级别中断源 INT0---外部中断 0/P3.2 T0---定时器/计数器 0 中断/P3.4 INT1---外部中断 1/P3.3 T1----定时器/计数器 1 中断 /P3.5 TX/RX---串行口中断 T2---定时器/计数器 2 中断 第5 最低 4 5 默认中断级别 最高 第2 第3 第4 序号(C 语言用) 0 1 2 3 intrrupt 0
中断允许寄存器 IE位 序 号 符 号 位 EA/0 ------ET2/1 ES ET1 EX1 ET0 EX0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打 开或关闭。 EA=0,关闭全部中断。 -------,无效位。
ET2---定时器/计数器 2 中断允许位。ET2=1, 打开 T2 中断。 ET2=0,关闭 T2 中断。 关,…… ES---串行口中断允许位。 关,…… ES=1,打开串行口中断。 关,…… ES=0,关闭串行口中断。 关,…… ET1---定时器/计数器 1 中断允许位。 关,…… ET1=1,打开 T1 中断。 ET1=0,关闭 T1 中断。 EX1---外部中断 1 中断允许位。 EX1=1,打开外部中断 1 中断。 EX1=0,关闭外部中断 1 中断。 ET0---定时器/计数器 0 中断允许位。 ET0=1,打开 T0 中断。
EA 总中断开关,置 1 为开;EX0 为外部中断 0 (INT0) 开关, …… ET0 为定时器/计数器 0(T0)开 EX1 为外部中断 1(INT1)开 ET1 为定时器/计数器 1(T1)开 ES 为串行口(TX/RX)中断开 ET2 为定时器/计数器 2(T2)开
ET0=0,关闭 T0 中断。 EX0---外部中断 0 中断允许位。 EX0=1,打开外部中断 0 中断。 EX0=0,关闭外部中断 0 中断。
中断优先级寄存器 IP位 序 号 位 地 址 ------PS/0 PT1/0 PX1/0 PT0/0 PX0/0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
-------,无效位。 PS---串行口中断优先级控制位。 PS=1,串行口中断定义为高优先级中断。 PS=0,串行口中断定义为低优先级中断。 PT1---定时器/计数器 1 中断优先级控制位。 PT1=1,定时器/计数器 1 中断定义为高优先级中断。 PT1=0,定时器/计数器 1 中断定义为低优先级中断。 PX1---外部中断 1 中断优先级控制位。 PX1=1,外部中断 1 中断定义为高优先级中断。 PX1=0,外部中断 1 中断定义为低优先级中断。 PT0---定时器/计数器 0 中断优先级控制位。 PT0=1,定时器/计数器 0 中断定义为高优先级中断。 PT0=0,定时器/计数器 0 中断定义为低优先级中断。 PX0---外部中断 0 中断优先级控制位。 PX0=1,外部中断 0 中断定义为高优先级中断。 PX0=0,外部中断 0 中断定义为低优先级中断。
定时器/计数器工作模式寄存器 TMOD位序 号 位符 号 GATE C/T M1 M0 GATE C/T M1 M0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
|---------定时器 1-----------------------|-------- ------定时器 0----------------------| GATE---门控制位。 GATE=0,定时器/计数器启动与停止仅受 TCON
寄存器中 TRX(X=0,1)来控制。 GATE=1, 定时器计数器启动与停止由 TCON 寄存器中 TRX(X=0,1)和外部中断引 脚(INT0 或 INT1)上的电平状态来共同控制。 C/T---定时器和计数器模式选择位。 C/T=1,为计数器模式;C/T=0,为定时器模式。 M1M0---工作模式选择位。M 1 0 M 工作模式
0 0 1 1 位 序 号 符 号 位 TF1 DB7
0 1 0 1 DB6 DB5
方式 0,为 13 位定时器/计数器 方式 1,为 16 位定时器/计数器 方式 2,8 位初值自动重装的 8 位定时器/计数器 方式 3,仅适用于 T0,分成两个 8 位计数器,T1 停止工作 DB4 DB3 DB2 DB1 DB0
定时器/控制器控制寄存器 TCON
TR1
TF0
TR0
IE1 /1
IT1/P3.3 0/1
IE0
IT0P3.2
TF1---定时器 1 溢出标志位。 当定时器 1 记满溢出时,由硬件使 TF1 置 1,并且申请中断。进入中断服务程 序后,由硬件自动清 0。需要注意的是,如果使用定时器中断,那么该位完全不用人 为去操作,但是如果使用软件查询方式的话,当查询到该位置 1 后,就需要用软件清 0。 TR1---定时器 1 运行控制位。 由软件清 0 关闭定时器 1。当 GATE=1,且 INIT 为高电平时,TR1 置 1 启动定 时器 1;当 GATE=0 时,TR1 置 1 启动定时器 1。 TF0---定时器 0 溢出标志,其功能及其操作方法同 TF1。 TR0---定时器 0 运行控制位,其功能及操作方法同 TR1。 IE1---外部中断 1 请求标志。 当 IT1=0 时,位电平触发方式,每个机器周期的 S5P2 采样 INT1 引脚(p3.3), 若 NIT1 脚为低电平,则置 1,否则 IE1 清 0。 当 IT1=1 时,INT1 为跳变沿触发方式,当第一个及其机器周期采样到 INIT1 为 低电平时,则 IE1 置 1。IE1=1,表示外部中断 1 正向 CPU 中断申请。当 CPU 响应中 断,转向中断服务程序时,该位由硬件清 0。 IT1 外部中断 1 触发方式选择位。 IT1=0,为电平触发方式,引脚 INT1 上低电平有效。 IT1=1,为跳变沿触发方式,引脚 INT1 上的电平从高到低的负跳变有效。 IE0---外部中断 0 请求标志,其功能及操作方法同 IE1。 IT0---外部中断 0 触发方式选择位,其功能及操作方法同 IT1。 从上面的知识点可知,每个定时器都有 4 种工作模式,可通过设置 TMOD 寄存 器中的 M1M0 位来进行工作方式选择。 方式 1 的计数位数是 16 位,对 T0 来说,由 TL0 寄存器作为低 8、TH0 寄存器 作为高 8 位,组成了 16 位加 1 计数器。 关于如何确定定时器 T0 的初值问题。定时器一但启动,它便在原来的数值上开 始加 1 计数,若在程序开始时,我们没有设置 TH0 和 TL0,它们的默认值都是 0,假 设时钟频率为 12MHz,12 个时钟周期为一个机器周期,那么此时机器周期为 1us,记 16 满 TH0 和 TL0 就需要 2 -1 个数, 再来一个脉冲计数器溢出, 随即向 CPU 申请中断。 因此溢出一次共需 6
5536us,约等于 65.6ms,如果我们要定时 50ms 的话,那么就需要 先给 TH0 和 TL0 装一个初值,在这个初值的基础上记 50000 个数后,定时器溢出, 此时刚好就是 50ms 中断一次,当需要定时 1s 时,我们写程序时当产生 20 次 50ms
的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。
以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为TCY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/TCY ,装入THX和TLX中的数分别为:
THX=(65536-N)/256 , TLX=(65536-N)%256 <x为0或1> 中断服务程序的写法
void 函数名()interrupt 中断号 using 工作组 {
中断服务程序内容 }
在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下:
(1)对TMOD赋值,以确定T0和 T1的工作方式。
(2)计算初值,并将初值写入TH0、TL0或TH1、TL1。 (3)中断方式时,则对IE赋值,开放中断。
(4)使TR0和TR1置位,启动定时器/计数器定时或计数。
例:利用定时器0工作方式1,实现一个发光管以1s亮灭闪烁。 程序代码如下: #include<reg52.h>
#define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() {
TMOD=0x01; //设置定时器0位工作模式1(M1,M0位0,1) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872
TL0=(65536-45872)%256; EA=1; //开总 …… 此处隐藏:2498字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高中教育]电子线路高频非线性部分2.1
- [高中教育]中班美术活动——我的小手
- [高中教育]常用三极管参数大全
- [高中教育]计算机常见故障及解决办法
- [高中教育]风机基础环水平度控制方法探讨
- [高中教育]机械安全工程(专升本)阶段性作业3
- [高中教育]2009年安徽省高考语文考试说明刍议
- [高中教育]unit5 let's eat公开课教案设
- [高中教育]计算机网络原理课后习题答案
- [高中教育]2016-2022年中国新能源市场研究与投资
- [高中教育]2015-2020年中国会议行业市场评估及投
- [高中教育]经销商大会峰会主持人串词开场白
- [高中教育]2014新版北师大数学三年级上册小熊购物
- [高中教育]七年级第一学期体育与健康全套教案
- [高中教育]第三章:国际金融市场
- [高中教育]六年级下册数学单元测试-2.比例 北师大
- [高中教育]2016年上海海事大学法学院624刑法之《
- [高中教育]中国碳化钙产业竞争现状及未来五年投资
- [高中教育]网络时代,我们怎么玩
- [高中教育]圆锥曲线——高中数学基础知识与典型例
- 高集医院世界艾滋病宣传日活动方案
- 苏教版六年级英语上册期末试卷含答案
- 全民枪战生化英雄模式幽灵怎么玩 生化
- 灿烂的宋元文化一导学案
- 第2章货币资金与应收款项
- 北师大版八年级下册数学第三章《分式》
- 浅析高分子材料成型加工技术
- 华南理工大学2013年度共青团先进集体及
- 教师资格科目二小学教案模板(共合集)
- 工程扩建可研报告
- 中华人民共和国海事局2014年度招录公务
- 提高农村小学生作文能力的教学尝试
- 徒手心肺复苏术操作步骤
- 毛概试题库7-15章
- 2014-2015学年度(上)初中班主任工作计
- 企业驾驶员安全生产责任书
- 第07章 不等式测试题-2016年高考文科数
- 医疗器械经营企业工作程序
- 考研英语必背36篇_彩版_精华
- 初中9月13-15假期作业 (1)




