《单片机原理与应用》课件第5章_第1页
《单片机原理与应用》课件第5章_第2页
《单片机原理与应用》课件第5章_第3页
《单片机原理与应用》课件第5章_第4页
《单片机原理与应用》课件第5章_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

项目五定时/计数器应用

5.1项目基本技能

5.2项目基本知识5.3技能拓展5.4互动环节

任务1霓虹灯控制电路(定时器实现定时功能)

1.任务要求利用51单片机控制8个LED灯,要求8个LED灯依次按顺序点亮,时间间隔为1s。要求使用定时器T0,工作方式1(定时方式)。

2.硬件电路设计电路图参见项目二任务3图2-42。5.1项目基本技能

3.软件设计

1)设计方法用定时器T0工作方式1,编程设置1s的程序。假定系统采用12MHz晶振,T0工作方式1,可选择定时时间为50ms,再循环20次即可达到定时时间1s。

2)流程图程序参考流程如图5-1所示。图5-1霓虹灯控制电路程序流程图

3)指令代码

(1)编写汇编语言代码。用汇编语言编写的指令代码如下:;;;程序名:A5_1.ASM;;;功能:间隔显示为1s的霓虹灯程序ORG0000HMAIN: MOVR1,#8 ;定义循环次数

MOVA,#0FEH;给A赋初值为FEHNEXT:

MOVP1,A;点亮第1个霓虹灯

ACALLDELAY;调用延时子程序DELAY

RLA

;循环左移1位

DJNZR1,NEXT;判断8个霓虹灯是否依次点亮完毕

SJMPMAIN ;;8个霓虹灯循环显示DELAY: MOVR2,#20 ;置50ms计数循环初值

MOVTMOD,#01H ;设置定时器T0为方式1 MOVTH0,#3CH;设置定时器T0初值

MOVTL0,#0B0H SETBTR0 ;启动定时器T0LP1: JBCTF0,LP2

;查询计数是否溢出

SJMPLP1 ;未到50ms,继续计数LP2: MOVTH0,#3CH;重新设置定时器T0的初值

MOVTL0,#0B0H DJNZR2,LP1;未到1s,继续循环

RET ;返回主程序

END ;结束

MOVTMOD,#01H语句说明:设置定时器T0的工作方式,工作在方式1,定时功能,定时工作方式与外部中断无关,而定时器T1未使用。因此,方式寄存器TMOD的初值应为00000001B,即01H。

JBCTF0,LP2语句说明:当定时器T0计满数产生溢出时,由硬件自动置TF0=1,TF0可作查询测试用,但只能用软件清0。因此,语句就必须用JBC,而不能用JB位转移指令。

(2)编写C语言代码。用C语言编写的指令代码如下://程序名:C5_1.C//功能:间隔显示为1s的霓虹灯程序#include<reg51.h> //包含reg51.h头文件voiddelay1s() //定义延时函数delay1s{unsignedchari; //定义无符号字符型变量ifor(i=0;i<20;i++) //循环次数为20{

TH0=(65536-50000)/256; //设置定时器T0的初值

TL0=(65536-50000)%256;TR0=1; //启动定时器T0while(!TF0); //查询定时时间是否到?定时时间到,TF0=1TF0=0; //将T0溢出标志位清零

}}

voidmain() //主函数{ unsignedcharj,w; //定义无符号字符型变量j和w TMOD=0x01; //设置定时器T0的工作方式

while(1) { w=0x01; //设置w的初始值

for(j=0;j<8;j++)

P1=~w;//w取反后送P1口,点亮相应的LED灯

w<<=1; //左移一位

delay1s(); //调用1s的延时函数

} }}

在上述程序中,将delay1s()函数定义在主函数main()之前,故不需要进行函数声明,可在主函数中直接调用。若将函数delay1s()放在主函数main()之后定义,则必须在主函数之前先声明再调用。声明语句如下:

voiddelay1s(

);//延时函数声明

TH0=(65536-50000)/256,TL0=(65536-50000)%256;

