历史上的今天
返回首页

历史上的今天

今天是:2025年05月20日(星期二)

正在发生

2020年05月20日 | 51单片机定时/计数器的功能实现

2020-05-20 来源:eefocus

8051单片机内部有两个16位的定时/计数器:T0和T1

定时器用途:延时和脉宽测量

读取方式:软件读取和中断


公式:

T(初值)=2^N-定时时间/机器周期时间

机器周期时间=12/fosc

N:代表几位定时器,有13 16 8位定时器

定时时间:希望设定时间,例如希望设定时间是65.535,初值就是0

fosc:晶振频率,一般用的多的晶振频率是12


四种工作方式,在TMOD中设置:

M1 M0=0X00,方式0,13位计数器

M1 M0=0X01,方式1,16位计数器,用的最多

M1 M0=0X10,方式2,8位计数器

M1 M0=0X11,方式3,8位计数器


例如:

如果我们希望定时0.2ms,定时单位用的us

65536-200/1=65336=FF38H;

初值放在TH0 TL0中,分别是高八位和低八位

TH0=0XFF;TL0=0X38;


当我们写程序的时候也可以不用计算,直接使用公式代入,例如:

TH0= -设置的定时时间/256;

TL0= -设置的定时时间%256;


定时器的实现过程:

1.给定时器设置初值(TH0 TL0的初始化)

2.打开定时器中断:ET0 =1 或 ET1=1;

3.启动定时器:TR0 =1 或 TR1=1;

4.打开全局中断:EA=1;

5.配置定时器工作方式:TMOD=0x01;

如果定时器到了TF0=1 或 TF1=1;


一旦定时器到了就会触发中断,进入中断函数中执行函数中语句。

注:一旦进入中断,定时器的初值又会从0开始,所以在中断函数中必须重新将TH0和TL0赋初值。

简单的定时器中断的实现:

#include

 

sbit LED= P0^0;

void main()

{

P0 = 0xff;

 

EA = 1;//允许所有中断

ET0 = 1;//定时器中断0

TMOD |= 0x01;

//设置初值

TH0 = 0x3c;//设置了初值就会不断的加1,加到溢出

TL0 = 0xb0;

// TH0 = 65536-50000/256;

// TL0 = 65536-50000%256

TR0 = 1;//定时器0开始工作

while(1);//不让程序结束出去,一旦发生中断就会跳到中断

 

}

 

void intersrv1(void) interrupt 1 //定时器中断,遇到定时器溢出//了就会触发中断

{

TH0 = 0x3c;//又要重新赋初值

TL0 = 0xb0;

LED = !LED;//和原来的状态相反,定时精确到0.001ms

}

推荐阅读

史海拾趣

问答坊 | AI 解惑

节能与数控开启家庭消费电子的电源管理新篇章

当人们在津津乐道于各种带有炫目功能的便携式电子产品时,请不要忘记与您生活息息相关的传统家电和新兴的数字家电产品。让我们来计算一下,中国作为全球传统消费电子产品的第一生产大国,每年生产约5000万台空调,2000万台洗衣机,3000万台冰箱,40 ...…

查看全部问答>

新新新!!!多功能超级键盘

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 我们的键盘是4*4超级键盘,只用三个io口就可以控制16个键盘,最重要的是还带cpu中断,不但节约了端口,而且实现了cpu资源的节省,功能强大,使用方便,功能超级强大啊!!!!!!!!! 呵呵是有点 ...…

查看全部问答>

基于FPGA的键盘控制器的设计

引 言  由于CPLD的可再编程性质,可以将同一装置用于不同的键盘和产品,而收到高产量、低成本的效果,同时也节约了单片机的资源以做它用。可再编程的特点辅之简便易用的设计工具,使设计可以进行晚期更改,提高了产品设计的灵活性,降低了风险。 ...…

查看全部问答>

系统定时的问题

*********************************************************************************************************** Function name:       InitSysTick** Descriptions:        ...…

查看全部问答>

关于wdm的菜鸟问题

我用向导生成的东西 直接编译怎么会有错呢 说:cannot open input file \'ntstrsafe.lib\' WDM入门怎么这么难呢?…

查看全部问答>

求通用开发板和征求开发项目合作

我想找一块使用时间比较长的成熟开发板,带SD卡驱动,USB接口和液晶显示功能就可以了,提供相关PCB制板文件,这是其一 其二,想在上面再扩展个心电采集电路部分,调通该部分功能 如有对以上擅长者,有合作意向请联系本人 QQ:12665590 …

查看全部问答>

参加上海09ST巡回演讲回来

问了 2个问题  STM32F107的以太网 用的NICHeLITE 协议栈 主讲的年青帅哥(外)说中文的很溜,可听估计还是差些 也许是我问问题没说清楚 感觉整场会 ADC的主讲比较精彩 交流也很激烈 新的3in1  还有个像游戏机一样的 ...…

查看全部问答>

IO作为输入时,检测外管脚电平必须要将输出置高吗??

                                 我有两块板,程序一样,初始化时将输入管脚都通过GPIOWRITE(GPIOG,0X0000)输出0,结果一块板在可以检测到输入管 ...…

查看全部问答>

等离子清洗

LED封装工艺过程中,芯片表面的氧化物及颗粒污染物会降低产品质量,如果在封装工艺过程中的点胶前、引线键合前及封装固化前进行等离子清洗,则可有效去除这些污染物。…

查看全部问答>

国赛c题倒立摆的转轴选择

本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 国赛c题的倒立摆题目,大家是选什么材料当转轴D的?滑轮?滑轮会不会太滑,不好控制?还有什么其他好的材料用转轴的?    …

查看全部问答>