历史上的今天
返回首页

历史上的今天

今天是:2025年04月17日(星期四)

正在发生

2020年04月17日 | 51单片机之计时器与计数器

2020-04-17 来源:eefocus

image.png?imageView2/2/w/550

CPU时序的有关知识

 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)

 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。

 机器周期:1个机器周期含6个状态周期,12个振荡周期。

 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。


例如:外接晶振为12MHz时,51单片机相关周期的具体值为:

振荡周期=1/12us;

状态周期=1/6us;

机器周期=1us;

指令周期=1~4us;


初始化程序应完成如下工作:

对TMOD赋值,以确定T0和T1的工作方式。

计算初值,并将其写入TH0、TL0或TH1、TL1。

中断方式时,则对EA赋值,开放定时器中断。

使TR0或TR1置位,启动定时/计数器定时或计数

image.png?imageView2/2/w/550

解释

image.png?imageView2/2/w/550
image.png?imageView2/2/w/550

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器


typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;


sbit led=P2^0; //定义P20口是led



void Timer0Init()

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。


TH0=0XFC; //给定时器赋初值,定时1ms

TL0=0X18;

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器

}


void main()

{

Timer0Init();  //定时器0初始化

while(1);

}



void Timer0() interrupt 1

{

static u16 i;

TH0=0XFC; //给定时器赋初值,定时1ms

TL0=0X18;

i++;

if(i==1000)

{

i=0;

led=~led;

}

}

推荐阅读

史海拾趣

DCX-CHOL Enterprises公司的发展小趣事

DCX-CHOL Enterprises成立于一个科技蓬勃发展的时代。公司的创始人是一群热衷于电子技术的年轻人,他们看到市场上对于高性能、低功耗芯片的巨大需求,于是决定自主研发。经过数年的艰苦努力,他们成功开发出了一款具有革命性意义的低功耗芯片,该芯片不仅性能卓越,而且成本远低于同类产品。这一创新成果迅速赢得了市场的认可,DCX-CHOL Enterprises因此获得了第一桶金,为公司后续的发展奠定了坚实的基础。

GWM Associates公司的发展小趣事
设计时需要保证增益的稳定性,以确保在不同工作条件下放大器的性能保持一致。
EMMICRO公司的发展小趣事

EMMICRO公司非常注重国际化战略的实施。公司积极参加国际展览和交流活动,与全球范围内的合作伙伴建立了良好的合作关系。同时,公司还通过引进国际先进的生产技术和管理经验,不断提升自身的核心竞争力和国际化水平。在海外市场拓展方面,EMMICRO公司也取得了显著的成果,为公司的长期发展奠定了坚实的基础。

意华(CZT)公司的发展小趣事

自1995年成立以来,意华(CZT)始终秉持“诚信”的合作态度和“创新”的发展思路。在公司初创阶段,面对激烈的市场竞争,意华坚持高质量的产品和服务,赢得了客户的信赖。同时,公司不断投入研发,推出了一系列具有创新性的电子产品和连接器,迅速在市场上树立了良好的口碑。

General Magnetics Inc公司的发展小趣事
定期对电子变压器进行维护检查,如清理灰尘、检查连接线路等,以确保其长期稳定运行。
Consolidated Wire公司的发展小趣事

随着业务的不断发展,Consolidated Wire公司开始积极拓展国内外市场。公司加大了市场推广力度,通过参加行业展会、举办技术研讨会等方式提升品牌知名度。同时,公司还积极开拓海外市场,与国际知名企业建立合作关系,实现了业务的全球化布局。这些举措不仅提升了公司的市场份额,也增强了公司在电子行业的影响力。

问答坊 | AI 解惑

电路设计是如何确定限流电阻的阻值

各位大虾,在设计电路原理图时,两个集成芯片连接时往往都要串联电阻,而非直接相连,请问这些限流电阻的阻值如何确定?…

查看全部问答>

分享一段十六进制转十进制的代码

ACDBUF是一个int型十六进制数最大为0xfff。   a=ADCBUF & 0XF00 >>8;    b=ADCBUF & 0X0F0 >>4;    c=ADCBUF & 0X00F;    a=a&0x08*8+a&0x04*4+a&0x02*2+a&0x01;a=a*256;    b=b&0x08*8+b& ...…

查看全部问答>

摄象头驱动需要添加哪几个组件??

我wince5.0下执行CamTest2.exe(厂家提供的camer测试程序),弹出如下对话框。 This test program only supports MJPEG stream formats. the driver reports format 5 supported . 请问MJPEG对应在PB下需要添加哪几个组件?? 驱动是厂家提供的 ...…

查看全部问答>

怎么在EVC中修改WINCE的IP地址?

我按照网络上的方法来修改IP地址,为什么老是不行,虽然程序执行成功,该添加的注册表项也添加了,但是为什么老是改不成功呢? 我用的方法如下: HKEY   hkey;      CString   strKeyName  &nbs ...…

查看全部问答>

2440 I2S AD转换问题

请问能够通过I2S音频解码芯片进行ADC转换,再通过I2S接口回传至2440处理器吗?如何操作? 音频芯片AK4554自带I2S接口,以及两路ADC转换,默认ADC一直工作,是否ADC的数据直接送到 了I2S的SDO口?将SDO口接到2440的SDI口,通过寄存器能读出ADC转换 ...…

查看全部问答>

求eVC FTP Client类

大家好!哪位大侠有现成的FTP client类,分享一下,不胜感激! 网上下载的CFtpSockClient通讯失败时会死掉…

查看全部问答>

有51基础想学ARM

有点51基础,想学ARM,最近在学校ARM硬件结构知识,只可惜没有实验板,没实践!呵呵……希望能有机会!…

查看全部问答>

学习心的+USB

学了这么长时间的单片机,我觉得最好的办法还是在实践中能快速的成长。只有自己手里有活了,自己就有了学习的目的,知道自己怎么学习,学习哪方面就有了具体的学习方向。不过还是觉得单片机要学的东西很多,最近喜欢上USB了,不知有没有大虾做过, ...…

查看全部问答>

虚拟机不能上网怎么解决

来自 电子工程师技术交流(12425841) NETDEV WATCHDOG: eth0: transmit timed out还有这个问题 …

查看全部问答>