定时器初值计算:由于定时器T0是16位加法计数器,分别由两个8位专用寄存器组成,分别为TH0和TL0。计数器初值如何装入这两个寄存器呢?假定系统采用12MHz晶振,机器周期为1μs,要求定时时间为50ms,则需要进行50000次计数,而定时器T0工作方式1的计数长度为65536,(65536-50000)即为计数的初值,将其转换为十六进制,则高8位即为TH0的值,低8位即为TL0的值,(65536-50000)/256,求模运算则可得到TH0的值,TL0=(65536-50000)%256,求余运算则可得到TL0的值。

4.电路板制作所需元器件及电路板参见项目二任务3。将目标代码文件A5-1.hex或C5-1.hex加载到单片机中,可观察到霓虹灯的显示效果,效果与任务1的要求完全吻合。

任务2计数报警电路(定时器实现计数功能)

1.任务要求利用51单片机定时器T0实现计数功能。当计数满n次后,发光二极管LED发光报警,报警时间为1s,1s后自动熄灭,其中次数n由用户指定。

2.硬件电路设计

1)电路图电路图参见图5-2。图5-2计数器报警电路原理图

2)电路图说明从图5-2中可以看出,利用51单片机的P3.4作为定时器T0的外部计数端,计数脉冲利用消抖开关JA产生。P1.0作为报警信号的控制端,当P1.0=0时,LED报警灯熄灭,反之LED报警灯点亮,且点亮时间为1s,1s后自动熄灭。

3.软件设计

1)设计方法定时器T0工作方式2,计数功能,计数初值X = 256-n,计数次数到,LED信号灯点亮报警,时间间隔为1s,之后自动熄灭。

2)流程图程序参考流程如图5-3所示。图5-3计数器报警电路程序流程图3)指令代码编写汇编语言代码。用汇编语言编写的指令代码如下:程序名:A5-2.ASM功能:利用定时器T0实现计数功能,设计数次数为

n=10。ORG0000HCLRP1.0 ;报警灯复位MOVTMOD,#06 ;定时器T0工作方式2,计数功能MOVTH0,#246 ;定时器T0的计数初值(实现10次计数)MOVTL0,#246 SETBTR0 ;启动定时器T0LP1: JBCTF0,LP2 ;查询计数是否溢出

SJMPLP1 ;次数未到,继续计数LP2: SETBP1.0 ;计数次数到,报警灯点亮

ACALLDELAY ;点亮时间为1s CLRP1.0 ;熄灭报警灯

SJMPLP1 ;继续等待 DELAY: MOVR1,#100;延时1s的子程序DE2: MOVR2,#10DE1: MOVR3,#250DE0: NOP NOP DJNZR3,DE0 DJNZR2,DE1 DJNZR1,DE2

RET END

MOVTH0,#246语句说明:由于定时器T0设置为方式2,计数功能,方式2的最大计数长度为256,程序设置其初值为246,则只需10次计数即可溢出,TF0溢出标志位置1,实现报警灯点亮报警功能。

MOVTL0,#246语句说明:在方式2中,TL0用作8位计数器,TH0用以保持初值。在程序初始化时,TL0和TH0由软件赋予相同的初值。一旦TL0计数溢出,TF0将被置位,同时TH0中的初值装入TL0,实现新一轮计数。(2)编写C语言代码。用C语言编写的指令代码如下://程序名:C5_2.C//功能:利用定时器T0实现计数功能,计数次数为n=10。#include<reg51.h> //包含reg51.h头文件sbitP1_0=P1^0; //定义位名称voiddelay1s() //定义延时函数delay1s{unsignedchari; //定义无符号字符型变量ifor(i=0;i<20;i++) //循环次数为20{ TH1=(65536-50000)/256; //设置定时器T1的初值 TL1=(65536-50000)%256;

TR1=1; //启动定时器T1while(!TF1); //查询定时时间是否到?定时时间到,TF1=1TF1=0; //将T1溢出标志位清零

}}voidmain() //主函数{

P1_0=0; //报警复位

TMOD=0x16; //设置定时器T0和T1的工作方式,T0为方式2,T1为方式1 TH0=246; //设置计数器的初值

