第6章单片微机的定时器计数器原理及应用m讲义

上传人:今*** 文档编号:106323166 上传时间:2019-10-14 格式:PPT 页数:47 大小:1.51MB
返回 下载 相关 举报
第6章单片微机的定时器计数器原理及应用m讲义_第1页
第1页 / 共47页
第6章单片微机的定时器计数器原理及应用m讲义_第2页
第2页 / 共47页
第6章单片微机的定时器计数器原理及应用m讲义_第3页
第3页 / 共47页
第6章单片微机的定时器计数器原理及应用m讲义_第4页
第4页 / 共47页
第6章单片微机的定时器计数器原理及应用m讲义_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《第6章单片微机的定时器计数器原理及应用m讲义》由会员分享,可在线阅读,更多相关《第6章单片微机的定时器计数器原理及应用m讲义(47页珍藏版)》请在金锄头文库上搜索。

1、实验四 外中断,P1.0_P1.7接8个发光二极管,管脚INT0、INT1接两个按键,分别定义为“+”和“-”。要求:上电全灭, 每按一次“+”键,亮的灯多一盏, 每按一次“-”键,亮的灯减一盏, 当全亮时,再按一次“+”键,则全灭 当全灭时,再按一次“-”键,则全亮,实验报告要求: 1写明实验日期、桌号 2写明实验要求; 3画出硬件接线图 4编程,加标注 5写出调试过程,遇到的问题及解决方法 6总结实验目的,写出收获体会,INT0,INT1,T0 及 T1的中断标志存放在 TCON寄存器中; 串行口的中断标志存放在 SCON寄存器中。 定时器计数器控制寄存器TCON: IT1:INT1的中断

2、申请触发方式控制位 IT0:INT0的中断申请触发方式控制位。,5.3 中断的控制 5.3.1中断标志,中断允许和禁止由中断允许寄存器IE控制。 中断允许寄存器IE (可位寻址):,5.3.2 中断允许控制,IE寄存器中各位设置:为0时,禁止中断;为1时,允许中断。 系统复位后IE寄存器中各位均为0,禁止所有中断。,在80C51中有高、低两个中断优先级,通过IP来设定。 中断优先级寄存器IP(可位寻址):,IP寄存器中各位设置:为0时,为低中断优先级;为1时,设为高中断优先级。 系统复位后IP寄存器中各位均为0,全部设定为低中断优先级。,5.3.3 中断优先级,中断矢量地址,第六章 单片微机的

3、定时器/计数器 原理及应用,6.1 概述 6.2 定时器/计数器T0、T1 6.3 定时器/计数器T2 6.4 监视定时器(看门狗)T3 6.5 定时器/计数器的应用编程,定时或计数方法: 1硬件法: 定时功能完全由硬件电路完成,不占用CPU时间。 2软件法:软件定时是执行一段循环程序来进行时间延时。 3可编程定时器计数器:通过软件编程来实现定时时间的改变,通过中断或查询方法来完成定时功能或计数功能。,6-1 概述,定时器资源: 80C51:两个16位的加1定时器计数器:T0和T1; 80C52:三个16位的加1定时器计数器:T0、T1、T2 在80C51系列的部分产品(如Philips公司的

4、80C552)中,还 包含有作看门狗的8位定时器T3。,定时器计数器的核心是一个加1计数器其基本功能是计数加1。,计数是对单片微机的T0、T1 (或T2) 引脚 上输入的一个1到0的跳变进行计数增l。 定时是对单片微机内部的机器周期进行计 数,从而得到定时。 波特率发生器80C51的定时器/计数器还可 用作串行接口的波特率发生器。,T0、T1 的内部结构简图示于图61中。 T0、T1由以下几部分组成: 计数器TH0、TL0和TH1、TL1; 特殊功能寄存器TMOD、TCON; 时钟分频器; 输入引脚T0、T1。,6.2 定时器计数器T0、T1,一、定时器计数器T0、T1 的控制寄存器 1.TC

