">
注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后面详讲
2个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1)
每经过一个机器周期、寄存器+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
#include
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亮灭
}
}
}
上海紫卓电子科技有限公司
地址:上海市嘉定工业区叶城路925号B区4幢J
电话:021-31007998
传真:021-31007998
邮件:569998567@qq.com
在线咨询:
569998567
致力成为优秀的IC供应配单专家及IC代理商
竭力为客户提供一站式电子元器件采购及IC配套服务
上海紫卓电子科技有限公司 版权所有 未经授权禁止复制或镜像
CopyRight 2020-2025 www.ic-ixys.com All rights reserved