TL0=246; TR0=1; //启动定时器T0while(1){while(!TF0); //查询计数溢出标志位是否溢出

{TF0=0; //将T0的溢出标志位清零

P1_0=1; //点亮报警灯

delay1s(); //报警灯点亮时间为1s P1_0=0; //熄灭报警灯

}}}

TMOD=0x16语句说明:程序中使用了2个定时器T0和T1,T0设置为方式2,计数功能,T1设置为方式1,定时功能,工作方式均与外部中断无关。因此,方式寄存器TMOD的初值应为00010110B,即16H。

4.电路板制作

1)计数报警电路元件清单计数报警电路所用器件如表5-1所示。

表5-1计数报警电路元件清单

2)计数报警电路的面包板制作按图5-2所示搭接电路板,面包板连接的实物如图5-4所示。图5-4计数报警电路应用电路板

将目标代码文件A5-2.hex或C5-2.hex加载到STC89C51单片机中,可观察到计数报警显示效果。知识点1单片机定时/计数器组成框图

STC89C51单片机内部有两个16位的可编程定时/计数器,称为定时器T0和定时器T1,用户可编程选择其作为定时器或计数器使用。可编程定时/计数器的工作方式、定时时间、计数值、启动、中断请求等都可以由程序来设定,其逻辑结构图如图5-5所示。5.2项目基本知识图5-5STC89C51定时/计数器逻辑结构图

由图5-5可知,STC89C51定时/计数器由定时器T0、定时器T1、工作方式寄存器TMOD和控制寄存器TCON四部分组成。定时器T0和T1是两个16位加法计数器,分别由两个8位专用寄存器组成,定时器T0由TH0和TL0组成,定时器T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问地址分别为8AH~8DH,每个寄存器均可被单独访问。定时器T0和T1用作定时器时,是对内部机器周期进行计数,由于机器周期是定值,若计数值确定,则定时时间也随之确定;用作计数器时,从单片机STC89C51芯片引脚T0(P3.4)和T1(P3.5)上输入的脉冲进行计数,每输入一个脉冲,加法计数器加1。

定时器T0、定时器T1、TMOD、TCON间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动和停止。知识点2定时/计数器工作原理

定时工作原理:当单片机的定时/计数器为定时工作方式时,计数器对内部的机器周期进行计数,每过一个机器周期,计数器加1,直至计满溢出。显然,定时器的定时时间与系统的振荡频率有关。51单片机的一个机器周期由12个振荡脉冲组成,若单片机系统采用12MHz晶振,其机器周期为1μs,这是最短的定时周期,适当选择定时器的初值则可获得各种定时时间。

计数工作原理:当单片机的定时/计数器为计数工作方式时,是对单片机芯片引脚T0(P3.4)和T1(P3.5)外部输入信号进行计数,输入脉冲信号的下降沿将触发计数。若前一个机器周期采样值为“1”,下一个机器周期采样值为“0”,则计数值加1。为了确保某个电平在变化之前至少被采样一次,要求电平持续时间至少是一个完整的机器周期。

不管定时器T0和T1是定时工作方式还是计数工作方式,定时器在对内部机器周期或对外部输入信号进行计数时,均不占用CPU时间,除非定时器溢出,才能中断CPU的当前操作。知识点3方式寄存器TMOD和控制寄存器TCON

在上述任务1和任务2中,在启动定时/计数器工作之前,CPU必须将一些命令写入定时/计数器中,这个过程称为定时/计数器的初始化。定时器的初始化就是通过设置方式寄存器TMOD和控制寄存器TCON来完成的。

1.方式寄存器TMOD

TMOD为设置定时器T0和T1的工作方式,其格式如图5-6所示。图5-6定时器方式寄存器TMOD的位定

在图5-6中,低4位设置定时器T0的工作方式,高4位设置定时器T1的工作方式,若单片机复位时,TMOD所有位均置0,各位功能说明如下:

(1) M1和M0:方式选择位。两位二进制可形成4种编码,对应于4种工作方式,这几种工作方式的功能说明如表5-2所示。各种工作方式的具体操作及功能差别将在后面叙述。表5-2定时器的4种工作方式及功能说明