5、ON,TF1:T1的溢出标志。T1溢出时,该位由内部硬件置位。 若中断开放,即响应中断,进入中断服务程序后,由硬 件自动清0; 若中断禁止,可用于判跳,用软件清0。 TR1:T1的运行控制位。 用软件控制,置l时,启动 T1;清0时,停止 T1。 复位后,TCON的所有位均清0。T0和T1均是关中断的。,D7 D6 D5 D4 D3 D2 D1 D0,T1,T0, GATE 门控位 GATE1时,由外部中断引脚INT0、INT1和TR0、TR1共同来启动定时器。当INT0引脚为高电平时,TR0置位启动定时器T0;当引脚INT1为高电平时,TR1置位,启动定时器T1。 GATE0时,仅由TR0和

6、TR1置位来启动定时器T0和T1。,2. T0、T1 的方式寄存器TMOD,中断条件:TH0,TL0 由全1 全0, 计数器,设置C/T1 脉冲源:外部引脚T0(T1) 计数:T0 1 0 计1(两个机器周期计一个数) 计数频率: fosc 脉冲宽度:保持一个机器周期,M1、M0:工作方式选择位。,3、计数器:TH0、TL0、TH1、TL1,1)TH0、TL0:定时器/计数器0高位字节和低位字节。 字节地址:8CH,8AH,可读可写. 2)TH1、TL1:定时器/计数器1高位字节和低位字节。 字节地址:8DH,8BH,可读可写. 4、定时器/计数器中断: 中断允许寄存器IE 中断优先级寄存器I

7、P 中断矢量, 方式0: 13位定时器/计数器(M10、M00) 计数寄存器组成:THx 高8位和TLx的低5位 (TL0- TL4),共13位。 计数时,TLx 的低5位溢出后向THx进位,THx溢出后将TFx置位,并向CPU申请中断。,二、定时器计数器T0、T1 的工作方式,图62 方式0时,定时器/计数器T0、T1的逻辑结构图,B=TRx(GATE+INTx),最大计数值: 213 = 8192。 最大定时时间: Tmax(12M)=1us*213=8192us (8ms) Tmax(6M)=2us*213 =16384 (16ms) 定时初值计算: 初值 X=213- *t 数据寄存器

8、TH0、TL0(TH1/TL1)的赋值:, 方式1 16位定时器/计数器 由TLx和 THx组成,共16位。 计数时:TLx溢出后向THx进位, THx溢出后将TFx置位. 最大计数值: 216 = 65536 最大定时时间: Tmax(12M)=1us*216=65536us(65ms) Tmax(6M)=130ms (130ms) 定时初值: X=216- *t 数据寄存器TH0、TL0(TH1/TL1)的赋值:,图63 方式1时,定时器/计数器T0、T1的逻辑结构图, 方式2 定时常数自动重装载的8位定时器/计数器 TLx作为8位计数寄存器,THx作为8位计数常数寄存器。,MOV TH0

9、,#0AEH MOV TL0,#06H SETB TR0 MOV TH0,#0AEH MOV TL0,#06H,当TLx计数溢出时,将TFx置位,并向CPU申请中断;将THx的内容重新装入TLx中,继续计数。 重新装入不影响THx的内容。,Tmax(12M)=1us*28=256us Tmax(6M)=512us,方式2适合于作为串行口波特率发生器使用。,图64 方式2时定时器/计数器T0、T1的结构图, 方式3:只适用于T0 ()方式下 将T0分为一个8位定时器计数器TL0和一个 8位定时器TH0 。T1停止计数。 TL0:8位定时器计数器,它占用了T0的GATE、INT0、启动 停止控制位

10、TR0、T0引脚 以及计数溢出标志位TF0和T0的中断矢量等。,TH0:作为8位定时器用,此时的外部引脚T0已为定时器 计数器TL0所占用。这时它占用了定时器计数器T1 的启动停止控制位TR1、计数溢出标志位TF1及T1中 断矢量(地址为001BH) 。,图65 定时器/计数器T0方式3时的逻辑结构图,图66 定时器/计数器T0方式3时,T1的逻辑结构图,工作方式3下 T1 T1的结构如图66所示, T1只能选方式0、1或2。作串行口波特率发生器时,T1的计数输出直接去串行口,只需设置好工作方式,串行口波特率发生器自动开始运行,如要停止工作,只需向T1送一个设为工作方式3的控制字即可。,定时器

