单片机C语言延时程序的计算,是什么样的算法,请求高手。

单片机STC89C52,8位,12M,程序如下:voiddelay(unsignedintcnt){while(--cnt);}主程序有delay(1000)请问dela... 单片机STC89C52,8位,12M,程序如下:
void delay(unsigned int cnt)
{
while(--cnt);
}
主程序有delay(1000)
请问delay(1000)延时了多长时间,是怎么算的,希望高手能解决,
还有就是如果是void delay(unsigned char cnt)又是怎么算的呢,两者的区别在哪里?
展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
百度网友0568cda
2012-02-07 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2887
采纳率:70%
帮助的人:1384万
展开全部
void delay(unsigned char cnt)和void delay(unsigned int cnt)意义上是一样的
延时程序的延时过程,是
while(--cnt);
程序运行过程中消耗的时间
如何计算时间
这要根据你单片机上的晶振频率
51系列单片机1个机器周期等于12个时钟周期,12MHz晶振的话一个机器周期=1/12MHz*12=1us
delay(1000),
delay(1000)即--cnt这条指令运行1000次,消耗1000个机器周期,即1ms。在这个程序上运行消耗1ms时间,相当于延时1ms。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
半拉苹果
2012-02-07 · TA获得超过560个赞
知道小有建树答主
回答量:646
采纳率:0%
帮助的人:132万
展开全部
STC89C52, 12M delay(1) 延时大约为14us delay(1000)大约14ms
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
涛哥打狙
推荐于2017-10-06
知道答主
回答量:35
采纳率:0%
帮助的人:22.5万
展开全部
1、一条指令执行的时间是1/12m=1us(算作一微秒);delay(1000);就需要减1000次,就应该是1000*1us=1ms。
2、每减一次需判断是否到0;翻译为汇编语言后应该是cjne指令,一个cjne指令用2个周期,1000个cjne就是2000周期,共用2ms。
3、调用函数时有赋值,应为是8位机,int为16位,赋值就要用两个周期,每减一次需判断低八位是否减到零,又会翻译为cjne指令,这个就不好算了,大概也要1~2ms,看你传递的参数而定,参数越大用时越大。
delay(1000);就应该用1+2+2=5ms。
void delay(unsigned char cnt)用时和上面算法差不多,只是它传递的参数为8为的,值为0~255,最大延时小于上面。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式