热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mcs51单片机定时器计数器应用教程(基于c语言)

本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。

单片机原理及应用教程(c语言版)-第6章 mcs-51单片机的定时器计数器推荐

6.4 定时器应用举例 void t0_int() interrupt 1//T0中断函数,间隔10ms { TL0=55536&0xff; TH0=55536/256; int0++;//中断次数百分秒计数 if(int0>99)//计到1s {TR1=0;//关闭计数器 freq=int1*65536+TH1*256+TL1; TL1=0;TH1=0; TR1=1;//启动计数器 int0=0;int1=0;//中断次数请0 calculat();//显示freq频率值 }} * 6.4 定时器应用举例 void main()//主函数 {unsigned char data xl,xh; TMOD=0x51;//设置T0模式1定时,计数 TL0=55536%256;//T0定时10ms赋初值 TH0=55536/256; TL1=0x00; //T1计数赋初值 TH1=0x00; ET0=1;ET1=1; //开T0、T1中断 EA=1;//开CPU中断 TR0=0; TR1=1; //关T0定时、启动T1计数 while(1) { display();//调用数码管显示函数 if(P3_7==0)//判断按钮是否按下 { flag=~flag;//按下,标志取反 * 6.4 if(P3_7==0) //判断按钮是否按下 {flag=~flag; if(flag)//使用频率计功能 TR0=1;//启动T0定时1s读数 else//使用计数器功能 TR0=0;//关闭T0定时 dodisplay(); while(P3_7==0); //等待释放按钮 display(); //延时约18ms去后沿抖动 } if(flag==0)//使用计数器功能 {do//使正确读取计数值 {xh=TH1; xl=TL1; }while(xh!=TH1); freq=xh*256+xl; calculat();//显示freq中的计数值 disbuf[0]=11; //最高位显示‘C’ } } } * 本章小结 本章首先介绍了单片机定时器/计数器的结构和原理。 接着介绍了定时器/计数器T0、T1以及T2的控制、工作模式和用法。 最后结合例子介绍了定时器/计数器的应用。 定时器/计数器是单片机应用系统中最常用的部件。因此,掌握定时器/计数器编程技术是学好单片机应用技术所必须的。学习本章,要注意掌握定时器/计数器初值的计算方法,多做练习,掌握定时器/计数器编程方法。 * 本章完 * 波特率=fosc/(32×(65536 - (RCAP2H,RCAP2L))) T2EX可以做外部中断源 串口时钟方式原理图 RCAP2H TL 2 TH 2 T 2 溢出 TR 2 ÷2 C / T 2 = 1 C / T 2 = 0 串口时钟 振荡器 RCAP2L EXEN2 T 2 EX 外部信号 EXF2 中断申请 ÷16=波特率 6.3.2 T2的工作方式 * 2、功能二——外部中断源 条件: EXEN2=1; 中断请求输入引脚:P1.1 触发方式:下降沿 中断请求标志: EXF2, P1.1出现下降沿, EXF2置1。 6.3.2 T2的工作方式 * 定时器/计数器T2作为波特率发生器使用时的编程方法: … RCAP2H=0x30;//设置波特率 RCAP2L=0x38; TCLK=1;//选择定时器2的溢出脉冲//作为串口发送波特率发生器 注意:在波特率发生器工作方式下,在 T2计数过程中不能再读/写 TH2和TL2的内容。 6.3.2 T2的工作方式 * 四、可编程时钟输出方式 当T2OE=1,且C/T2=0时,T2工作于时钟输出方式。结构如下页图所示。具有两个功能。 1、功能一——时钟输出 1)输出引脚:P1.0 2)输出方波频率: f=fosc/(4×(65536 - (RCAP2H,RCAP2L))) ∴(RCAP2H,RCAP2L)= 65536 -fosc/f/4 3)特点:①自动重装初值 计数满后,将RCAP2L和RCAP2H的值自动装入TL2和TH2; ②不产生溢出中断。 6.3.2 T2的工作方式 * 四、可编程时钟输出方式 当T2OE=1,且C/T2=0时,



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 开发笔记:select from具体执行相关知识介绍及案例分析
    本文由编程笔记小编整理,主要介绍了select from具体执行相关的知识,包括数据插入、查询最小rowID、查询每个重复名字的最小rowID、删除重复数据等操作,并提供了案例分析。希望对读者有一定的参考价值。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
author-avatar
全仕介个
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有