(2) :定时方式/计数方式选择位。=0,设置为定时工作方式,=1,设置为计数工作方式。

(3) GATE:门控位。当GATE=0时,只需将启动位TR0或TR1置1即可启动定时器,而不管或引脚电平高低。若GATE=1,不仅需要将启动位TR0和TR1置1,同时还需将或引脚置1,才能启动定时器。

例1设置定时器的工作方式寄存器TMOD。要求:定时器T0为工作方式1,定时功能,定时工作方式与外部中断无关。由题可知,M1=0,M0=1,=0,GATE=0,因此,低4位应为0001;而定时器T1未使用,一般将其设为0000。因此,指令形式为:MOVTMOD,#01H(汇编语言)或TMOD=0x01(C语言)。

TMOD不能进行位寻址,只能用字节设置定时器的工作方式,低半字节设定T0,高半字节设定T1。

2.控制寄存器TCON

TCON作用是设置定时器的启动、停止、标志定时器的溢出和中断情况,其格式如图5-7所示。图5-7定时器控制寄存器TCON的位定义

TCON寄存器中低4位用于控制外部中断,与定时/计数器无关,它们的含义将在下一项目详细介绍。当系统复位时,TCON所有位均置0。各位功能说明如下:

(1) TF1(TCON.7):定时器T1的溢出标志位。当定时器T1计满数产生溢出时,由硬件自动置TF1=1。在中断允许时,该位向CPU发出定时器1的中断请求,若CPU响应中断请求,进入中断服务程序后,该位由硬件自动置0。TF1也可由软件置0,此时TF1作查询测试使用。

(2) TR1(TCON.6):定时器T1的启动位。由软件置1或置0来启动或关闭定时器T1。若GATE=0,只需TR1=1即可启动定时器T1;若GATE=1,则不仅需要TR1=1,同时要求=1,才能启动定时器T1。

(3) TF0(TCON.5):定时器T0的溢出标志位,其功能和操作情况如同TF1。

(4) TR0(TCON.4):定时器T0的启动位,其功能和操作情况如图TR1。

TCON不仅可以进行字节寻址,也可以进行位寻址。

3.定时/计数器的初值计算定时/计数器的初值因工作方式的不同而不同。设最大计数值为M,则各种工作方式下的M值如下:方式0:M = 213 = 8192;方式1:M = 216 = 65536;方式2:M = 28 = 256;方式3:定时器T0分为两个8位计数器,每个M值均为256。

设定时/计数器的初值为X,系统的振荡频率为f,其机器周期,则定时时间t为

例2设置定时器T0的初始值。要求定时时间为50ms,工作在方式1,系统采用12MHz晶振。由题可知,机器周期,定时时间,则计数初值为

因此,指令形式为:MOVTH0,#3CHMOVTL0,#0B0H(汇编语言)或TH0=0x3C,TL0=0xB0(C语言)。知识点4定时/计数器的工作方式

定时器T0和T1可由软件对TMOD中M1、M0进行设置,可选择4种工作方式,即方式0、方式1、方式2和方式3。在方式0、1和2时,定时器T0和T1工作方式相同,在方式3时,两个定时器的工作方式不同。

1.方式0方式0为13位定时/计数器。图5-8是定时器T0在方式0时的逻辑电路结构图(定时器T1的结构和操作与定时器T0完全相同)。图5-8定时器T0在方式0时逻辑电路结构图

当GATE=0时,或门被封锁,信号无效,或门输出为1,则与门输出直接由TR0控制。若TR0=1,则与门开启,控制开关被接通,定时器T0实现定时或计数功能;若TR0=0,则与门关闭,控制开关断开,定时器T0被关闭。当GATE=1时,与门的输出就需要和TR0的状态来确定。若TR0=1,则与门开启,引脚直接控制定时器T0的开启或关断。若=1,则启动定时器T0,若=0,则关闭定时器T0。若TR0=0,则与门被封锁,控制开关被关断,关闭定时器。

