历史上的今天
返回首页

历史上的今天

今天是:2025年10月19日(星期日)

正在发生

2022年10月19日 | STC89C52单片机 定时器

2022-10-19 来源:csdn

怎么去设置定时?

例如:

定时 50微秒


首先  50000 ÷ 1.085  =  46,082.94930875576 从 0 开始加 19,453 次会溢出     这样的计算会有误差,但是影响比较小可以忽略不计

TH0 = (65535 - 46082) / 256; // 将商放在高八位

TL0 = (65535 - 46082) % 256; // 将余数放在低八位

或者 65535 - 46082 = 19453


十六进制得到:4BFD

二进制得到:0100 1011 1111 1101 

将得到的十六进制分别放入 TH0 和 TL0;

TH0 = 0x4b;

TL0 = 0xfd; //定时50ms


定时器

定时器0工作模式1 16位定时模式,数码管动态显示0-10秒表。


#include

#include


#define uint unsigned int

#define uchar unsigned char


sbit DU = P2^6;//数码管段选

sbit WE = P2^7;//数码管段选


//共阴数码管段选表0-9

uchar  code tabel[]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,};


/*====================================

函数 : delay(uint z)

参数 :z 延时毫秒设定,取值范围0-65535

返回值 :无

描述 :12T/Fosc11.0592M毫秒级延时

====================================*/

void delay(uint z)

