51单片机里面52单片机有几个定时器器

技术小站:
& 在线直播
时间:4月24日 10:00 - 11:30
& 地点:广州
时间:4月26日 13:00 - 18:00
& 地点:深圳
时间:4月27日 13:30 - 17:30
& 地点:深圳
时间:5月8日 13:00 - 18:00
张飞电子工程师速成全集
10天掌握PCB AD画板
教你高速PCB项目整体设计
如何设计STM32单片机系统?
物联网操作系统从写到用
讲师:华清远见
讲师:林超文
讲师:郑振宇
讲师:李述铜
移入鼠标可放大二维码
89C52单片机定时器1程序 - 52单片机有几个定时器?52单片机定时器1和52单片机定时器2程序对比
来源:电子发烧友网整理 作者:日 14:30
[导读] 52单片机有几个定时器?STC89C52RC其实是有三个定时器的单片机,STC89C52RC共有3个定时器,分别是T0、T1、T2。而51单片机只有T0,T1 两个定时器。下文将详细把52单片机定时器1和52单片机定时器2程序对比分析。
  STC89C52单片机定时器1实现计数器的程序
  ///////////////////////////////////////////////////////////////////////////
  实现功能: 配置定时器1的相关寄存器,使其实现定时器中断功能,然后通过在数码管显示
  实验板型号:BS-XYD-C52
  实验名称: 定时器1实现计数器
  ///////////////////////////////////////////////////////////////////////////
  #include《reg52.h》
  #define uchar unsigned char //定义unsigned char 为 uchar
  #define uint unsigned int //定义unsigned int 为 uint
  uchar cTime_10ms_ //中断次数计数单元
  uchar cTime_1s_ //判断是否为1s的变量
  uchar uDis_buff[2]; //显示缓冲区,存放要显示的2个字符的段码值
  uchar cT //秒计数单元
  #define Time_1s_Sign 100 //根据中断周期,判断是否到一秒的标志
  sbit Duan=P2^6; //定义数码管的段选使能端
  sbit Wei =P2^7; //定义数码管的位选使能端
  #define Digital_tube_Wei_Enable Wei=1; //开启控制数码管的位选使能端
  #define Digital_tube_Wei_Disable Wei=0; //关闭控制数码管的位选使能端
  #define Digital_tube_Duan_Enable Duan=1; //开启控制数码管的段选使能端
  #define Digital_tube_Duan_Disable Duan=0; //关闭控制数码管的段选使能端
  #define Digital_tube_Duan P0 //定义数码管数据端口
  uchar code Dis_table[]= //将BCD码转换成数码管扫描码的数组
  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};
  uchar code Dis_Position[]= //定义数码管位选的数组
  {0x3e,0x3d,0x3b,0x37,0x1f,0x2f};
  ///////////////////////////////////////////////////////////////////////////
  函数名称:毫秒延时函数
  函数功能:实现毫秒级的延时
  参数介绍:Delay_MS: 定义需要延时的毫秒的数值
  iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
  iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
  返回值: 无
  注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
  式完成,所以如果改变了晶振的频率,请做相应的改变
  ///////////////////////////////////////////////////////////////////////////
  void DelayMs(uint Delay_MS)
  uint iNumber,iV
  for(iNumber=0;iNumber《Delay_MS;iNumber++) //用for语句实现单片机的延时
  iValue=107; //107这个数值是通过测定而得
  while(iValue--);
  ///////////////////////////////////////////////////////////////////////////
  函数名称:One_DigitalTube_display
  函数功能:完成在实验板上数码管指定显示,即在特定的数码管上显示特定的数字,比
  在第一个数码管上显示0
  参数介绍:uData:要显示的数字的BCD码数组
  uNumber:选择哪个数码管显示,即让某个特定数码管显示
  返回值: 无
  注意事项:实验板上的数码管是共阴极的数码管,如果使用共阳极的数码管,请注意不
  要弄反了
  ///////////////////////////////////////////////////////////////////////////
  void One_DigitalTube_display(uchar uData,uchar uNumber)
  Digital_tube_Duan_E //使能数码管的段选
  Digital_tube_Duan=Dis_table[uData];//输入所要显示的数值
  Digital_tube_Duan_D //关闭数码管的段选
  Digital_tube_Duan=Dis_Position[uNumber]; //点亮特定的数码管
  Digital_tube_Wei_E //使能数码管的位选
  Digital_tube_Wei_D //关闭数码管的位选
  DelayMs(5); //调整时序,以实现稳定显示
  ///////////////////////////////////////////////////////////////////////////
  函数名称:Time_to_disbuffer
  函数功能:把要在数码管上显示的数值,进行取余、取整,即对数值进行分割,这样以
  便显示在分离的数码管
  参数介绍:无
  返回值: 无
  注意事项:无
  ///////////////////////////////////////////////////////////////////////////
  void Time_to_disbuffer()
  uDis_buff[1]=cT //对cTime的数值取余,即就是取cTime的个位
  uDis_buff[0]=cTime/10; //对cTime的数值取整,即就是取cTime的十位
  ///////////////////////////////////////////////////////////////////////////
  函数名称:Init_time1
  函数功能:配置定时器1,配置的模式是定时器1采用16位定时器模式,在定时器1的输入
  数值寄存器输入特定的数值,使其每次中断的周期为10ms,同时允许定时器1
  中断,并打开总中断
  参数介绍:无
  返回值: 无
  注意事项:无
  ///////////////////////////////////////////////////////////////////////////
  void Init_time1(void)
  TMOD |= 0x10;
  TH1=()/256;
  TL1=()%6; //定时器0的,写入数值寄存器的低8位
  EA=1; //总中断打开
  ET1=1; //定时器T0允许中断
  TR1=1; //定时器T0开始工作
  ///////////////////////////////////////////////////////////////////////////
  函数名称:Timer_Display
  函数功能:把显示缓冲区的数值显示在数码管上
  参数介绍:cNumber:记录for语句的循环次数
  返回值: 无
  注意事项:无
  ///////////////////////////////////////////////////////////////////////////
  void Timer_Display()
  uchar cN
  for(cNumber=0;cNumber《2;cNumber++)
  One_DigitalTube_display(uDis_buff[cNumber],cNumber);
  DelayMs(2);
  ///////////////////////////////////////////////////////////////////////////
  函数名称:main
  函数功能:利用定时器1中断,在数码管上实现以一分钟为周期的计数器
  参数介绍:无
  返回值: 无
  注意事项:无
  ///////////////////////////////////////////////////////////////////////////
  void main()
  Init_time1(); //初始化定时器1
  cTime=0;
  while(1)
  if(cTime_1s_ok)
  cTime_1s_ok=0;
  if(++cTime》=60) //每次自加一,同时判断是否到1分钟
  cTime=0;
  Time_to_disbuffer(); //新调整好的时间送入显示缓冲区
  Timer_Display(); //更新显示内容
  ///////////////////////////////////////////////////////////////////////////
  函数名称:Interrupt_handler_time1
  函数功能:重新给寄存器TH1和TL1赋值,判断是否到达一秒,如果到一秒了,把相应的
  变量赋予正值,以方便其他的程序编写
  参数介绍:无
  返回值: 无
  注意事项:无
  ///////////////////////////////////////////////////////////////////////////
  void Interrupt_handler_time1(void) interrupt 3
  TH1=()/256;//定时10毫秒
  TL1=()%6;
  cTime_10ms_counter++;
  if(cTime_10ms_counter==Time_1s_Sign) //判断是否到达一秒
  cTime_10ms_counter=0;
  cTime_1s_ok=1;
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
52单片机相关文章
52单片机相关下载
定时器相关文章
定时器相关下载
论坛精华干货
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-51单片机定时器概念_腾讯视频
三倍流畅播放
1080P蓝光画质
新剧提前看
1080P蓝光画质
纯净式无框播放器
三倍流畅播放
扫一扫 手机继续看
下载需先安装客户端
{clientText}
客户端特权:
3倍流畅播放
当前播放至 {time}
扫一扫 手机继续看
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要
副标题要不要51单片机计数器与定时器的区别
  在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。
  在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。
  计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。
  在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。
  在定时器计数器中,我们有个概念叫容量,就是最大计数量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。
  在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。
  在定时计数器中,这90滴水就是我们所谓的初始值。问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?
  我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。
  在这里计数初值有3个,假设有方式0:计数初值=次方)&100=8812。方式1:计数初值=6次方)&100=65436。方式0:计数初值=256(2的8次方)&100=156。
  根据所得的初始值,再将其转换为16进制或者2进制,就可以进行计数或者定时了。当然要让程序完全的运行起来还需要相应的寄存器进行设置。这些可以从各种单片机教程中找到。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