2.方式1方式1为16位定时/计数器,其结构和操作几乎与方式0相同,唯一差别在于两者的计数长度不同。其逻辑电路结构如图5-9所示。图5-9定时器T0在方式1时逻辑电路结构图

3.方式2方式2为8位定时/计数器,其逻辑电路结构如图5-10所示。图5-10定时器T0在方式2时逻辑电路结构图

在图5-10中,16位定时/计数器被拆分成了一个可以自动重装载的8位定时器。TH0作为一个8位寄存器使用,存放的是计数器初始值;TL0做8位的加1计数器。当TL0计数溢出时,不仅使溢出标志位TF0置1,同时还自动把TH0中的内容重装载到TL0中。因此,在方式2中,16位加法计数器被拆成两部分:TL0用作8位计数器,TH0用以保持初值。在程序初始化时,TH0和TL0由软件赋予相同的初值,一旦TL0计数溢出,TF0将被置位,并将TH0中的初值再自动装入TL0中,从而进行新一轮计数。

在方式0和方式1进行循环计数时,每次计满溢出后,计数器都复位清0,所以要进行新一轮计数时,必须重新装入计数初值。这不仅导致编程麻烦,而且影响定时时间精度。而方式2具有初值自动装入功能,避免了上述缺陷,适合用作较精确的定时,特别适于串行口波特率发生器。

4.方式3在前3种工作方式下,定时/计数器T0和T1的功能完全相同,但在方式3下,T0和T1的功能大不相同。定时器T0的逻辑电路结构如图5-11所示。图5-11定时器T0在方式3时逻辑电路结构图

在图5-11中,TL0和TH0被分成两个相互独立的8位计数器,其中TL0用原定时器T0的控制位、引脚和中断源,即、GATE、TR0、TF0、T0(P3.4)引脚、引脚。TL0除了仅用8位计数外,其功能与操作方式与方式0(13位计数)、方式1(16位计数)完全相同。同时,TL0可工作在定时或计数状态。

TH0只可用于简单的内部定时功能,占用了定时器T1的启动位TR1和溢出标志位TF1,其启动和关闭受TR1的控制。定时/计数器T1无方式3状态,若将T1设置为方式3,则会使T1立即停止计数。但定时器T0设置为方式3时,T1仍可工作在方式0~2。在定时器T0设置为方式3时,T1的逻辑电路结构如图5-12所示。图5-12定时器T0在方式3时,T1逻辑电路结构图

在图5-12中,由于定时器T0工作为方式3,其TH0已经使用了定时器T1的TR1、TF1及T1的中断源。因此,定时器T1的状态决定是定时功能还是计数功能。同时,由于没有溢出标志位,只能将其送往串行口。在这种情况下,定时器T1一般用作串行口波特发生器或用于不需要中断的场合。任务3方波发生器

1.任务要求利用51单片机的定时器T0产生一个25Hz的方波,由单片机P1.0输出,采用查询方式进行控制,设系统晶振频率为12MHz。

5.3技能拓展

2.硬件电路设计设计思路:由任务要求可知,方波的频率为25Hz,其周期应为,方波的占空比应为1∶1,故定时器T0用于定时功能,工作在方式1,定时时间为20ms,定时时间到,将P1.0取反即可实现题目所要求的功能。

定时器初值计算:系统晶振频率为12MHz,则机器周期为1μs,定时时间为20ms =20000μs,则初始值为。因此,指令形式为:MOVTH0,#0B1HMOVTL0,#0E0H(汇编语言)或TH0=0xB1,TL0=0xE0(C语言)。电路如图5-13所示。图5-13方波发生器电路3.软件设计1)流程图程序参考流程如图5-14所示。图5-14方波发生器电路程序流程图2)指令代码(1)编写汇编语言代码。用汇编语言编写的指令代码如下:

(2)编写C语言代码。用C语言编写的指令代码如下:

4.电路板制作

1)方波发生器电路元件清单方波发生器所用器件清单如表5-3所示。表5-3方波发生器电路元件清单

2)方波发生器电路的面包板制作按图5-13所示搭接电路板,面包板连接的实物如图5-15所示。图5-15方波发生器应用电路板

