单片微机的定时器计数器原理及应用.ppt_第1页
单片微机的定时器计数器原理及应用.ppt_第2页
单片微机的定时器计数器原理及应用.ppt_第3页
单片微机的定时器计数器原理及应用.ppt_第4页
单片微机的定时器计数器原理及应用.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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公司的80C

4、552)中,还 包含有作看门狗的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.TCON,

5、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和TR1置

6、位来启动定时器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 中断优先级寄存器IP 中断

7、矢量, 方式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 数据寄存器TH0、

8、TL0(TH1/TL1)的赋值:, 方式116位定时器/计数器 由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,#0AEH

9、 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、启动 停止控制位TR0、T0

10、引脚 以及计数溢出标志位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 定时常数:X=213

12、- *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) 编 程 :(中断方式) ORG0000H AJMP MAIN ORG000BH;T0中断矢量 AJMP INQP ORG0030H MAIN:MOV TMOD,00H ;设T0为定时器方式0 MOV TH0,0F0H ;写定时常数(定时1ms

13、) MOV TL0,0CH SETB ET0 ;允许T0中断 SETB EA ;开放CPU中断 SETB TR0 ;启动 T0 SJMP $ ;定时中断等待,ORG2000 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 MOV TH0,0F0H ;重

14、写定时常数 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 T0 定时 与 无关 T1控

15、制位, 编制程序如下: 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

16、 R7,GORET ;判500ms到否? CPL P1.7 ;500ms到,输出取反 MOV R7,#0AH ;恢复50ms计数器初值GORET:RETI,门控位GATE可用作对INTx引脚上的高电平持续时间进行计量。 当GATE位设为“1”:若TRx为“1”,定时器/计数器的启动取决于INTx引脚。 当INTx引脚电平为“1”时,定时器才工作,换另一角度看,定时器实际记录的时间就是相应INTx引脚上高电平的持续时间。,门控位GATE的应用,通过反相器,则可测得相应INTx引脚上低电平的持续时间。,二个时间的和即为INTx引脚上输入波形的周期,其倒数即为INTx引脚上输入波形的频率。还可算出占

17、空比等参数。,例利用定时器计数器测定图611所示波形的一个周期长度。 利用门控信号GATE启动定时器的方法。 T1为定时器时,当TR1=1且为高电平时,才启动定时器; T1为计数器时,T1的电平由 1到 0,计数器计数。,TR1清零,图611 波形脉冲宽度测试原理, 查询法ORG0000H START:MOVTMOD,#90H;设置T1为定时器, ;方式1,GATE位置1 MOVTL1,#00H;置为最大定时值 MOVTH1,#00H LP1:JBP3.3,LP1;P3.3为高电平,等待 SETB TR1 ;当P3.3为低电平时, ;置TR1位为1 LP2: JNBP3.3,LP2;当P3.3为低电平时,再等待,LP3:JBP3.3,LP3;当P3.3为高电平时,T1开始;定时计数 CLRTR1;当P3.3为低电平时,高电平;脉宽定时计数结束 SJMP$,当fosc12MHz时,机器周期为1s,最大被测脉冲宽度为65536s (65.536ms)。 若被测波形除了接至P3.3,另外同时通过一个反相器接至P3.2 (INT0) ,则通过编程同时可以测得波形的高电平宽度和低电平宽度。,80C51可以随时读写计数寄存器TLx和THx (x为0或1) ,用于实时显示计数值等。 办法是:先读THx,后读TLx,再重读THx,若两次读得的THx值是一样的,则可以确定读入的数据是正确的;若两次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论