C51定时器计数器
【报告】单片机定时器计数器实验报告
【关键字】报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。
㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。
㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。
2. 计数脉冲由信号发生器输入(从T0端接入)。
3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址;设置T1做定时器,T0做计数器,都于方式1工作;装入中断次数;装入计数值低8位;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断SETB EA ;允许CPU中断SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时;1s到重新开始;显示计数器T0的值;读计数器当前值;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。
单片机原理及接口技术(C51编程)第7章 定时器计数器
图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的计数初值
单片机寄存器_MCS-51单片机特殊功能寄存器详解
1、定时器/计数器的方式寄存器TMODTMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。
A.主要完成三个功能:*确定选择定时器还是计数器;*选择何种工作方式;*是否借用外中断控制定时器和计数器的启停;B.TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端);TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端)C.控制字的格式和含义a、GATE(TMOD.7)分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者都为高电平时定时器才开始工作;b、C/T(TMOD.6)分为两种情况:C/T=0,用作定时器;C/T=1,用作计数器;d、M1(TMOD.5), M0(TMOD.4)用M1,M0来控制定时器/计数器的4种工作方式:*方式0:M1=0,M0=0.13位定时/计数方式*方式1:M1=0,M0=1.16位定时/计数器*方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器*方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数2、定时器/计数器控制寄存器TCONTCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。
A 控制字的格式和含义a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位当计数器计数溢出时,该位置“1”。
使用查询方式时,此位作为状态位供cpu查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。
使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0.b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。
51单片机定时器的使用
151单片机定时器/计时器的使用步骤:1、 打开中断允许位:对IE 寄存器进行控制,IE 寄存器各位的信息如下图所示:EA : 为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES : 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开2、 选择定时器/计时器的工作方式:定时器TMOD 格式CPU 在每个机器周期内对T0/T1检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。
因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。
由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。
通常,T0或T1输入线上的计数脉冲频率总小于100kHz 。
方式0:定时器/计时器按13位加1计数,这13位由TH 中的高8位和TL 中的低5位组成,其中TL 中的高3位弃之不用(与MCS-48兼容)。
13位计数器按加1计数器计数,计满为0时能自动向CPU 发出溢出中断请求,但要它再次计数,CPU 必须在其中断服务程序中为它重装初值。
方式1:16位加1计数器,由TH 和TL 组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。
2方式2:计数器被拆成一个8位寄存器TH 和一个8位计数器TL ,CPU 对它们初始化时必须送相同的定时初值。
当计数器启动后,TL 按8位加1计数,当它计满回零时,一方面向CPU 发送溢出中断请求,另一方面从TH 中重新获得初值并启动计数。
方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。
在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。
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可以在定时模式或计数模式下工作,通过设置计数值和时钟源频率,实现精确的定时功能或测量外部
事件的时间间隔或频率。
编程则是必不可少的,通过配置寄存器和编写中断服务程序来实现定时器的工作。
c51单片机计数器触发机制
C51单片机的计数器是通过触发机制来工作的。
在C51单片机中,有两种常见的计数器类型:定时器和计数器/计时器。
1. 定时器(Timer):
定时器用于生成一定时间间隔的定时事件。
C51单片机中的定时器是基于内部或外部时钟源进行计数的。
当定时器达到设定的计数值时,会触发定时器中断,并执行相应的中断服务程序(ISR)。
可以使用定时器来生成精确的时间延迟、控制周期性任务等。
2. 计数器/计时器(Counter/Timer):
计数器/计时器可以用来计数外部事件的脉冲数量或测量时间间隔。
它可以根据外部事件的触发边沿(上升沿或下降沿)来触发计数动作。
当计数器达到设定的计数值时,也可以触发计数器中断,并执行相应的中断服务程序(ISR)。
计数器还可以被配置为计时器模式,用于测量时间间隔。
在C51单片机中,计数器的触发机制通常是通过设置相关的寄存器来实现的。
这些寄存器包括计数器的初始值、计数模式、计数触发边沿等。
通过配置这些寄存器,可以灵活地控制计数器的工作方式和触发条件。
需要注意的是,具体的计数器触发机制可能会因不同的单片机型号而有所差异。
因此,在编程时应参考相关的芯片手册或数据表,以了解具体的计数器触发机制及其相应的寄存器设置。
1。
C51单片机21个特殊功能寄存器
21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
,如果做加法的话,两数位运算器只能表示到0-255中的运算器是一种8位的运算器,我们知道,88051,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
有相加可能会超过2550CY==1;无进、借位,进、借位,CY )78H+97H(01111000+10010111例:。
c51单片机的定时器和中断
二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
单片机原理及接口技术(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单片机课件 5第五章顺序控制系统
5.2 89C51单片机定时器/计数器
2、中断方式参考源程序:
#include <reg51.h>
sbit P1_0=P1^0; void timer0( ) interrupt 1
{ TH0=0x15;
TL0=0xa0; P1_0=~P1_0; }
void main ( void ) { P1=0xff; TMOD=0X01; TH0=0x15; TL0=0xa0; TR0=1; EA=1; ET0=1; While (1); }
六、顺序控制系统所涉及的知识点
(1)定时/计数器的概念。 (2)89C51单片机中定时/计数器的应用。 (3)C51定时/计数器中断服务程序的设计与应用。
5.2 89C51单片机定时器/计数器
定时和计数功能最终都是通过计数实现的,若计数的事件源是
周期固定的脉冲,则可以实现定时功能,否则只能实现计数功 能。因此可以将定时和计数功能由一个部件实现。
图5-4 定时器/计数器结构框图
5.2 89C51单片机定时器/计数器
2、计数方式:外部输入信号的下降沿触发计数,计数器 在每个时钟周期或时钟周期的12分频采样外部输入信号, 若一个周期的采样值为1,下一个周期的采样值为0,则 计数器加1,故识别一个从1到0的跳变需2个周期,所以,
单片机对外部输入信号最高的计数速率是时钟频率的
实现定时和计数的方法一般有软件、专用硬件电路和可编程定
时器/计数器三种方法。
采用软件只能定时,且占用CPU时间,降低了CPU的使用效率。
专用硬件电路可实现精确的定时和计数,但参数调节不便。
可编程定时器/计数器,不占用CPU时间,能与CPU并行工作, 实现精确的定时和计数,又可以通过编程设置其工作方式和 其它参数,因此使用方便。
c51单片机中断详解
响应中断请求的条件
一、一个中断请求被响应,需满足以下 必要条件:
(1)IE寄存器中的中断总允许位EA=1。
(2)该中断源发出中断请求,即该中断源对应 的中 断请求标志为“1”。
(3)该中断源的中断允许位=1,即该中断没有 被屏蔽。
(4)无同级或更高级中断正在被服务。
二、中断响应的主要过程
中断源
或者用: MOV 0A8H,#8AH ;A8H为IE寄存器 字节地址
三、中断优先级寄存器IP 两个中断优先级,可实现两级中断 嵌套。如图所示:
每个中断源的中断优先级都是 由中断优先级寄存器IP中的相应位 的状态来控制的。 中断优先级寄存器IP,其字节地址 为B8H。
IP各个位的含义: (1)PS——串行口中断优先级
控制位 1:高优先级中断; 0:低优先级中断。
(2)PT1——定时器T1中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(3)PX1——外部中断1中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(4)PT0——定时器T0中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(5)PX0——外部中断0中断优先级控制位 1:高优先级中断; 0:低优先级中断。
地址是固定的,不能改动。
例
三、中断处理 编写中断中断服务程序即可
四、中断返回
▪中断返回由专门的中断返回指令 RETI来实现。
五、中断请求的撤消 2.外部中断请求的撤消 (1)跳沿方式外部中断请求的撤消 是自动撤消的。 (2)电平方式外部中断请求的撤消。
六、外部中断的响应时间 外部中断的最短的响应时间为3
二、中断允许控制
中断允许控制寄存器IE
CPU对中断源的开放或屏蔽,由片内 的中断允许寄存器IE控制(两级控制)。 字节地址为A8H,可位寻址。格式如下:
C51单片机的定时计数器(陆周整理)
捕捉或常数重装 入方式选择位
1
0
T2 工 作 于
捕捉方式。
即
当
EXEN2=1
时,T2EX 端
(P1.1)的
负跳变引发
捕捉动作。
T2 工 作 于
常数自动重
装入方式。
即
当
EXEN2=1
时,T2EX 端
(P1.1)的
负跳变引发
常数重装入
动作。
当 TCLK=1 或 RCLK=1 时, 此位无效,T2 被强制工作 于自动重装入方式,定时 器溢出时引发常数自动重 装。
M=28 = 256 M=28 = 256
初值计算方法
初值 = 最大计数值 – 计数值 即: X = M - N
举例说明
若 80C51 时钟频率为 12MHz,要求产生 1ms 的定时,初值计算过程如下:时钟频率为 12MHz 时,计数器每次加 1 所需时间为 1μs,如果要产生 1ms 的定时时间,则需要“加 1”1000 次,1000 即为计数初值,如果在工作方式 1 下,则初值 X=M-N=65536-1000=64536=FC18H。
T0 功能选 择
10
T0 T0 为为 计定 数时 器器 方方 式式
T0 工作方式选择
M1 M0
00
01
10
11
方式 0 方式 1 方式 2 方式 3
13 位 计数 器
16 位 计数 器
溢出后 自动重 装入初 值的 8 位 计数器
定时器 T0 分成 2 个 8 位计 数器
1、TMOD 定时器不能进行位寻址,只能用字节传送指令设置定时器工作方式。 2、复位时 TMOD 定时器所有位均为 0,定时器处于停止工作状态。
C51单片机21个特殊功能寄存器
21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A ≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
有进、借位,CY=1;无进、借位,CY=0例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。
单片机(c语言版)定时器计数器..
#include<reg51.h> Char i=100;/*给变量i赋初值,定时0.5S,每次定时中断 5MS,需要中断100次*/ void main( ) { TMOD=0x01; /*设置定时器T0为方式1*/ TH0=0xee; /*向TH0写入初值的高8位*/ TL0=0x00; /*向TL0写入初值的低8位*/ P1=0x00; /*P1口8只LED点亮*/ EA=1; /*总中断允许*/ ET0=1; /*定时器T0中断允许*/ TR0=1; /*启动定时器T0*/ while(1) ; /*无穷循环,等待定时中断*/ }
定时时间:计数器溢出时间,时间常数越大,定时
时间就越短;时间常数越小,定时时间就越长。时 钟的频率越高,定时时间越短;时钟的频率越低, 定时时间越长。
设系统时钟的频率为fosc,计数器的初始值为N,定 时器工作于方式1,则定时时间: T=(216-N)×12/fosc (1) 如果定时器工作于方式2或方式3,定时时间为: T=(28-N)×12/fosc (2)
6.4 定时器/计数器的编程和应用
MCS-51单片机的定时器是可编程的,但在进行定时或计数
之前要对程序进行初始化,具体步骤如下: (1)确定工作方式字:对TMOD寄存器正确赋值; (2)确定定时初值:计算初值,直接将初值写入寄存器的TH0 、TL0或TH1、TL1; 初值计算:设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0-M为213,模式1-M为216,模式2和3-M为28) (3)根据需要,对IE置初值,开放定时器中断; (4)启动定时/计数器,对TCON寄存器中的TR0或TR1置位, 置位以后,计数器即按规定的工作模式和初值进行计数或开 始定时。
Keil C51程序设计中几种精确延时方法 精确延时
Keil C51程序设计中几种精确延时方法2008-04-03 08:48实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。
1 使用定时器/计数器实现精确延时单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。
第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。
本程序中假设使用频率为12 MHz的晶振。
最长的延时时间可达216=65 536 μs。
若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。
使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。
但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。
这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。
2 软件延时与时间计算在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延时。
下面介绍几种软件延时的方法。
2.1 短暂延时可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。
如延时10 μs 的延时函数可编写如下:void Delay10us( ) {_NOP_( );_NOP_( );_NOP_( )_NOP_( );_NOP_( );_NOP_( );}Delay10us( )函数中共用了6个_NOP_( )语句,每个语句执行时间为1 μs。
用KeilC51开发定时器计数器
用KeilC51开发定时器计数器用Keil C51开发定时器/计数器原文:基本的51单片机内部有两个16位可编程的定时器/计数器T0和T1。
它们各自具有4种工作状态,其控制字和状态均在相应的特殊功能寄存器中,可以通过软件对控制寄存器编程设置,使其工作在不同的定时状态或计数状态。
现在,许多厂家生产的8051兼容单片机上,还加入了定时器/计数器2,使单片机的应用更为灵活,适应性更强。
很多8051单片机的书籍都对定时器/计数器有详细的介绍,我们在此不再详细地讨论。
但因为编写或或阅读程序时经常要查阅定时器/计数器的设置情况,因此我们仅对一些编程时经常要用到的较重要的寄存器和设置方式进行简要简介。
1 定时器/计数器简介8051单片机的定时器/计数器基本结构如图1-1所示,定时器T0由两个8位计数器TH0和TL0构成,定时器T1也由两个8位计数器TH1和TL1构成,TMOD寄存器控制定时器的工作方式,TCON寄存器控制定时器的启动和停止以及定时器的状态。
图1-1 定时器/计数器结构在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。
实际上,定时器就是单片机机器周期的计数器。
因为每个机器周期包含晶体振荡器的12个振荡周期,而每一个机器周期定时器加1,故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1?s。
选择计数器工作方式时,计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。
2 控制和状态寄存器(1)定时器控制寄存器(TCON)TCON为定时器/计数器的控制寄存器,同时也锁存外部中断请求标志,各位定义如下。
TF1:定时器/计数器1中断请求标志位。
当定时器计数满溢出回零时,由硬件置位,并可申请中断。
当CPU响应中断并进入中断服务程序后,TF1自动清零。
TR1:定时器/计数器1运行控制位,靠软件置位或清除。
c51单片机计数器触发机制 -回复
c51单片机计数器触发机制-回复C51单片机是一种广泛应用的单片机芯片,它具有强大的功能和灵活的编程能力,可以用于各种计数任务。
其中,计数器是C51单片机中常用的功能模块之一,其触发机制对于实现计数功能至关重要。
本文将对C51单片机计数器的触发机制进行详细的介绍和解释。
一、C51单片机计数器概述计数器是C51单片机中的一个重要模块,它能够根据外部输入的时钟信号进行计数操作,并将计数结果输出给用户。
C51单片机中的计数器模块通常由8位或16位计数器组成。
C51单片机计数器的触发机制是指计数器在何时开始计数,并在何时停止计数的一种规则或条件。
计数器的触发机制由两部分组成,分别是计数开始触发和计数停止触发。
二、C51单片机计数器的计数开始触发1. 外部中断触发C51单片机计数器可以通过外部中断触发开始计数。
通过设置计数器的触发源为外部中断,当外部中断引脚接收到触发信号时,计数器会开始计数。
2. 定时器触发C51单片机计数器可以通过定时器触发开始计数。
定时器模块可以产生一个周期性的定时信号,该信号可以作为计数器的触发源,当定时器产生的定时信号达到设定的触发条件时,计数器会开始计数。
3. 软件触发C51单片机计数器可以通过设置软件触发开始计数。
软件触发是指通过对计数器的控制寄存器进行写操作,使计数器开始计数。
4. 硬件触发C51单片机计数器可以通过硬件触发开始计数。
硬件触发是指通过外部硬件信号来触发计数器的计数操作。
以上四种触发方式是C51单片机计数器开始计数的常见方式,用户可以根据实际需求选择合适的触发方式。
三、C51单片机计数器的计数停止触发1. 达到最大值停止触发C51单片机计数器可以通过达到最大值停止触发。
当计数器计数达到其最大值时,计数器将停止计数。
对于8位计数器而言,其最大值为255;对于16位计数器而言,其最大值为65535。
2. 软件停止触发C51单片机计数器可以通过设置软件停止触发。
软件停止触发是指通过对计数器的控制寄存器进行写操作,使计数器停止计数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
申请 中断
计数功能
控制信号TRx
定➢时对功片能外从T0(P3.4)、T1(P3.5)引脚输入的外
部➢脉对冲片信内号机进器行周计期数进,行下计降数沿,计即数每加个1。机计器数周频期率为
晶产振生频一率的个1计/2数4 脉冲,计数加1。
理
器
工作
工作
TCON 方式 TMOD
方式
结构组成部分
两个16位的二进制定时/计数器T0、T1
➢T0/T1分别由两个8位的计数器组成,均属SFR 寄存器 ➢T0由TH0、TL0构成,字节地址为8CH、8AH ➢T1由TH1、TL1构成,字节地址为8DH、8BH
相关的控制寄存器
方式寄存器TMOD 控制寄存器TCON
计数功能,初值156
问2:定时器/计数器为8位加 1计数器,要求每隔0.1ms, 发一次中断请求(机器周期 1us),如何设置初值?
定时功能,初值156
二、方式寄存器和控制寄存器
1、方式控制寄存器TMOD
➢SFR寄存器,地址89H ➢设定T0、T1的工作方式 ➢只能字节寻址
GATE C/ T M1 M0 GATE C/ T M1 M0
8051的定时器/计数器(timer/counter)
❖一种计数装置 ❖计数内部的时钟脉冲--定时器 ❖计数外部的脉冲--计数器 ❖在应用时可采用中断方式,
也可采用查询方式
一、定时/计数器的结构及工作原理
1、定时/计数器的结构
T1
P3.5(T1)
T0 P3.4(T0)
TH1
TL1
TH0
TL0
微
处
计数初值=213 -欲计数脉冲数=213 -△T/Tcy =213-250/2=1F83H
∴ TH1=0xfc,TL1=0x03
中断方式程序清单
#include<reg52.h> sbit P10=P1^0; void main() {
TMOD=0; TH0=0xfc; TL0=0X03; TR0=1; EA=1; ET0=1; while(1) {} }
案例6 以定时方式控制简单流水灯
已知系统晶振6MHz,采用定时器T0的工 作方式1实现延时,控制P0口的8只发光二极 管以100ms的间隔循环点亮。
定时器/计数器控制流水灯
定时器T0初值:
定时时间: 取100ms
tmax=65536×2μs=131.072
,
T0 的 初值:=216-100000μs/2μs
while(1) { P00=~P00; delay(); } }
void delay() {
count=0; while(count<20) { while(TF0==0)
{while(TF1==0); P34=0;TH0=6;TF1=0; P34=1;}
TL0=0x38; TF0=0; count++; } }
1/12 &
1
≥1
TL0
TF0
溢出
&
T0中断
TH0
&
方式2使用范例
某啤酒自动生产线,需要每生产12瓶执行装箱操作, 将生产出的啤酒自动装箱,用单片机实现该控制要求。
分析:如果啤酒生产线上装有传感装置,每检测一 瓶啤酒就向单片机发送一个脉冲信号,使用计数功 能就可实现该控制要求。选定用T1
方式2使用范例
三、定时器/计数器工作方式
1、工作方式0 ➢M1M0= 00? 作定时器:TMOD= 0?0000000=0x00 作计数器:TMOD= 0?0000100=0x04
➢13位计数器 TH:8位 TL:低5位,高3位不用
方式0的工作原理
定时器/计数器初始化编程
定时器/计数器有两种应用方式:
中断方式 查询方式
void itr_timer0(void) interrupt 1 {
P10=~P10; TH0=0xfc; TL0=0x03; }
采用查询方式 如何编程?
方式0使用范例2
例2:单片机晶振频率12MHz,利用T1的方式0实现1s 延时,每隔1s时间P1.0引脚翻转一次
#include<reg52.h>
LOGO
任务三 流水灯定时控制
本任务
❖ 教学内容
▪ MCS-51的中断系统 ▪ MCS-51的定时器/计数器
❖ 教学目标
▪掌握中断技术的应用 ▪掌握定时器/计数器的应用
本讲主要内容
1 定时器/计数器的结构及工作原理 ★
2
方式寄存器和控制寄存器
★
3 定时器/计数器的工作方式
★
4 定时器/计数器应用举例
某啤酒自动生产线,需要每生产12瓶执行装箱操作, 将生产出的啤酒自动装箱,用单片机实现该控制要求。
1)TMOD初始化 2)计数初值 3)启动 4)中断初始化设置 5)中断服务函数
TMOD=0x60; TH1=TL1=0xf4; TR1=1; EA=1; ET1=1; void isr_time1(void) interrupt 3 { …… }
源程序见下页
方式2使用范例
#include<reg52.h> sbit p37=P3^7; void main( ) {
TMOD=0x60; TH1=0xf4; TL1=0Xf4; TR1=1; EA=1;ET1=1; P37=1; while(1); }
//驱动电机转动的程序 void isr_timer1(void) interrupt 3 {
1.设定工作方式(对TMOD写工作方式 控制字)
2.装入初值(TH0/TL0或TH1/TL1) 3.启动定时器/计数器(置位TR0/TR1) 4.中断设定(置位ET0/ET1、EA、IP) 5.中断服务函数
1.-3.同中断方式的1-3 4.判断定时器/计数器的标志位
TF1/TF0为1或0,以决定程序流程
Timer1 门控位
功能选择位
Timer0 定时/计数模式选择位
定时器工作方式选择
M1和M0工作方式选择位
M1 M0 00 01 10 11
方式 0 1 2 3
说明
13位计数器(TH的高8位和TL的低5位)
16位计数器
自动重装入初值的8位计数器 定时器0:分成两个独立的8位计数器 定时器1: 停止计数
★
控制系统中实现定时
1、软件定时--延时函数
AT89S系列有看门狗 计数器
2、硬件定时 例如:555 (WatchDog Timer)
3、可编程定时器 例如:8253 DS1302
MCS-51子系列:T0、T1 MCS-52子系列:T0、T1、T2
❖ 可实现定时、计数功能,有利于实时控制 ❖ 不占用CPU时间 ❖ 定时精度高,修改方便
三、定时器/计数器工作方式
3、工作方式2 问题:从图中可以看出
➢M1M0=
10?
来哪个寄存器是计数寄 存器,哪个寄存器始终
作定时器:T存M放OD的=是0计?0数00初0值01?0=0x02
作计数器:TMOD= 0?0000110=0x06
➢自动重装载的8位计数器
fosc
T0 TR0 GATE INT0
➢生➢实产时线控上制产、品实计时数采、样检、测定电时机控转制速等等功能
定时/计数器初值预置
初值X的计算方法 设定时器/计数器最大值为M, 计数值为N,
初值为X, 晶振频率fosc,则
➢计数器初始值: X=M-N ➢定时器初始值: X=M-定时时间/Tcy
问1:要求检测 到 100 个 脉 冲 , 发中断请求,如 何设置初值?
int i,time=600; P37=0; //驱动电机转动 while(time --)//假设装箱时间固定 for(i=500;i>0;i--); P37=1; //装箱结束电机停止转动 }
三、定时器/计数器工作方式
4、工作方式3 --只有T0有此工作方式 ➢M1M0= 11? 作定时器:TMOD= 0?0000011=0x03 作计数器:TMOD= 0?0000111=0x07 ➢T0为2个8位计数器:TH0,TL0 ➢T1停止计数,等价于执行了TR1=0;