单片机原理及接口技术(C51编程)第7章 定时器计数器
C51定时器计数器
TH1=0x63;
EA=1;
TL1=0x18;
ET1=1;
}
三、定时器/计数器工作方式
2、工作方式1 ➢M1M0= 01? 作定时器:TMOD= 0?0000001=0x01 作计数器:TMOD= 0?0000101=0x05
➢16位计数器 TH:8位 TL:8位
三、定时器/计数器工作方式
2、工作方式1
16位计数器,逻辑结构框图如下:
振荡器 ÷12 C/T=0
T0 TR0
GATE INT0端
C/T=1 &
l ≥l
控制
TH0 TL0
(8位) (8位)
TF0
EA
&
ET0
中断 &
方式1使用范例
例1:已知单片机晶振频率6MHz,利用T0的方 式1在P1.0引脚输出周期为500us的方波
例2:单片机晶振频率12MHz,利用T1的方式1 实现1s延时,每隔1s时间P1.0引脚翻转一次
T0和T1的设置和使用不同
4.工作方式3
振荡器 ÷12 C/T=0
T0端
GATE INT0端
C/T=1TR0Leabharlann &l ≥l
振荡器 ÷12
仅作定时 TR1 器用!
控制
TL0 (8位)
T0中断
TF0
&
EA & ET0
控制
TH0 (8位)
TF1 T1中断
4、工作方式3
fosc T0 TR0 GATE INT0
2、定时/计数器的工作原理
振荡器 ÷12 C/T=0
TX端
C/T=1
加1 计数器
TFx
申请 中断
80c51单片机定时器计数器工作原理
80c51单片机定时器计数器工作原理80C51单片机是一种常用的微控制器,其定时器/计数器(Timer/Counter)是实现定时和计数功能的重要组件。
以下简要介绍80C51单片机定时器/计数器的工作原理:1. 结构:定时器/计数器由一个16位的加法器构成,可以自动加0xFFFF(即65535)。
定时器/计数器的输入时钟可以来自系统时钟或外部时钟源。
2. 工作模式:定时模式:当定时器/计数器的输入时钟源驱动加法器不断计数时,可以在达到一定时间后产生中断或产生其他操作。
计数模式:当外部事件(如电平变化)发生时,定时器/计数器的输入引脚可以接收信号,使加法器产生一个增量,从而计数外部事件发生的次数。
3. 定时常数:在定时模式下,定时常数(即定时时间)由预分频器和定时器/计数器的初值共同决定。
例如,如果预分频器设置为1,定时器/计数器的初值为X,那么实际的定时时间 = (65535 - X) 预分频系数输入时钟周期。
在计数模式下,定时常数由外部事件发生的时间间隔决定。
4. 溢出和中断:当加法器达到65535(即0xFFFF)时,会产生溢出,并触发中断或其他操作。
中断处理程序可以用于执行特定的任务或重置定时器/计数器的值。
5. 控制寄存器:定时器/计数器的操作可以通过设置相关的控制寄存器来控制,如启动/停止定时器、设置预分频系数等。
6. 应用:定时器/计数器在许多应用中都很有用,如时间延迟、频率测量、事件计数等。
为了充分利用80C51单片机的定时器/计数器功能,通常需要根据实际应用需求配置和控制相应的寄存器,并编写适当的软件来处理定时器和计数器的操作。
单片机原理及接口技术课后答案第七章
第七章1、什么是串行异步通信,它有哪些作用?答:在异步串行通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式参考书。
通信采用帧格式,无需同步字符。
存在空闲位也是异步通信的特征之一。
2、89C51单片机的串行口由哪些功能部件组成?各有什么作用?答:89C51单片机的串行接口由发送缓冲期SBUF,接收缓冲期SBUF、输入移位寄存器、串行接口控制器SCON、定时器T1构成的波特率发生器等部件组成。
由发送缓冲期SBUF发送数据,接收缓冲期SBUF接收数据。
串行接口通信的工作方式选择、接收和发送控制及状态等均由串行接口控制寄存器SCON控制和指示。
定时器T1产生串行通信所需的波特率。
3、简述串行口接收和发送数据的过程。
答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读和写的。
当向SBUF发“写”命令时(执行“MOV SBUF,A”),即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。
在满足串行接口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN (SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。
当发读SBUF命令时(执行“MOV A, SBUF”),便由接收缓冲期SBUF 取出信息通过89C51内部总线送CPU。
4、89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?答:89C51串行口有4种工作方式:方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。
有2种帧格式:10位,11位方式0:方式0的波特率≌fosc/12(波特率固定为振荡频率1/12)方式2:方式2波特率≌2SMOD/64×fosc方式1和方式3:方式1和方式3波特率≌2SMOD/32×(T1溢出速率)如果T1采用模式2则:5、若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少?答:已知每分钟传送3600个字符,方式3每个字符11位,则:波特率=(11b/字符)×(3600字符/60s)=660b/s6、89C51中SCON的SM2,TB8,RB8有何作用?答:89c51SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。
C51单片机定时计数器应用编程归纳总结
C51 T and C● 80C51单片机内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1。
● 对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。
● 计数器由二个8位计数器组成。
● 定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。
调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。
● 定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚Tx(P3.4、P3.5)输入。
且外部脉冲的最高频率不能超过时钟频率的1/24一、定时/计数器的结构定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
二、定时/计数器的工作原理加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。
每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON 中TF0或TF1置1,向CPU 发出中断请求(定时/计数器中断允许时)。
如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N 乘以机器周期Tcy 就是定时时间t 。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
微机原理与接口技术第七章课后答案
微机原理与接口技术第七章课后答案1、 Keil uVision 5集成开发环境中,钩选“creat Hex File”复选框后,默认状态下的机器代码文件名与()相同。
[单选题] *A、项目名(正确答案)B、文件名C、项目文件夹名D、主函数名2、 Keil uVision 5集成开发环境中,编译生成的机器代码文件的后缀名为() [单选题] *A、.mifB、.asmC、 .hex(正确答案)D、 .uvproj3、累加器与扩展RAM进行数据传送,采用的助记符是() [单选题] *A、MOVB、 MOVCC、MOVX(正确答案)D、 XCH4、对于高128字节,访问时采用的寻址方式是() [单选题] *A、直接寻址B、寄存器间接寻址(正确答案)C、变址寻址D、立即数5、对于特殊功能寄存器,访问时采用的寻址方式是() [单选题] *A、直接寻址(正确答案)B、寄存器间接寻址C、变址寻址D、立即数6、对于程序存储器,访问时采用的寻址方式是() [单选题] *A、直接寻址B、寄存器间接寻址C、变址寻址(正确答案)D、立即数7、定义变量x为8位无符号数,并将其分配的程序存储空间,赋值100,正确的是() [单选题] *A、unsigned char code x=100;(正确答案)B、 unsigned char data x=100;C、 unsigned char xdata x=100;D、 unsigned char bdata x=100;8、当执行P1=P1&0xfe;程序时相当于对P1.0进行()操作,不影响其他位。
[单选题] *A、置1B、清零(正确答案)C、取反D、不变9、当执行P2=P2|0x01;程序时相当于对P2.0进行()操作,不影响其他位 [单选题] *A、置1(正确答案)B、清零C、取反D、不变10、当执行P3=P3^0x01;程序时相当于对P3.0进行()操作,不影响其他位 [单选题] *A、置1B、清零C、取反(正确答案)D、不变11、当(TMOD)=0x01时,定时/计数器T1工作于方式()状态 [单选题] *A、0,定时(正确答案)B、 0,计数C、 1,定时D、 1,计数12、当(TMOD)=0x00时,T0X12为1时,定时时/计数器T0计数脉冲是() [单选题] *A、系统时钟;(正确答案)B、系统时钟的12分频信号;C、P3.4引脚输入信号;D、 P3.5引脚输入信号13、当(IT0)=1时,外部中断0触发的方式是() [单选题] *A、高电平触发;B、低电平触发;C、下降沿触发(正确答案)D、上升沿/下降沿触皆触发14、 IAP15W4K58S4单片机串行接口1在工作方式1状态下工作时,一个字符帧的位数是() [单选题] *A、8B、 9C、 10(正确答案)D、1115、当(SM1)=1,(SM0)=0时,IAP15W4K58S4单片机的串行接口工作方式为()[单选题] *A、工作方式0B、工作方式1(正确答案)C、工作方式2D、工作方式316、 IAP15W4K58S4单片机的A/D转换模块中转换电路的类型是() [单选题] *A、逐次比较型(正确答案)B、并行比较型C、双积分型D、Σ-Δ型17 IAP15W4K58S4单片机的A/D转换的8个通道是在()口 [单选题] *A、P0B、 P1(正确答案)C、 P2D、P318、IAP15W4K58S4单片机的PWM计数器是一个()位的计数器。
51单片机定时计数器的工作原理
51单片机定时计数器的工作原理
51单片机是一种常用的微控制器,它具有多个定时计数器,其中包括定时器0和定时器1。
这些定时计数器是通过内部时
钟源提供的脉冲进行计数的。
定时器0和定时器1是独立的计数器,它们可以用于不同
的应用。
这里我们将主要关注定时器0的工作原理。
定时器0
由一个八位计数器和一个控制寄存器组成。
当定时器0启动时,它会根据时钟源提供的脉冲进行计数,每个脉冲会使计数器的值增加1。
定时器0的计数范围为0-255,即八位二进制数。
通过控制寄存器,我们可以设置定时器0的工作模式、计
数器的初始值以及时钟源的频率。
定时器0可以以不同的方式工作,包括定时模式和计数模式。
在定时模式下,我们可以设置一个初始值,并在每次计数
器增加到该值时产生一个中断。
这样就可以实现精确的定时功能。
定时器0的中断服务程序可以完成各种操作,例如控制其他外设、延时等。
在计数模式下,定时器0将简单地计数外部触发信号的脉
冲次数。
这可以用于测量外部事件的时间间隔或频率。
需要注意的是,定时器0的工作需要通过编程来完成。
我
们可以使用汇编语言或C语言来配置定时器0的寄存器,并
设计相应的中断服务程序。
51单片机定时器的工作原理是通过定时器0和定时器1实
现计数功能。
定时器0可以在定时模式或计数模式下工作,通过设置计数值和时钟源频率,实现精确的定时功能或测量外部
事件的时间间隔或频率。
编程则是必不可少的,通过配置寄存器和编写中断服务程序来实现定时器的工作。
《单片机原理及接口技术》第7章习题及答案
《单片机原理及接口技术》(第2版)人民邮电出版社第7章 AT89S51单片机的串行口思考题及习题71.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。
答:方式1。
2.在串行通信中,收发双方对波特率的设定应该是的。
答:相等的。
3.下列选项中,是正确的。
A.串行口通信的第9数据位的功能可由用户定义。
对B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。
对C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中。
错D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。
对E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。
对4.通过串行口发送或接收数据时,在程序中应使用。
A.MOVC指令B.MOVX指令 C.MOV指令 D.XCHD指令答:C5.串行口工作方式1的波特率是。
A.固定的,为f osc/32 B.固定的,为f osc/16C.可变的,通过定时器/计数器T1的溢出率设定D.固定的,为f osc/64答:C6.在异步串行通信中,接收方是如何知道发送方开始发送数据的?答:当接收方检测到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。
7.AT89S51单片机的串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?答:串行口有4种工作方式:方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率,方式1的波特率=2SMOD /32×定时器T1的溢出率方式2的波特率=2SMOD /64×fosc方式3的波特率=2SMOD /32×定时器T1的溢出率8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B ”的帧格式。
单片机原理及接口技术(C51编程)(第2版)-习题答案 - 第7章习题解答
第7章思考题及习题7参考答案一、填空1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。
答:32.768ms,262.144ms,1024µs2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。
答:1/243.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。
答:系统时钟信号12分频后,定时器初值4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。
答:方式1定时,131.072ms。
5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。
答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。
答:FCH,18H。
二、单选1.定时器T0工作在方式3时,定时器T1有种工作方式。
A.1种B.2种 C.3种D.4种答:C2. 定时器T0、T1工作于方式1时,其计数器为位。
A.8位B.16位C.14位D.13位答:B3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。
A. 仅取决于TR x状态B. 仅取决于GATE位状态C. 是由TR x和INT x两个条件来共同控制D. 仅取决于INT x的状态答:C4. 定时器T2工作在自动重装载方式时,其计数器为位。
A.8位B. 13位C.14位D. 16位答:D5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。
A.87HB. 09HC.80HD. 00H答:B三、判断对错1.下列关于T0、T1的哪些说法是正确的。
A.特殊功能寄存器SCON,与定时器/计数器的控制无关。
单片机原理及接口技术(C51编程)单片机各种应用设计
unsigned long freq;
//定义频率
unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,
0x7d,
0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
//共阴数码管段码表
void delay_1ms(unsigned int z) { //函数功能:延时约1ms
#define out P2
sbit pos=P0^0;
//定义检测正转控制位P0.0
sbit neg=P0^1;
//定义检测反转控制位P0.1
void delayms(uint);
uchar code
turn[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
步进电机是将脉冲信号转变为角位移或线位移的开环控 制元件。
非超载的情况下,电机转速、停止位置只取决于脉冲信 号的频率和脉冲数,而不受负载变化的影响,给电机加一脉 冲信号,电机则转过一个步距角。因而步进电机只有周期性 误差而无累积误差,在速度、位置等控制领域有较为广泛的 应用。
12.1 单片机控制步进电机的设计
12.2 单片机控制直流电机
2. 电路设计与编程
当P3.6=1时,P3.7发送PWM波,直流电机正转。且 可通过“INC”和“DEC”两个按键来增大和减少直流电机 转速。反之,P3.6=0时,P3.7发送PWM信号,直流电机反 转。
因此,增大和减小电机转速,实际上是通过按下 “INC”或“DEC”按键来改变输出PWM信号占空比,控 制直流电机转速。图12-4中驱动电路使用了NPN低频、低 噪声小功率达林顿管 2SC2547。
单片机原理与接口技术
《单片机原理与接口技术》教学大纲课程名称:单片机原理与接口技术Fundamentals of Mono-Chip b Computers and Interface Technology课程编号:202020课程类型:专业主干课学时/学分:32/2适用专业:电子信息工程一、前言(一)课程性质本课程是计算机科学与技术领域的专业理论课,它上承“电子技术基础”等专业理论基础课,下启“接口技术”和“计算机控制技术”等专业课,在其间起着桥梁和纽带的作用,因此是非常重要的应用技术专业理论课。
(二)教学目标通过本课程的学习,应使学生在掌握单片机基本理论知识的基础上,着重强化应用所学知识的能力和实际动手能力。
因此,在教学过程中既要重视基础理论的培养,也要重视实验等实践性环节,基础理论知识和基本应用能力并重,为后续专业课的学习及学生从业后自学相关知识、更好地从事相关技术工作奠定良好的基础。
(三)教学要求要求学生能够全面深入理解所学内容,并能够用分析、初步设计解答与网络相关的问题,能够举一反三。
了解单片机应用系统各主要环节的设计、调试方法,并了解单片机在测量、控制等电子技术应用领域的应用,要求学生能够较好地理解和掌握,并能够进行简单的分析和判断。
要求学生能够一般地了解所学内容。
掌握单片机应用系统设计与制作的基本方法与步骤,能够熟练运用仿真开发环境调试软、硬件。
(四)先修课程《模拟电子技术》、《数字电子技术》、《微机原理及应用》、《电路基础》、《C 程序设计》。
二、课程内容第一章单片机概述教学内容及总体要求:本章介绍有关单片机的基础知识、发展历史、应用领域以及发展趋势,并对当前8位单片机的主流机型、且占有较大市场份额的MCS—51系列单片机及其兼容的单片机(统称为51系列单片机)进行简要概述。
对目前流行的51的单片机的代表性机型:美国ATMEL 公司的AT89C5x/AT89S5x系列单片机以及其中最具代表性的产品AT89S51进行详细介绍。
单片机原理及接口技术 第七章
7.6.2 中断返回
在中断服务子程序的最后要安排 一条中断返回指令IRET,执行该指令, 系统自动将堆栈内保存的 IP/EIP和CS 值弹出,从而恢复主程序断点处的地 址值,同时还自动恢复标志寄存器FR 或EFR的内容,使CPU转到被中断的程 序中继续执行。
7.6.4 中断请求的撤除
①若ITO (ITl) =0,外中断为电平触发方式。单片机在每一个机器周期的S5P2期间采样中断输入信号INTO (INT1)的状态,若为低电平,即可使TCON寄存器中的中断请求标志位IEO (IEl)置位,若满足响应条件就能得 以及时响应。由于外中断源在每个机器周期被采样一次,所以输入的低电平至少必须保持12个振荡周期,以保 证能被采样到。而一旦CPU响应中断,进入中断服务程序时,IEO (IEl)会被CPU自动删除,但由于中断系统没有 对外的中断应答信号,即中断响应后没有信号输出去通知外设结束中断申请,所以,设计人员如果没有措施来 撤除低电平信号,则在下一个机器周期CPU检测外中断申请时又会发现有低电平信号而将IEO (IEl)重新置位。
外部中断是由外部原因引起的,共有两个中断源,及外部中断0和外部中断1,相应的中断 请求信号输入端是INT0和INT1。 外部中断INT0和INT1有两种触发方式,即电触发方式和脉冲触发方式。
7.4.2 定时中断类
定时中断发生在单片机的内部,也有两个中断源,即为定时/计数器0溢出中断和定时/计 数器1溢出中断。
7.4 中断源类型
中断源,中断是指由于某种事件的发生(硬件或者软件的),计算机暂停执行当前的程序, 转而执行另一程序,以处理发生的事件,处理完毕后又返回原程序继续作业的过程。中断是 处理器一种工作状态的描述。我们把引起中断的原因,或者能够发出中断请求信号的来源统 称为中断源。
单片机原理与接口技术第三版课后答案
单片机原理与接口技术第三版课后答案【篇一:单片机原理及接口技术课后答案李朝青 (第三版)】lass=txt>第一章1.单片机具有哪些特点(1)片内存储容量越来越大。
(2抗干扰性好,可靠性高。
(3)芯片引线齐全,容易扩展。
(4)运行速度高,控制功能强。
(5)单片机内部的数据信息保存时间很长,有的芯片可以达到100年以上。
2. 89c51单片机内包含哪些主要逻辑功能部件?答:80c51系列单片机在片内集成了以下主要逻辑功能部件:(l)cpu(中央处理器):8位(2)片内ram:128b(3)特殊功能寄存器:21个(4)程序存储器:4kb(5)并行i/o口:8位,4个(6)串行接口:全双工,1个(7)定时器/计数器:16位,2个(8)片内时钟电路:1个3.什么是微处理器(cpu)、微机和单片机?答:微处理器本身不是计算机,但它是小型计算机或微机的控制和处理部分。
微机则是具有完整运算及控制功能的计算机,除了微处理器外还包括存储器、接口适配器以及输入输出设备等。
单片机是将微处理器、一定容量的ram、rom以及i/o口、定时器等电路集成在一块芯片上,构成的单片微型计算机。
4. 微型计算机怎样执行一个程序?答:通过cpu指令,提到内存当中,再逐一执行。
5.什么是嵌入式系统?他有哪些类型?为什么说单片机是典型的嵌入式系统?答; 嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
它有嵌入式微处理器、嵌入式微控制器、嵌入式dsp处理器、嵌入式片上系统等。
嵌入式系统的出现最初是基于单片机的。
它从体系结构到指令系统都是按照嵌入式应用特点专门设计的,能最好的满足面对控制对象,应运系统的嵌入、现场的可靠运行以及非凡的控制品质要求。
因此,她是典型的嵌入式系统。
第二章1.89c51单片机内包含哪些主要逻辑功能部件?答:80c51系列单片机在片内集成了以下主要逻辑功能部件:(l)cpu(中央处理器):8位(2)片内ram:128b(3)特殊功能寄存器:21个(4)程序存储器:4kb(5)并行i/o口:8位,4个(6)串行接口:全双工,1个(7)定时器/计数器:16位,2个(8)片内时钟电路:1个2.89c51的ea端有何用途?3. 89c51的存储器分哪几个空间?如何区别不同空间的寻址?答:rom(片内rom和片外rom统一编址)(使用movc)(数据传送指令)(16bits地址)(64kb)片外ram(movx)(16bits地址)(64kb)片内ram(mov)(8bits地址)(256b)4. 简述89c51片内ram的空间分配。
51单片机的定时器_计数器的C51编程
51单片机的定时器_计数器的C51编程相关知识点:1、单片机的定时器/计数器,实质是按一定时间间隔、自动在系统后台进行计数的。
2、当被设定工作在定时器方式时,自动计数的间隔是机器周期(12个晶振振荡周期),即计数频率是晶振振荡频率的1/12;3、当定时器被启动时,系统自动在后台,从初始值开始进行计数,计数到某个终点值时(方式1时是65535),产生溢出中断,自动去运行定时中断服务程序;注意,整个计数、溢出后去执行中断服务程序,都是单片机系统在后台自动完成的,不需要人工干预!4、定时器的定时时间,应该是(终点值-初始值)x机器周期。
对于工作在方式1和12MHz时钟的单片机,最大的计时时间是(65535-0)x1uS=65.535ms。
这个时间也是一般的51单片机定时器能够定时的最大定时时间,如果需要更长的定时时间,则一般可累加多定时几次得到,比如需要1秒的定时时间,则可让系统定时50ms,循环20次定时就可以得到1s的定时时间。
5、定时器定时得到的时间,由于是系统后台自动进行计数得到的,不受主程序中运行其他程序的影响,所以相当精确;6、使用定时器,必须先用TMOD寄存器设定T0/T1的工作方式,一般设定在方式1的情况比较多,所以可以这样设定:TMOD=0x01(仅设T0为方式1,即16位)、TMOD=0x10(仅设T1为方式1,即16位)、TMOD=0x11(设T0和T1为方式1,即都为16位)。
7、使用定时器,必须根据需要的定时时间,装载相应的初始值,而且在中断服务程序中,很多情况下得重新装载初始值,否则系统会从零开始计数而引起定时失败;8、要使用定时器前,还必须打开总中断和相应的定时中断,并启动之:EA=1(开总中断)、ET0=1(开定时器0中断)、TR0=1(启动定时器0)、ET1=1(开定时器1中断)、TR1=1(启动定时器1);9、注意中断服务程序尽可能短小精干,不要让它完成太多任务,尤其尽量避免出现长延时,以提高系统对其他事件的响应灵敏度.//定时器基本例程-1(未使用定时器,一个灯每隔500ms亮灭一次)//这是个特意安排的例程,以便与下面的例程2进行对比#include <reg52.h>sbit led=P2^7;void delay_ms(unsigned int xms); //ms级延时子程序//=================================================void main(){led=1; //上电初始化,led灯不亮while(1){led=!led;delay_ms(500);}}//=================================================void delay_ms(unsigned int xms) //ms级延时子程序{ unsigned int x,y;for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------//定时器基本例程-2(使用定时器,一个灯每隔500ms亮灭一次)#include <reg52.h>sbit led=P2^7;unsigned char num;void delay_ms(unsigned int xms); //ms级延时子程序//=================================================void main(){led=1; //上电初始化,led灯不亮TMOD=0x01; //设定定时器0为工作方式1TH0=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL0=(65536-50000)%256; //EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0while(1){delay_ms(8000);}}//=================================================void delay_ms(unsigned int xms) //ms级延时子程序{ unsigned int x,y;for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------void led_flash() interrupt 1 //使用了定时中断0的led闪烁子函数{ TH0=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000 TL0=(65536-50000)%256; //num++;if(num==10){num=0;led=!led;}}////定时器基本例程-3//(使用定时器T1,单片机整个口接的8个灯每隔500ms亮灭一次)#include <reg52.h>#define led_port P0 //宏定义,具体的端口尽量不要出现在主函数和主函数中unsigned char num;void delay_ms(unsigned int xms); //ms级延时子程序//=================================================void main(){led_port=0xff; //上电初始化,所有led灯不亮TMOD=0x10; //设定定时器1为工作方式1(16位方式)TH1=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL1=(65536-50000)%256; //EA=1; //开总中断ET1=1; //开定时器1中断TR1=1; //启动定时器1while(1){delay_ms(8000); //这句表明定时中断的运行是在系统后台自动运行的,不需要主函数“操心”}}//=================================================void delay_ms(unsigned int xms) //ms级延时子程序{ unsigned int x,y;for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------void led_flash() interrupt 3 //使用了定时中断1的8灯闪烁子函数{ TH1=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL1=(65536-50000)%256; //num++; //计数if(num==10) //计够10次,时间就是10x50ms=500ms{num=0; //清零,以便进行下一次500ms的10次计数led_port=~led_port; //整个口接的led灯亮灭状态翻转}}//-------------------------------------------------//定时器基本例程-4//(同时使用定时器T0和定时器T1,单片机某个口的灯和某个口接的8个灯每隔500ms亮灭一次)#include <reg52.h>sbit led=P2^7;#define led_port P0 //宏定义,具体的端口尽量不要出现在主函数和主函数中unsigned char num_0,num_1;void delay_ms(unsigned int xms); //ms级延时子程序//=================================================void main(){led=1; //上电初始化,led灯不亮led_port=0xff; //上电初始化,该口所有led灯不亮TMOD=0x11; //设定定时器0和定时器1都为工作方式1(16位方式)TH0=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL0=(65536-50000)%256; //TH1=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL1=(65536-50000)%256; //EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0ET1=1; //开定时器1中断TR1=1; //启动定时器1while(1){delay_ms(8000); //这句表明定时中断的运行是在系统后台自动运行的,不需要主函数“操心”}}//=================================================void delay_ms(unsigned int xms) //ms级延时子程序{ unsigned int x,y;for(x=xms;x>0;x--)for(y=130;y>0;y--);}//-------------------------------------------------void led_flash() interrupt 1 //使用了定时中断0的led闪烁子函数{ TH0=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL0=(65536-50000)%256; //num_0++; //计数if(num_0==10) //计够10次,时间就是10x50ms=500ms{num_0=0; //清零,以便进行下一次500ms的10次计数led=!led; //led灯亮灭状态翻转}}//-------------------------------------------------void led_all_flash() interrupt 3 //使用了定时中断1的8灯闪烁子函数{ TH1=(65536-50000)/256; //装载初始值,12MHZ晶振50ms数为50000TL1=(65536-50000)%256; //num_1++; //计数if(num_1==10) //计够10次,时间就是10x50ms=500ms{num_1=0; //清零,以便进行下一次500ms的10次计数led_port=~led_port; //整个口接的led灯亮灭状态翻转}}//-------------------------------------------------//定时器基本例程-5//设定定时器T0工作在方式1的计数应用状态,//单片机T0口(P3.4)接一个按键充当外部脉冲源,//系统对进来的脉冲(每按一次键得一脉冲)进行计数,//计数的结果用接在单片机P0口的8个LED灯表示出来//(大家也可以改成用1602LCD来显示,这样更直观)//广西民大物电学院李映超2010年4月14日#include <reg52.h>#define led_port P0 //宏定义,具体的端口尽量不要出现在主函数和主函数中//=================================================void main(){TMOD=0x05; //设定定时器0为工作方式1、计数器TH0=0; //清零TL0=250; //TR0=1; //启动定时器0进行计数while(1){led_port=TL0; //将计数结果送去显示(用8个LED灯显示),//这里仅显示16位计数器的低8位}}定时器0仍旧工作在计数器状态,增加定时器1工作在定时状态,得到1s的定时时间,定时时间到后,将定时器0计数得到的脉冲数去显示,则这个脉冲数就是所输入的外部信号的频率,从而构成一个简单而准确的频率计!!不过,这个简单的“频率计”能够计量的信号频率(脉冲数),受单片机中断响应速度的影响,一般只能达到单片机系统时钟晶振的1/24,所以要能够测量更高的频率,必须使用前置分频器,对更高频率的待测输入信号进行预分频!。
单片机原理及接口技术-C51编程(张毅刚第二版)-习题答案
单片机原理及接口技术(C51编程)(第2版)-习题答案汇总23单片机答案第1章单片机概述思考题及习题1 参考答案一、填空1. 除了单片机这一名称之外,单片机还可称为()或()。
答:微控制器,嵌入式控制器.2.单片机与普通微型计算机的不同之处在于其将()、()和()三部分,通过内部()连接在一起,集成于一块芯片上。
答:CPU、存储器、I/O口、总线3. AT89S51单片机工作频率上限为()MHz。
答:24MHz。
4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低()和提高()。
答:成本,可靠性。
二、单选1. 单片机内部数据之所以用二进制形式表示,主要是A.为了编程方便 B.受器件的物理性能限制C.为了通用性 D.为了提高运算数度答:B2. 在家用电器中使用单片机应属于微计算机的。
A.辅助设计应用 B.测量、控制应用C.数值计算应用 D.数据处理应用答: B3. 下面的哪一项应用,不属于单片机的应用范围。
A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备答:C三、判断对错1. STC系列单片机是8051内核的单片机。
对2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断源、1个定时器(且具有捕捉功能)。
对3. 单片机是一种CPU。
错4. AT89S52单片机是微处理器。
错5. AT89S51片内的Flash程序存储器可在线写入(ISP),而AT89C52则不能。
对6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。
对7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。
对8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP的长处。
对第2章 AT89S51单片机片内硬件结构思考题及习题2 参考答案一、填空1. 在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为()。
单片机中的定时器和计数器
单片机中的定时器和计数器单片机作为一种嵌入式系统的核心部件,在各个领域都发挥着重要的作用。
其中,定时器和计数器作为单片机中常用的功能模块,被广泛应用于各种实际场景中。
本文将介绍单片机中的定时器和计数器的原理、使用方法以及在实际应用中的一些典型案例。
一、定时器的原理和使用方法定时器是单片机中常见的一个功能模块,它可以用来产生一定时间间隔的中断信号,以实现对时间的计量和控制。
定时器一般由一个计数器和一组控制寄存器组成。
具体来说,定时器根据计数器的累加值来判断时间是否到达设定的阈值,并在时间到达时产生中断信号。
在单片机中,定时器的使用方法如下:1. 设置定时器的工作模式:包括工作在定时模式还是计数模式,以及选择时钟源等。
2. 设置定时器的阈值:即需要计时的时间间隔。
3. 启动定时器:通过控制寄存器来启动定时器的运行。
4. 等待定时器中断:当定时器计数器的累加值达到设定的阈值时,会产生中断信号,可以通过中断服务函数来进行相应的处理。
二、计数器的原理和使用方法计数器是单片机中另一个常见的功能模块,它主要用于记录一个事件的发生次数。
计数器一般由一个计数寄存器和一组控制寄存器组成。
计数器可以通过外部信号的输入来触发计数,并且可以根据需要进行计数器的清零、暂停和启动操作。
在单片机中,计数器的使用方法如下:1. 设置计数器的工作模式:包括工作在计数上升沿触发模式还是计数下降沿触发模式,以及选择计数方向等。
2. 设置计数器的初始值:即计数器开始计数的初始值。
3. 启动计数器:通过控制寄存器来启动计数器的运行。
4. 根据需要进行清零、暂停和启动操作:可以通过控制寄存器来实现计数器的清零、暂停和启动操作。
三、定时器和计数器的应用案例1. 蜂鸣器定时器控制:通过定时器模块产生一定频率的方波信号,控制蜂鸣器的鸣叫时间和静默时间,实现声音的产生和控制。
2. LED呼吸灯控制:通过定时器模块和计数器模块配合使用,控制LED的亮度实现呼吸灯效果。
单片机原理及接口技术复习资料
“单片机原理及接口技术”复习一、基本概念1、什么是单片机?答:单片机(Single-Chip-Microcomputer)又称单片微控制器,其基本结构是将微型计算机的基本功能部件:中央处理机(CPU)、存储器、输入接口、输出接口、定时器/计数器、中断系统等全部集成在一个半导体芯片上,因此,单片机其体积小、功耗低、价格低廉,且具有逻辑判断、定时计数、程序控制等多种功能。
2、 8051单片机内部包含哪些主要功能部件?答: 8051单片机内部由一个8位的CPU、一个4KB的ROM、一个128B的RAM、4个8位的I/O并行端口、一个串行口、两个16位定时/计数器及中断系统等组成。
3、 MCS-51单片机内部RAM可分为几个区?各区的主要作用是什么?内部数据存储器分为高、低128B两大部分。
低128B为RAM区,地址空间为00H~7FH,可分为:寄存器区、位寻址区、堆栈及数据存储区。
存放程序运算的中间结果、状态标志位等。
高128B为特殊功能寄存器(SFR)区,地址空间为80H~FFH,其中仅有21个字节单元是有定义的。
4、 MCS-51存储器结构的主要特点是什么?程序存储器和数据存储器各有何不同?MCS-51单片机的存储器结构与一般微机存储器的配置方法不同,把程序和数据的存储空间严格区分开。
数据存储器用于存放程序运算的中间结果、状态标志位等。
程序存储器用于存放已编制好的程序及程序中用到的常数。
5、MCS-51有哪几种寻址方式?答:MCS-51指令系统的寻址方式有以下7种:立即寻址方式、直接寻址方式、寄存器寻址方式、寄存器间接寻址方式、变址寻址方式、相对寻址和位地址。
6.编程实现:将单片机片内RAM区50H~59H中的数传送到单片机片外RAM区501H~50AH单元中。
(说明:要求用DJNZ指令循环实现。
)MOV DPTR,#501HMOV R0,#50HMOV R7,#10LOOP:MOV A,@R0MOVX @DPTR,AINC DPTRINC R0DJNZ R7,LOOPEND7.简述LED数码管静态显示和动态显示的各自特点。
C51定时器计数器详细讲解
多数情况下 不能满足要求
如何加大 延时时间
答案通Leabharlann 软件模拟成为 更多位数的定时器定时器每中断一次, 软件变量值增加1
定时器0/1
软件变量
…
定时器使用步骤
1
配置 定时器
2
设定时 器初值
3
启动 定时器
4
中断检 测
设定TMOD 设置THx和 寄存器中的相关位 TLx的初始值
将TCON中 的TFx位清0并 将TRx位置1
00:模式0 01:模式1 10:模式2 11:模式3
模式寄存器TMOD设置举例
现需要设置T0具有以下功能:
选择模式1 选择定时器功能 INT0引脚不参与启停控制
如何设置 TMOD
位号
位名
Bit7
GATE
Bit6
C/T
Bit5
M1
Bit4
M0
Bit3
GATE
Bit2
C/T
Bit1
M1
Bit0
„„
响应
中断程序的编写
中断的编程方法 配置中断
设定TMOD的相关位和THx、TLx的初始值
使能中断
编写ISR
TRx = 1,EA = 1
按照规则编写
ISR编写规则
函数名称 表明是中断服务函数
Warning!
不可直接调用ISR 必须让main函数 “看到”ISR原型
void isrName(void) interrupt n using i
8AH 8BH 8CH 8DH
复位值
00H 00H 00H 00H
定时/计数器模式0
当M1M0 = 00时,定时/计数器工作于模式0,使用TLx的低5位和THx 构成13位的加法计数器。
C51定时器
第9章C51定时器/计数器程序设计•C51语言是运行于单片机上的程序语言,因此,学习C51语言必须结合单片机来进行。
51系列单片机集成了多种硬件资源,这些资源均可以使用C51语言来进行控制。
本章开始便介绍如何将C51程序应用于单片机上。
•51系列单片机的集成了两个可编程的定时器/计数器,即定时/计数器0和1,简称T0和T1,有4种工作方式可供选择。
单片机内部通过专用寄存器T M O D、T C O N来设置定时/计数器工作的参数,例如方式选择、定时计数选择、运行控制、溢出标志、触发方式等控制字。
本章介绍如何使用C51语言来进行定时器/计数器程序设计。
9.1定时器/计数器简介•51系列单片机具有两个通用定时器/计数器T0和T1。
T0和T1都具有定时和计数两种功能,可以通过特殊功能寄存器来选择,下面分别介绍。
•计数。
计数功能就是对计数脉冲进行计数。
其中,计数脉冲来自相应的外部输入引脚P3.4(T0)或P3.5(T1)。
当该引脚的输入信号发生由高电平至低电平的负跳变时,计数器(T H0、T L0或T H1、T L0)的值增加1。
•定时。
定时功能是对时间进行统计。
定时器/计数器的定时功能其实也是通过计数实现的,只不过,此时的计数脉冲来自于单片机的内部时钟脉冲。
•除此之外,定时器/计数器T0和T1共有4种工作模式,同样可以通过特殊功能寄存器来选择。
9.1.1定时器/计数器的结构•定时器/计数器结构如图9.1所示,其核心是一个16位的加1计数器。
其中,16位的定时器/计数器T0由2个8位计数器T H0和T L0构成,16位的定时器/计数器T1由2个8位计数器T H1和T L1构成。
另外,寄存器T M O D主要用于指定各定时器/计数器的功能和工作模式;寄存器T C O N用于控制定时器/计数器的启动和停止计数,同时也设置定时器/计数器的状态。
定时器/计数器的结构示意图9.1.2方式控制寄存器T M O D•TMOD寄存器用于定义T0和T1的工作方式和4种工作模式,其单元地址为89H。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图7-14 由外部计数输入信号控制LED的闪烁
(3)设置IE寄存器 本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。
(4)启动和停止定时器T1 将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。
参考程序如下:
#include <reg51.h> void Delay(unsigned int i)
7.4 定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,只是计数位数不同。方
式0为13位,方式1为16位。由于方式0是为兼容MCS-48而设,计数初 值计算复杂,所以在实际应用中,一般不用方式0,常采用方式1。
7.4.1 P1口控制8只LED每0.5s闪亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理电路见图7-
当TMOD的低2位为11时,T0被选为方式3,各引脚与T0的逻辑关系 见图7-8。
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位 C/T* 、GATE、TR0 ,而TH0被固定为一个8位定时器(不能作为外部 计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的 中断请求源TF1。
13。采用T0方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮 一次。
23
图7-13 方式1定时中断控制LED闪亮
24
(1)设置TMOD寄存器 T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T*=0,为定
时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时 器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。 (2)计算定时器T0的计数初值
21
如选用6MHz晶体,允许输入脉冲频率最高为250kHz。如选用12MHz频 率晶体,则可输入最高频率500kHz外部脉冲。对外输入信号占空比没有限 制,但为确保某一给定电平在变化前能被采样1次,则该电平至少保持1个 机器周期。故对外部输入信号要求见图7-12,图中Tcy为机器周期。
图7-12 对外部计数输入信号的要求
计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进 行计数(见图7-1);
定时器模式是对系统时钟信号经12分频后的内部脉冲信号(机器周期) 计数。由于系统时钟频率是定值,可根据计数值计算出定时时间。两个定 时器/计数器属于增1计数器,即每计一个脉冲,计数器增1。
T0、T1具有4种工作方式(方式0、1、2和3)。
环定时或循环计数应用时就存在用指令反复装入计数初值的问题,这会 影响定时精度,方式2就是为解决此问题而设置的。
当M1、M0=10时,工作方式2,等效逻辑结构见图7-6(以T1 为例,x=1)。
工作方式2为自动恢复初值(初值自动装入)的8位定时器/计数 器,TLx(x=0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志 TFx置“1”的同时,还自动将THx中的初值送至TLx,使TLx从初值 开始重新计数。定时器/计数器方式2工作过程见图7-7。
//T1中断函数
{
for(;;)
//无限循环
{
P1=0xff;
//8位LED全灭
Delay(500) ;
//延时500ms
P1=0;
//8位LED全亮
Delay(500);
图7-4 定时器/计数器方式0的逻辑结构框图
9
方式0为13位计数器,由TLx(x = 0,1)的低5位和THx的高8位构成 。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中的溢出标志位 TFx置“1”。
图7-2中,C/T*位控制电子开关决定2种工作模式。 (1)C/T*=0,电子开关打在上面,T1(或T0)为定时器工作模式,系 统时钟12分频后的脉冲作为计数信号。 (2)C/T*=1,电子开关打在下面,T1(或T0)为计数器工作模式,对 P3.5(或P3.4)引脚上的外部输入脉冲计数,当引脚上发生负跳变时,计 数器加1。
GATE位状态决定定时器/计数器运行控制取决于TRx一个条件,还是 取决于TRx和INTx*引脚状态两个条件。
10
(1) GATE=0时,A点(见图7-4)电位恒为1,B点电位仅取决于 TRx状态。TRx=1,B点为高电平,控制端控制电子开关闭合,允许T1 (或T0)对脉冲计数。TRx=0,B点为低电平,电子开关断开,禁止T1 (或T0)计数。
13
图7-6 方式2逻辑结构框图
14
图7-7 方式2工作过程
方式2可省去用户软件中重装初值的指令执行时间,简化定时初 值的计算方法,可相当精确地定时。
15
7.2.4 方式3 方式3是为增加一个附加的8位定时器/计数器而设置的,从而使
AT89S51具有3个定时器/计数器。方式3只适用于T0,T1不能工作在方 式3。T1方式3时相当于TR1 = 0,停止计数(此时T1可作为串口波特率 产生器)。 1.工作方式3下的T0
16
2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串口波特率发生器时,T0才工作在方式3
。T0方式3时,T1可为方式0、1、2,作为串口波特率发生器,或不需要中 断的场合。
17
图7-8 T0方式3的逻辑结构框图
(1)T1工作在方式0 T1的控制字中M1、M0 = 00时,T1工作在方式0,工作示意图如
)的外部脉冲(负跳变)计数。 7.1.2 定时器/计数器控制寄存器TCON
TCON字节地址88H,位地址为88H~8FH。格式见图7-3。
图7-3 TCON格式
7
第6章已介绍与外中断有关的低4位。这里仅介绍高4位功能。 (1)TF1、TF0—计数溢出标志位
当计数器计数溢出时,该位置“1”。使用查询方式时,此位可供 CPU查询,但应注意查询后,用软件及时将该位清“0”。使用中断方式 时,作为中断请求标志位,进入中断服务程序后由硬件自动清“0”。 (2)TR1、TR0—计数运行控制位
29
T1工作在方式1,应使TMOD的M1、M0=01;设置C/T*=1,为计数器 模式;对T0运行控制仅由TR0来控制,应使GATE0=0。定时器T0不使用, 各相关位均设为0。所以,TMOD寄存器应初始化为0x50。
(2)计算定时器T1的计数初值 由于每按1次按钮开关,计数1次,按4次后,P1口的8只LED闪烁不停 。因此计数器初值为65 536−4=65 532,将其转换成十六进制后为0xfffc, 所以,TH0=0xff,TL0=0xfc。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置1。
(4)启动和停止定时器T0 将定时器控制寄存器TCON中的TR0=1,则启动定时器T0;TR0=0,则
停止定时器T0定时。 参考程序:
#include<reg51.h> char i=100; void main () {
TMOD=0x01; TH0=0xee; TL0=0x00;
图7-11 T0方式3时T1为方式2工作示意图
20
(4)T1设ห้องสมุดไป่ตู้在方式3 T0方式3时,再把T1也设置成方式3,此时T1停止计数。
7.3 对外部输入的计数信号的要求 计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产
生负跳变时,计数值增1。每个机器周期S5P2期间,都对外部输入引脚T0 或T1进行采样。如在第1个机器周期中采得值为1,而在下一个机器周期中 采得的值为0,则在紧跟着的再下一个机器周期S3P1期间,计数器加1。由 于确认一次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计 数脉冲的最高频率为系统振荡器频率1/24。
设定时时间5ms(即5 000µs),设T0计数初值为X,假设晶振的频率为 11.059 2MHz,则定时时间为:
25
定时时间=(216−X)×12/晶振频率 则 5 000=(216 −X) ×12/11.059 2 得 X = 60 928 转换成十六进制:0xee00,其中0xee装入TH0,0x00装入TL0。 (3)设置IE寄存器
//定时器T0为方式1 //设置定时器初值
27
P1=0x00; EA=1; ET0=1; TR0=1; while(1); {
; } } void timer0() interrupt 1 { TH0=0xee; TL0=0x00;
//P1口8个LED点亮 //总中断开 //开T0中断 //启动T0 //循环等待
(2) GATE=1时,B点电位由INTx*(x = 0,1)的电平和TRx的状 态两个条件来确定。当TRx=1,且INTx* =1时,B点才为1,电子开关闭 合,允许T1(或T0)计数。故这种情况下计数器是否计数是由TRx和 INTx*两个条件来共同控制的。
7.2.2 方式1 当M1、M0=01时,工作于方式1,等效电路逻辑结构见图7-5。
TR1位(或TR0)=1,启动计数器计数的必要条件。 TR1位(或TR0)=0,停止计数器计数。 该位可由软件置“1”或清“0”。 7.2 定时器/计数器的4种工作方式 4种工作方式,分别介绍如下。
8
7.2.1 方式0 当M1、M0=00,设置为方式0,定时器/计数器等效逻辑结构见
图7-4(以T1为例,TMOD.5、TMOD.4 = 00)。
//定义延时函数Delay( ),i是形 //式参数,不能赋初值
{ unsigned int j; for(;i>0;i--)
for(j=0;j<125;j++) {;} } void main( ) { TMOD=0x50; TH1=0xff; TL1=0xfc; EA=1;
//变量i由实际参数传入一个值 //因此i不能赋初值
图7-9所示。
图7-9 T0方式3时T1为方式0工作示意图 (2)T1工作在方式1