将目标代码文件A5-3.hex或C5-3.hex加载到STC89C51单片机中,可观察到示波器上显示的方波如图5-16所示,利用示波器测得方波的周期为39.88ms,误差非常小,实现了任务3所要求的功能。图5-16方波波形周期测量图

问1:任务1中,定时器T0使用工作于方式1,若用方式2工作,试问程序该如何编写?程序说明:因方式2为8位计数器,其最大定时时间为256μs,为实现1s定时时间,可选择定时时间为250μs,再循环4000次。5.4互动环节

定时器初值计算:系统晶振频率为12MHz,则机器周期为1μs,定时时间为250μs,则初始值为。因此,指令形式为:MOVTH0,#06HMOVTL0,#06H(汇编语言)或TH0=0x06,TL0=0x06(C语言)。用汇编语言编写的指令代码:

;;程序名:A5_4.ASM ;;功能:间隔显示为1s的霓虹灯程序

ORG0000HMAIN: MOVR1,#08H ;定义循环次数

MOVA,#0FEH;给A附初值为FEH NEXT:MOVP1,A ;点亮第1个霓虹灯

ACALLDELAY;调用延时子程序DELAY RLA ;循环左移1位

DJNZR1,NEXT;判断8个霓虹灯是否依次点亮完毕

SJMPMAIN ;8个霓虹灯循环显示DELAY:

MOVR2,#40 ;设置循环次数4000次

MOVR3,#100 MOVTMOD,#02H

;设置定时器T0为方式2 MOVTH0,#06H;设置定时器T0的初值

MOVTL0,#06H SETBTR0 ;启动定时器T0LP1: JBCTF0,LP2 ;查询计数是否溢出

SJMPLP1 ;未到250us,继续计数LP2: DJNZR3,LP1 ;未到25ms,继续计数

MOVR3,#100 DJNZR2,LP1 ;未到1s,继续循环

RET ;返回主程序

END ;结束

MOVR3,#100语句说明:程序中用了两次该语句,第一次是设置内循环的循环次数,那么第二次为什么要再次重新给R3赋值呢?因为在进行内循环100次之后,R3的值已经减为0,然而内循环之后还要进行外循环,如果不给R3重新赋值100,那R3的值就是从0开始,达不到题目的要求,故内循环结束之后,需重新给R3赋值。(2)用C语言编写的指令代码://程序名:C5_4.C//功能:是间隔显示为1s的霓虹灯程序#include<reg51.h> //包含reg51.h头文件voiddelay1s() //定义延时函数delay1s{unsignedinti; //定义整型变量ifor(i=0;i<4000;i++) //循环次数为4000次TH0=0x06; //设置定时器T0的初值

TL0=0x06;TR0=1; //启动定时器T0while(!TF0);//查询定时时间是否到?定时时间到,TF0=1TF0=0; //将T0溢出标志位清零

}}voidmain() //主函数{ unsignedcharj,w; //定义无符号字符型变量j和wTMOD=0x02; //设置定时器T0的工作方式

while(1){w=0x01; //设置w的初始值

for(j=0;j<8;j++)

{P1=~w; //w取反后送P1口,点亮相应的LED灯

w<<=1; //左移一位

delay1s(); //调用1s的延时函数

}}}

for(i=0;i<4000;i++)语句说明:由于变量i定义为无符号的整型变量,其数值范围为0~65535,循环次数4000在其范围之内。若定义i为无符号字符型变量,则其数值范围为0~255,循环4000次必须要用双循环才能实现,即用下列语句也可实现相同的目的。unsignedchari,k;for(i=0;i<200;i++){for(k=0;k<20;k++){……}}

问2:任务2中开关JA为什么要进行消抖处理?答:机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来,抖动时间一般为5~10ms,可以采取硬件消抖和软件消抖两种处理方式。任务2中采用的是硬件消抖,利用基本RS触发器,当开关JA按下或释放时,触发器的输出状态保持一致,不会发生抖动。软件消抖的原理请读者查阅项目七中的内容。

问3:任务3中的程序段:

LP1: JBCTF0,LP2

SJMPLP1

LP2:……

