51单片机学习笔记(三)_定时器和计数器
来源:互联网 发布:java虚拟机apk 编辑:程序博客网 时间:2024/05/19 02:21
【若有疑问错误或版权等问题请联系我】
【转载请注明出处:http://blog.csdn.net/leytton】
注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后面详讲
2个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1)
TMOD:定时器/计数器模式控制寄存器 详见百度百科TMOD
- 每经过一个机器周期、寄存器+1
- TF:定时器溢出标志。溢出时自动置1。中断时硬件清零否则必须软件清零。
- TR:定时器运行控制位。置1开始计时、清零停止计时。
- C/T:该位为0时用作计时器、该位为1时用作计数器。
溢出时时间-开始计时时间=预设定时时间
一个机器周期共有12个振荡脉冲周期
若设定时为0.02s,则:
12*(65535-X)/11059200=0.02s
定时器作“加1”次数:X=47104=0xB800次 时间为0.02s
使用定时器的方法
1、设置特殊功能寄存器TMOD,使之工作在需求的状态。
2、设置计数寄存器的初值,精确设定好定时时间。
3、设置特殊功能寄存器TCON,通过打开TR来让定时器进行工作。
4、判断寄存器TCON的FT0位、检测定时器溢出情况。
假设我们使用定时器0、定时为0.02s,两个寄存器计时
TMOD=0x01; TMOD=0x01,指的是采用T0方式,将M1置0,M0置1,是方式一的定时器
高八位寄存器TH0=0xB8、低八位寄存器TL0=0x00
C程序实现1s钟定时
#include <reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P1^0;uint8 counter;void main(){ TMOD=0x01; TH0=0xb8; TL0=0x00; TR0=1; led=1; counter=0; while(1){ if(TF0==1){ //如果达到溢出 0.02s后溢出 TF0=0; //软件清零 TH0=0xB8; //重置计数基数 TL0=0x00; counter++; //溢出一次计次数 } if(counter==50){ //0.02s*50=1s counter=0; //清零 led=~led; //取反使P1^0亮灭 } }}
1 0
- 51单片机学习笔记(三)_定时器和计数器
- 单片机_定时器/计数器
- 51单片机-定时器/计数器
- 51单片机定时器/计数器
- 51单片机中的定时器和计数器
- 51单片机(三)——定时器/计数器
- 51单片机的定时器/计数器
- 关于51单片机学习中计数器/定时器中断的理解
- 学习笔记之-51单片机定时计数器
- 51单片机定时器计数器中断总结
- 51单片机定时器计数器中断总结
- 51单片机定时器/计数器(1)
- 51单片机定时器/计数器(2)
- MCS-51单片机计数器定时器详解
- 51单片机的定时器/计数器概念
- MCS-51单片机的定时器/计数器概念
- 51单片机中断系统(定时器、计数器)
- PIC单片机入门_定时器/计数器TMR0详解与实例
- ASP.NET MVC 3:放弃 Unity
- PyQt4之对话框示例
- QT 简单仿写QQ界面
- apache+tomcat的集群--Session复制配置
- 协同过滤详解及实现(转载)
- 51单片机学习笔记(三)_定时器和计数器
- AJAX的浏览器缓存关闭
- Vim+Vundle+YouCompleteMe
- python,praat
- jdbc.properties
- 【01 背包问题(动态规划法解决)】
- poj2253 Frogger
- Linux-Notes-Learning
- HDU 1076An Easy Task