定时器-计数器_第1页
定时器-计数器_第2页
定时器-计数器_第3页
定时器-计数器_第4页
定时器-计数器_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

14.2定时器/计数器定时的实现方式:1.软件定时;2.不可编程硬件定时;3.可编程定时。2

定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。4.2.1定时/计数器的定时和计数功能

1.定时功能——计数脉冲信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。

2.计数功能——计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。需要2个机器周期。

在TMOD中,各有一个控制位(),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。3与定时器/计数器有关的控制寄存器有:D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中断请求标志外部中断触发方式选择启动定时/计数器0低电平1下降沿0停止1启动定时溢出标志4.2.2定时器/计数器的控制寄存器

1.定时器控制寄存器TCON(字节地址88H)42.工作方式控制寄存器TMOD(89H)

T1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE—门控位C/T—计数/定时选择M1M0—工作方式选择54.2.3.定时器/计数器的工作方式

共有四种工作方式

(1)方式0—13位方式TF0T0TR0GATEINT0振荡器1/12C/T=01≥1&C/T=1TL0TH08位低5位13位计数器定时器计数器申请中断M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7●●AB计数脉冲输入6(2)方式1—16位方式

振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH0TF08位8位16位计数器申请中断M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D77(3)方式2—8位可自动重装入时间常数方式

振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TF0TL0TH08位计数器申请中断M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D78(4)方式3—T0为2个8位方式,T1工作方式为0、1、2振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TF08位计数/定时器振荡器1/12TR1TH0TF18位定时器申请中断申请中断工作方式:8位计数/定时工作方式:8位定时9振荡器1/12T1C/T=0C/T=113或16位计数器串行口振荡器1/12T1C/T=0C/T=1TL1TH18位计数器串行口TL1TH1T1方式0,1T1方式2串行口得到的波特率是固定的!串行口得到的波特率可编程的!104.2.4应用举例②

计算计数器的计数初值:编程时将计数初值送

THi、TLi;可编程器件在使用前需要进行初始化:①

确定TMOD控制字:编程时将控制字送TMOD;③

开中断(如果使用中断方式):编程时置位EA、ETi;④

TRi位置位控制定时器的启动和停止。M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7IT0IE0IT1IE1TR0TF0TR1TF1TMODTCON11例题1:设晶振频率fOSC=6MHz,使用定时器/计数器T0以方式0产生周期为2ms的方波脉冲,并由P1.0输出。试以中断方式实现。8051P1.02ms汇编语言编程12①TMOD确定0000XXXXM0M1C/TGATEM0M1C/TGATE控制字00H

要产生2ms的方波脉冲,只需在P1.0端以1ms为间隔,交替输出高低电平即可实现。为此,定时间应为1ms。使用6MHz晶振,则一个机器周期为2us,设待求计数初值为X,则:②计算计数器的计数初值;T1控制T0控制131000×10-6

=(213-X)×2×10-6

500=213-XX=213-500=2000H-1F4H=1E0CH=1111000001100B所以,初值为:

TH0=0F0H,TL0=0CH14程序设计 ORG 0000H LJMP MAIN;主程序入口

ORG 000BH LJMP INTT0 ;T0中断入口③采用中断方式:编程时打开全局和局部中断。④由定时器控制寄存器TCON中的TR0位控制定时器的启动和停止。

TR0=1,启动;TR0=0,停止。15INTT0: MOV TH0,#0F0H ;重新设置初值

MOV TL0,#0CH CPL P1.0

;输出取反

RETI ORG 0030HMAIN: MOV TMOD,#00H ;T0为方式0 MOV TH0,#0F0H ;初值

MOV TL0,#0CH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断

SETB EA ;允许中断

SJMP $ ;等待中断主程序:中断处理程序:16例题2:设晶振频率fOSC=6MHz,使用定时器/计数器T1以方式1产生周期为2ms的方波脉冲,并由P1.0输出。试以中断方式实现。8051P1.02ms17①TMOD确定XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H

要产生2ms

的方波脉冲,只需在P1.0端以1ms为间隔,交替输出高低电平即可实现。为此,定时间应为1ms。使用6MHz晶振,则一个机器周期为2us,设待求计数初值为X,则:②计算计数器的计数初值;T1控制T0控制181000×10-6=(216-X)×2×10-6

500=216-XX=216-500=10000H-1F4H=0FE0CH=1111111000001100B所以,初值为:

TH1=0FEH,TL1=0CH19程序设计 ORG 0000H LJMP MAIN;主程序入口

ORG 001BH LJMP INTT1;T1中断入口③采用中断方式:编程时打开全局和局部中断。④由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。

TR1=1,启动;TR1=0,停止。20INTT1: MOV TH1,#0FEH ;重新设置初值

MOV TL1,#0CH CPL P1.0

;输出取反

RETI ORG 0030HMAIN: MOV TMOD,#10H ;T1为方式1 MOV TH1,#0FEH ;初值

MOV TL1,#0CH SETB TR1 ;启动T1 SETB ET1 ;允许T1中断

SETB EA ;允许中断

SJMP $ ;等待中断主程序:中断处理程序:21例题3:设晶振频率fOSC=6MHz,使用定时器/计数器测定如图所示波形的一个周期长度。1外部计数脉冲INT0(P3.2)(P3.5)T1INT0一个周期启动定时器T1计数器计数22C语言编程(以定时器0为例)

例题4:设单片机的fosc=12MHz,要求在P1.0脚上输出周期为2ms的方波。

周期为2ms的方波要求定时间隔为1ms,每次定时时间到,则P1.0取反。由于fosc=12MHz,机器周期为12/fosc=1us。1ms=1000us,即为1000个机器周期。

①用定时器T0的方式1编程,采用查询方式。#include<reg51.h>sbitsquare_wave=P1^0;voidmain(void)23{ TMOD=0x01; /*T0的方式1*/ TR0=1; /*启动定时器T0*/ while(1) { /*装计数器初值*/ TH0=(unsignedint)(-1000)/256; TL0=(unsignedint)(-1000)%256; while(!TF0) /*查询等待TF0位*/

{ ; }

/*查询时间到,P1.0变反*/

square_wave=!square_wave; TF0=0; /*软件清除TF0位*/ }}24②用定时器T0的方式1编程,采用中断方式。#include<reg51.h>sbitsquare_wave=P1^0;/*定时器T0的中断服务程序*/voidtimer0(void)interrupt1using1{

/*P1.0取反*/

square_wave=!square_wave; /*计数器初值重装*/ TH0=(unsignedint)(-1000)/256; TL0=(unsignedint)(-1000)%256;}25voidmain(void){ TMOD=0x01; /*T0的方式1*/ square_wave=0; TH0=(unsignedint)-1000/256;/*装计数器初值*/ TL0=(unsignedint)-1000%256; EA=1; /*开中断*/ ET0=1; /*T0中断允许*/ TR0=1; /*启动T0*/ while(1) { ; }}264.2.5定时/计数器用作外部中断扩展③扩展的外部中断请求信号接计数脉冲输入端(T0

或T1);②TH和TL均置为FFH;①置定时/计数器为工作方式2,即自动加载式8位计数,以便在一次中断响应后,自动为下一次中断作准备;

在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时/计数器实现外部中断扩展的思想。具体方法是:27例:以T0实现一个外

温馨提示

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

评论

0/150

提交评论