51单片机LCD1602程序详解 LCD1602 工业字符型液晶。1602是指LCD显示的内容为16...
输出继电器是用来将PLC的输出信号传递给负载,是专设的输出过程映像寄存器。它只能用程序指令驱动。在...
本文主要介绍了CD4040中文资料汇总(CD4040引脚图及功能_工作原理及应用电路),CD4040...
本文主要介绍了usb接口类型有哪些_usb接口类型大全。usb是连接计算机系统与外部设备的一种串口总...
小编带你认知主板上的主要芯片。时钟芯片需要和14.318MHz的晶振连接在一起,为主板上的其他部件提...
本文主要介绍了cd4013开关应用电路图汇总(电源/开关/触摸开关/防抖动/定时器)。CMOS集成电...
关于USB转串口驱动问题 ,在linux下已经集成好了CH340和PL2302的驱动(linux m...
本文主要介绍了cd4060应用电路图汇总(分频/定时/CD4060时间控制器)。CD4060是由一振...
本文开始主要介绍了CD4553引脚图和功能及CD4553真值表,其次介绍了CD4553真值表、最大额...
测试结果表明,PWM的输出信号与各音阶对应的声音频率基本一致,方案切实可行。这一方法也可用于电机控制...
本文开始介绍了USB接口的工作原理和优点,其次详细的介绍了串口划分标准和并口的区别以及并口的主要特点...
本文主要介绍了脉冲计数器电路图大全(六款脉冲计数器电路设计原理图详解)。计数是一种最简单基本的运算,...
值得注意的是,以上测试是在资源足够频率不高的条件下测试的。根据经验,当资源使用较多,时钟频频较高时,...
看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗(kickin...
有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助
定时器设定为:TH0=0xd8;TL0=0xf0;经确定时10ms。从程序开始执行,每当主程序中的1...
人机界面产品由硬件和软件两部分组成,硬件部分包括处理器、显示单元、输入单元、通讯接口、数据存储单元等...
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大...
IBM - PC机硬盘驱动器适配器简称硬盘控制器。它是一个智能部件,可接一个或两个硬盘,通过系统板上...
说到51单片机的时钟首先想到51时怎么工作的呢?微型控制器要想工作必须要有一个“动力”,对于51单片...
连续调用子程序P1→又在子程序P1中调用子程序P2(子程序欠套):先使X2=ON,X1=OFF,然后...
在工业生产中温度是常见的被控参数,采用单片机对温度进行控制简单方便。本次创新设计的亮点是数字测温,温...
51单片机定时器工作原理及用法
定时器/计数器的方式0与方式1基本相同,只是计数器的计数位数不同。方式0为13位计数器,方式1为16...
我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么...
定时器0使用16位模式,在12MHz晶振情况下,最大的定时值也只有65.535ms,因此要定时500...
与串行通信相对的是并行通信。数据传输一般都是以字节传输的,一个字节8个位。拿一个并行通信举例来说,也...
晶振和 IC 间一般是通过铜走线相连的,这根走线可以看成一段导线或数段导线,导线在切割磁力线的时候会...
I/O接口的功能是负责实现CPU通过系统总线把I/O电路和外围设备联系在一起,按照电路和设备的复杂程...
VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护:
 (1)本身能独立工作,不依赖CPU。(2)CPU在一个固定的时间间隔中和“看门狗”系统打一次交道,...
本文主要介绍了cd40110的工作原理详细(cd40110引脚图功能_如何计数及应用电路分享)。CD...
本文主要介绍了CD40110组成的一位数码计数器。CD40110为十进制可逆计数器/锁存器/译码器/...
本文主要介绍了cd40110计数器电路图大全(七款cd40110计数器电路设计原理图详解)。利用交流...
典型的二进制格雷码简称格雷码,因1953年公开的弗兰克·格雷专利“Pulse Code Commun...
随着单片机应用的普及,单片机间通信问题已引起广泛的关注。目前,应用较多的是有线通信,而如何利用现有的...
学51单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片机的...
基于单片机构成的产品自动计数器有直观和计数精确的优点,目前已在各种行业中得到广泛应用。数字计数器有多...
如何提高零售业、文化娱乐等公共场所业的运营管理,客流信息的精准分析统计必然成为每个运营管理者的首要入...
计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进...
51单片机、AVR单片机和PIC单片机IO口结构的均不同,导致了IO口操作也不同。操作单片机IO口的...
工业控制中,各设备的信号采集和监控只靠串口总线难以实现扩展,要将现场控制网络和信息网络相连,就需要解...
定时器555芯片被连接成多谐振荡器,而多谐振荡器只有在水龙头-中有水流过时才能正常工作。如果遇到停水...
收音机长时间的不关机容易导致电池寿命缩短,收音机的寿命相对应的也会有所影响。本文将介绍如何制作一个收...
设计了一个基于LM317和AT89C51的数字显示可调稳压电源。系统包含主电源和辅助电源模块、电压数...
rtimer可以满足精准定时的需要,但是没有常见的next指针来挂接后续节点,为了减少rtimer中...
PWM这个功能在飞思卡尔、STM32等高档的单片机内部有专用的模块,用此类芯片实现PWM功能时只需要...
本文详细介绍了ATMage16的16位定时器的PWM应用。
在初学51单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片...
在测量控制系统中,常常需要实时时钟,以实现定时控制、定时测量或定时中断等。也常需要计数器以实现对外部...
标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 5...
RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检...
本人最近一直想用51单片机来设计制作一个“大功率直流有刷电机PWM调速控制器”。由于平时工作忙,没时...
这篇主要介绍arm9时钟与定时器方面,根据s3c2440手册第七章的内容来看,涉及到不少的知识点,p...
笔者从事安卓底层开发,工作一年,个人看法 ,处女答。个人感脚51就是就是搞嵌入式第一门技术。把c语言...
下面介绍一种利用Keil的软件仿真功能来实现51单片机串口调试用户程序的方法。使用这种方法,无需任何...
甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8...
前面说过TC1使用的是外部32K的时钟源,因为这个晶振没有焊接,无法测试,所以我们这里选择的测试时钟...
本文开始对CD4017功能与CD4017逻辑结构图进行了介绍,其次分别介绍了用CD4017和选择开关...
Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson创建。简单来说,...
在编程界PHP是完全免费的语言,在程序员身上使用非常的广泛,在编程中是大家高效的选择。
PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。...
本文为大家介绍PHP定时器实现每隔几秒运行一次方法详解。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8...
Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单...
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Ja...
本文为大家介绍只刷新一次和根据间隔时间一直刷新的定时刷新程序详解。
定时器/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。定时器0...
六款单片机流水灯电路图介绍。采用STC89S52单片机控制8个LED灯,其中8个LED灯的负极接单片...
本文详细的介绍了八款单片机时钟电路图。时钟电路就是产生像时钟一样准确运动的振荡电路。任何工作都按时间...
六十进制由二片74LS290组成,分别连成六进制和十进制。个位为十进制,十位为六进制。当十位计到6时...
74ls290是一个二,五,十进制计数器,本文为大家介绍由74ls290构成的各种进制计数器的电路。
根据编程元件的功能,西门子plc梯形图中的常用的编程元件主要有输入继电器(I)、输出继电器(Q)、辅...
计数器由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成。计数器...
本文为大家带来四种74ls290典型应用电路图分享。
74LS290为二,五,十进制计数器,共有54/7LS290两种线路结构型式。
计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运...
74LS290为异步二-五-十进制加法计数器。本文为大家介绍74ls290构成31进制计数器电路。
在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单...
P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。
分享11种PLC常用环节梯形图程序及解析
当TMOD中的M0=0,M1=0时,为13位计数或定时方式,其中TLi使用低5位。
指令周期指的是单片机执行一条指令的时间。按指令执行的时间可分为:单周期、双周期和四周期(只有乘法和除...
定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。定时器常用作定时时钟,以实现定时检测,...
本文介绍了单片机的时钟周期、状态周期、机器周期、指令周期这四个周期,并详细解析了定时器的工作原理。
定时器/计数器的结构定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TM...
按键发音说明:按下不同的按键会是SOUNDER发出不同频率的声音。本例使用延时函数实现不同频率的声
本文主要介绍了555定时器产生方波原理(五款555定时器产生方波的电路详解)。555定时器的功能主要...
Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无...
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-51单片机T0定时器4种方式的定时时长分别是多少_百度知道
51单片机T0定时器4种方式的定时时长分别是多少
我有更好的答案
51单片机最大硬件定时时间,就是定时器能定时的 时间,最长时间=65536*TcTc=fosc/12,fosc 是单片机的晶振频率。以频率=12M为例吧,Tc=1us最大定时时间=65536us=65.536ms。其实,不用管最大定时时间是多少,要定时再长的时间也是可以的,采用中断的方式计数吗。如:定时50ms,中断方式,中断一次,就是50ms,中断20次就是1秒。有了1秒以后,什么分,小时,都可以计了。
采纳率:63%
这个取决于系统时钟和定时器位数。例如传统89c51单片机(在不考虑新型单片机有分频设置的情况下),12MHz系统时钟,采用8位定时器,最大定时时间为256us;如果采用16位定时器,最大定时时间为65536us。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 单片机定时器程序 的文章

 

随机推荐