永发信息网

C编写延时程序时,下面这段代码表示延时187ms?怎么计算的?晶振为12MHZ for(t2=0;t2<8000;t2++){}

答案:2  悬赏:10  手机版
解决时间 2021-02-08 23:31
C编写延时程序时,下面这段代码表示延时187ms?怎么计算的?晶振为12MHZ for(t2=0;t2<8000;t2++){}
最佳答案
不可能是187ms吧,
通常情况下,一次for循环运行需要8个机器周期,12MHZ的一个机器周期为1us。
所以for(t2=0;t2<8000;t2++){}的时间消耗大约为8000*8=64000us=64ms

但是具体的运行环境差别较大,不过应该没有187ms这么夸张,给你一个程序验证一下:
#include

__forceinline unsigned _int64 My_clock(void)
{
_asm _emit 0x0F
_asm _emit 0x31
}
unsigned _int64 Start(void) { return My_clock();} // 开始时间
unsigned _int64 Stop(unsigned _int64 m_start, unsigned _int64 m_overhead)
{return My_clock()-m_start - m_overhead; } // 停时间

void main()
{
unsigned _int64 m_start=0, m_overhead=0;
unsigned int N;
m_start = My_clock();
m_overhead = My_clock() - m_start - m_overhead;
m_start = My_clock(); // 正式开始
//测试程序段 Start
for(int t2=0;t2<8000;t2++){}
//测试程序段 End
N = Stop(m_start,m_overhead); // 获取耗时.
printf("Time:%I64d us\n", N);
}
全部回答
你好! 跟你用的芯片类型也有关系,如果是1T 可能跑得很快,8051系列的,是12T的比较稳定,但具体效果也跟编程有关,如定义的 int xdata t2; 与int data t2; 相差很多很多,在芯片型号一定,代码形式确定的情况下,大体上可以计算下一共用了多少指令来估算时间,还可以在仿真程序下用断点方式,查看一下,这个循环要花多少时间,不一定就是187的 比较精确的延时方式还是用时间中断 打字不易,采纳哦!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
卧室放电视会影响夫妻感情吗?
钢铁雄心3一个阵营赢了之后可不可以内部大战
有个成语叫坦诚布公吗
洞口县文物管理局地址在什么地方,想过去办事
把数2010四舍五入保留三个有效数字是________
我的QQ号被盗了之后,我改了密码密码改回来了
衣服上的聚脂纤维什么
【2016年电费价格】...决定从2016年5月1日起
根号立方5可以换算成分数么
家明酒水在什么地方啊,我要过去处理事情
副乳长什么样
儿童电动汽车有电路图吗?充不进电,也不能走
极品飞车17 保时捷918 如何获得
【痛苦的人】经历着最深的痛苦的人往往是那些
邯郸市鹤翔中医骨病研究所怎么去啊,有知道地
推荐资讯
友家女子美容美体怎么去啊,我要去那办事
全自动批量刻录光盘的机器,需要专业的无人值
怎么创造自己的专属字体 制作个性化字体
【一个挂钟的分针长20厘米】一个挂钟的分针长
世纪星艺术园地址在哪,我要去那里办事
平台在哪里啊,我有事要去这个地方
摩菲婚礼定制怎么去啊,我要去那办事
合成自然界不存在的蛋白质应首先设计 A. 蛋白
公主农场物语怎么提升萨姆的好感
两个星球组成双星,他们在相互间万有引力作用
丰田致享全系标配可以注册滴滴吗
16岁162高的女生82斤算不算瘦?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?