{

uint x,y;

for(x = z; x > 0; x--)

for(y = 114; y > 0 ; y--);


/*====================================

函数 :display(uchar i)

参数 :i 显示数值,取值范围0-255

返回值 :无

描述 :三位共阴数码管动态显示

====================================*/

void display(uchar i)

{

uchar bai, shi, ge;

bai = i / 100; //236 / 100  = 2

shi = i % 100 / 10; //236 % 100 / 10 = 3

ge  = i % 10;//236 % 10 =6

//第一位数码管 

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFE; //1111 1110

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[bai];//

DU = 0;//锁存段选数据

delay(5);


//第二位数码管

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFD; //1111 1101

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[shi];//

DU = 0;//锁存段选数据

delay(5);


//第三位数码管

P0 = 0XFF;//清除断码

WE = 1;//打开位选锁存器

P0 = 0XFB; //1111 1011

WE = 0;//锁存位选数据

DU = 1;//打开段选锁存器

P0 = tabel[ge];//

DU = 0;//锁存段选数据

delay(5);

}

//定时器0初始化

void timer0Init()

{

TR0 = 1; //启动定时器0

TMOD = 0X01; //定时器工作模式1,16位定时器计数模式

TH0 = 0x4b;

TL0 = 0xfd; //定时50ms


/*

   怎么去定时?例如定时 50微秒

首先  50000 ÷ 1.085  =  46,082.94930875576 从 0 开始加 19,453 次会溢出     这样的计算会有误差,但是影响比较小可以忽略不计

TH0 = (65535 - 46082) / 256; // 将商放在高八位

TL0 = (65535 - 46082) % 256; // 将余数放在低八位

或者 65535 - 46082 = 19453

十六进制得到:4BFD

二进制得到:0100 1011 1111 1101 

将得到的十六进制分别放入 TH0 和 TL0;

TH0 = 0x4b;

TL0 = 0xfd; //定时50ms

*/

}


void main(){//main函数自身会循环

uchar mSec, Sec;//毫秒和秒储存变量

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

while(1)

{

if(TF0 == 1)//判断是否溢出

{

TF0 = 0;//软件清零溢出标志位

TH0 = 0x4b;

TL0 = 0xfd; //定时50ms

mSec++;//50ms到

if(mSec == 20)

{

mSec = 0;

Sec++;//1秒时间到

}

}

display(Sec); //数码管显示函数

if(Sec > 59)

Sec = 0;//秒清零 

}

}  

推荐阅读

史海拾趣

DBS Microwave Inc公司的发展小趣事

作为一家有社会责任感的企业,DBS Microwave始终关注环境保护和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的污染排放。同时,公司还积极参与社会公益活动,为当地社区的发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

EICHHOFF公司的发展小趣事

随着全球化趋势的加强,EICHHOFF公司意识到必须加快国际化步伐以拓展更广阔的市场。XX年代初,公司开始在欧洲其他国家设立销售和服务机构,并逐步将业务拓展到亚洲和北美地区。为了更好地适应不同地区的市场需求和文化差异,EICHHOFF公司积极招聘本地人才,并加强与当地企业和机构的合作。

通过实施国际化战略,EICHHOFF公司的品牌影响力得到了显著提升,市场份额也不断扩大。同时,公司也积累了丰富的国际运营经验和管理经验,为未来的发展奠定了坚实基础。

圣邦微电子(Fangtek)公司的发展小趣事

在快速发展的同时,EICHHOFF公司也积极关注环保和可持续发展问题。公司认识到作为电子行业的一员,必须承担起保护环境、节约资源的责任。为此,EICHHOFF公司采取了一系列措施来降低生产过程中的能耗和排放。例如:引入节能设备和技术、优化生产流程、推广绿色包装等。

此外,EICHHOFF公司还积极参与环保公益活动和社会责任项目,为社会做出积极贡献。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

Exar公司的发展小趣事

为了进一步扩大市场份额,Exar公司开始积极拓展全球市场。公司加大了对海外市场的投入力度,通过参加国际展会、建立海外分支机构等方式,不断提升品牌知名度和市场影响力。同时,Exar还积极与当地企业合作,共同开拓市场,实现了互利共赢。

Engineered Components Co公司的发展小趣事

为了确保产品质量和客户满意度,ECC建立了完善的质量管理体系。他们从原材料采购到生产、检测、包装等各个环节都制定了严格的质量标准。ECC还引入了先进的质量检测设备和方法,确保每一件产品都符合高标准的质量要求。此外,ECC还定期对员工进行质量培训,提高员工的质量意识和操作技能。这些措施使得ECC的产品在市场上赢得了良好的口碑和信誉。

Alcatel-Lucent公司的发展小趣事

随着市场竞争的加剧,ECC意识到只有不断创新才能保持领先地位。因此,公司加大了对研发的投入,引进了一批先进的研发设备和人才。经过数年的努力,ECC成功研发出了具有更高精度、更好性能的电子连接器,并推出了一系列新型电子元件。这些新产品不仅满足了客户日益增长的需求,还为公司带来了更多的市场份额。

问答坊 | AI 解惑

最深入最经典的电容剖析

最深入最经典的电容剖析…

查看全部问答>

今年的PCIM有人去吗?

看了下今年的PCIM参加的厂商,目前好像很少唉。不知道研讨会精不精彩      有会去的朋友吗? Aavid Termalloy ChinaAuxel FTG (Shanghai) Co., Ltd ChinaAVX / Kyocera(S) Pte Ltd Singapore Beijing LEM Electronics Co., ...…

查看全部问答>

STC单片机型号识别不出大家有什么办法

公司库里有一批,没有印型号的STC片子,20脚DIP,什么原因,没型号的没有上文,我想用一下,可是下载确怎么也找不到型号,高手们有什么办法识别出来呢???…

查看全部问答>

如何能过滤到文件的复制,粘贴操作

小子想要实现的功能是:对所有拷入U盘的文件进行加密操作,设想是在过滤驱动中捕获写操作,但对复制、粘贴的内核操作过程很迷茫。那位大大能指点下小子,给介绍下中间发生了些什么。…

查看全部问答>

VxWorks下编译的.o文件, 如何得到函数符号表。

例如文件a.cpp编译成a.o, 里面有10个函数,如何根据a.o得到函数符合表了,谢谢!…

查看全部问答>

evc移植到VS2005的错误

将工程从evc4移植到VS2005, 在emulaor中运行,出现断言错误 ,错误信息显示如下: debug assertion failed! Program:\\Program files\\pro.exe File: f:\\sp\\vctools\\vc7libsce\\ship\\atlmfc\\src\\mfc\\filecore.cpp line 297 如何解决??…

查看全部问答>

stdafx.h问题

我在EVC环境下建立的程序,程序修改编译成功后,在后来修改一个.cpp文件中的程序时,我稍改动一下程序,本来程序没什么问题,但在编译后出现如下编译错误: c:\\documents and settings\\proc\\locate.cpp(5) : fatal error C1083: Cannot open include ...…

查看全部问答>

2812程序中有超过8K数据时的CMD文件分配问题请教!

最近在编写的一个系统控制软件中需要用到大量自己编制的数据表,数据量很大已经超过了8K,即已经超过了RAML0L1范围,疑问是怎样将只读的数据表格分配到FLASH区中?我在分配到FLASH中时程序烧写后相应区域读出来的不是0就是0x0ffff;是否是需要修改.ge ...…

查看全部问答>

LM3S6965+lwip的UPD传输速率问题

使用UDP进行数据传输的速率测试,无限循环传输一个随机数组,没有采用操作系统,最高速度只有500K字节每秒,使用TCP做同样的测验也是500KB,求助各位大神这是怎么回事呢? 附上UDP部分源码: struct udp_pcb *pcb; int i; static char data[147 ...…

查看全部问答>

房,库房,车间,办公环境温湿度集中监控系统应用方案

库房,车间,办公环境温湿度集中监控系统应用方案 第一部分 温湿度监测方案 一、应用概述   在信息化程度越来越高的今天,担当信息处理与交换重任的机房是整个信息网络工程的数据传输中心、数据处理中心和数据交换 ...…

查看全部问答>