问题在于,虽然网上有好多朋友问过同样的问题,但是还是不清楚怎么做才能计算出单片机执行了多少指令,然后再除以晶振频率是吗?
先回顾一下一般的程序都是怎么计时的吧:
//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波
TH0=(65536-500)/256;
TL0=(65536-500)*256;
这种是最常见的,问题在于我完全不知道原理,改变th0的值应该是对定时器设定的值,下一次溢出后产生作用吗?
还有常用的循环耗时法,虽然不是什么聪明的办法,但是很好理解,靠循环一定的指令来计算所花的时间,但是指令的量我们怎么精确知道?每条指令的时间怎么算,和晶振的关系是成反比例的么?
我眼花了,后面第二部分居然没看到,有了这个答案,那我在楼上留的言就都是屁话了,这一段才是关键,其它人看到这个问题后也一定可以得到清晰的答案,满意答案就选你了,十分感谢。
追答呵呵
您的回答比较清晰,虽然楼下也很清晰,而且还对与我具体的程序做了例子来分析,但是我先看到你的,所以只好把满意答案给你了。对了,机器周期tcy的取值怎么查?以51系列的来讲,都为12么?其它常用的取值又有哪些呢?我想这个对其它人也同样有用.
追答机器周期为12*(1/晶振频率),晶振频率有12M的,11.0592M的等等