11、计数器的应用编程:,如果采用中断方式,应进行中断程序入口地址设置 设置定时器计数器工作方式() 设置定时常数(和) 如果采用中断方式,应允许定时器中断和中断 定时器启动() 如果采用中断方式:编写中断服务子程序 如果查询方式:需要用指令清除溢出标志,已知晶体振荡器的频率为fosc=6MHz。 使用T0作定时器,设为方式0,设定1ms的定时,每隔1ms使P1.0引脚上的电平变反。,例要求在 P1.0引脚上产生周期为2 ms的方波输出。,应用举例,(1) 解:定时常数计算 振荡器的频率fosc6MHz,机器周期为2s,方式0计数器长度L13(2138192),定时时间 t1ms0.001s 定时常

12、数:X=213- *106*1*10-3=1E0CH,X为76921E0CH, 二进制数TCB0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 B,取低13位,其中高8位THF0H,低5位为TL0CH. 计数长度:1E0CH=7692,TH=0F0H,TL=0CH 定时:(81927692)2s=0.001S TMOD的设定: T0:方式,定时,( 2) 编 程 :(中断方式) ORG 0000H AJMP MAIN ORG 000BH ;T0中断矢量 AJMP INQP ORG 0030H MAIN: MOV TMOD,00H ;设T0为定时器方式0 MOV TH0,0F0H

13、;写定时常数(定时1ms) MOV TL0,0CH SETB ET0 ;允许T0中断 SETB EA ;开放CPU中断 SETB TR0 ;启动 T0 SJMP $ ;定时中断等待,ORG 2000 H ;T0中断服务程序 INQP: MOV TH0,0F0H ;重写定时常数 MOV TL0,0CH CPL P10 ;P10变反输出 RETI ;中断返回,ORG 0100H ST: MOV TMOD,#00H MOV TH0,0F0H MOV TL0,0CH SETB P1.0 SETB TR0 L0: JBC TF0,L1 ;时间到,清除溢出标志 AJMP L0 L1: CPL P1.0 M

14、OV TH0,0F0H ;重写定时常数 MOV TL0,0CH AJMP L0 END,查询方式:,【例】已知晶振12MHZ,要求利用定时器T0使图中发光二极管D进行秒闪烁。,解:发光二极管进行秒闪烁。即亮500ms,暗500 ms。晶振12MHz,机器周期1s,T0方式1最大定时只能65ms余。 方法:取T0方式,定时50ms,计数10次,即可实现500ms定时。, 计算定时初值 T0初值X=216-fosc*t/12=216-50*103=65536-50000=15536 =3CB0 TH0=3CH;TL0=B0H。, 设置TMOD: 0000 0 0 01 B = 01H T0方式1

15、T0 定时 与 无关 T1控制位, 编制程序如下: ORG 0000H ;复位地址 LJMP MAIN ;转主程序 ORG 000BH ;T0中断入口地址 LJMP IT0 ;转T0中断服务程序 ORG 0100H ;主程序首地址 MAIN:MOV TMOD,#01H ;置T0定时器方式1 MOV TH0,#3CH ;置T0初值50ms MOV TL0,#0B0H SETB EA ; SETB ET0 ; MOV R7,#0AH ;置50ms计数器初值 SETB TR0 ;T0运行 SJMP $ ;等待中断,ORG 0200H ITO:MOV TH0,#3CH ;重置T0初值50ms MOV TLO,#0BOH DJNZ R7,GORET ;判500ms到否? CPL P1.7 ;500ms到,输出取反 MOV R7,#0AH ;恢复50ms计数器初值GORET:RETI,门控位GATE可用作对INTx引脚上的高电平持续时间进行计量。 当GATE位设为“1”:若TRx为“1”,定时器/计数器的启动取决于INTx引脚。 当INTx引脚电

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号