请问是否可以使用其他语句来实现定时器的查询目的?答:可以,下列语句也可以达到上述程序段的目的。

LP1: JNBTF0,$

CLRTF0

LP2:……

JNBTF0,$语句说明:若定时器T0定时时间未到,则TF0=0,程序继续等待,若TF0=1,则表示溢出,则执行下一条语句CLRTF0,将溢出标志位TF0清零处理,为下一次定时做好准备。知识回顾与项目小结

51单片机内部有两个可编程的定时/计数器T0和T1,每个定时/计数器有4种工作方式:方式0~3。方式0为13位定时/计数器;方式1为16位定时/计数器;方式2为自动重装载初值的8位定时/计数器;方式3只适用了定时器T0,将T0分成两个独立的8位定时/计数器。4种不同的工作方式,其定时/计数的最大值也各不相同。

对于定时/计数器程序的编写包括如何设置方式寄存器TMOD、控制寄存器TCON和定时/计数器初值计算三部分。本项目中的3个任务详细介绍了定时/计数器程序的编写步骤。

本项目中的3个任务,任务1是定时/计数器实现定时1s的功能,工作在方式1,实现对霓虹灯的控制;任务2是定时/计数器实现计数功能,工作在方式2,当计数次数到,实现报警功能;任务3是定时/计数器综合应用,利用定时/计数器产生方波信号,从P1.0输出,利用示波器观察方波信号,并测出其周期。本项目中的3个任务,任务1是定时/计数器实现定时1s的功能,工作在方式1,实现对霓虹灯的控制;任务2是定时/计数器实现计数功能,工作在方式2,当计数次数到,实现报警功能;任务3是定时/计数器综合应用,利用定时/计数器产生方波信号,从P1.0输出,利用示波器观察方波信号,并测出其周期。5.5习题汇编语言部分1.单项选择题(1) 51单片机的定时器T1用作定时方式时是

A.由内部时钟频率定时,一个时钟周期加1

B.由内部时钟频率定时,一个机器周期加1

C.由外部时钟频率定时,一个时钟周期加1

D.由外部时钟频率定时,一个机器周期加1(2) 51单片机的定时器T0实现计数功能,计数脉冲是

A.外部计数脉冲,由T1(P3.5)输入

B.外部计数脉冲,由T0(P3.4)输入

C.外部计数脉冲,由内部时钟频率提供

D.由外部计数脉冲计数(3) 51单片机的定时器T0若工作在方式1,定时功能,则TMOD控制字为

A.01H B.10H C.02H D.20H(4) 51单片机的定时器T1若工作在方式2,计数功能,则TMOD控制字为

A.02H B.20H C.06H D.60H(5) 51单片机的定时器T0若工作在方式1,定时功能,且与外部中断无关,定时器T1工作在方式0,计数功能,且与外部中断有关,则TMOD控制字为

A.1CH B.C1H C.41H D.14H(6)启动定时器1开始定时的指令是

A.CLRTR0 B.CLRTR1

C.SETBTR0 D.SETBTR1(7) 51单片机的定时器T1停止计数指令为

A.CLRTR0 B.CLRTR1

C.SETBTR0 D.SETBTR1(8) 51单片机的定时器T0的溢出标志为

A.TR0 B.TR1 C.TF0 D.TF1(9) 51单片机的定时器T0,若用软启动,应使TMOD中的

A.GATE位置1 B.位置1

C.GATE位置0

D.位置0(10)下列指令判断若定时器T0未计满数就原地等待的是

A.JBT0,$ B.JNBTF0,$

C.JNBTR0,$ D.JBTF0,$2.填空题

(1) 51单片机的定时/计数器内部结构由4部分组成:①

(2)定时器T0的溢出标志位是______,启动标志位是______。

(3)定时器T1工作方式1,则其计数的最大值M=____

_。

(4)若定时器T0工作为方式1,定时功能,定时时间为30ms,假设系统晶振频率为6MHz,则计数的初值为

(5) 51单片机的定时器T1,其计数功能的外部脉冲由

提供。

温馨提示

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

评论

0/150

提交评论