keil汇编调试时间怎么精确(keil的使用和汇编语言上机操作)

Keil uVision 里的时间仿真调节问题

执行时间是和你keil软件调试时设置的晶振频率有关,可以在project---options for target进行设置.在设置成晶振频率为12MHZ时,j为char型时 for(i=0;i27;i++);延时为0.1ms。还有就是延迟时间与i,j的类型有关,int型延迟比较长,因为51是八位的单片机,处理8位的速度快,用int的型处理就会慢

stc12c5a60s2单片机在Keil UV4里调试时间和实际运行时间不一样,实际比调试快很多,如何精准调试。

stc12有1T模式和12T模式,过快应该是是用了1T模式,擅入软件里配置成12T模式后调试修改参数

另,软件等待延时的方法本来就不可靠,建议使用定时器

如何用keil调试定时器

即使你的初值是对的,你这样写也是比实际慢上一些的。因为CPU响应中断是需要时间的,这时计数器又计过好几个数了,还有你赋值的这两个代码也要花时间的!!如果要精确地在中断中给T0赋初值应该是“你现在的初值+

中断响应时间

+

到设置初值代码执行完的时间”,你可以用KEIL分步调试一下,看下程序从进中断到你赋初值所花的时间,计算出“中断响应时间

+

到设置初值代码执行完的时间”然后算出把正确的初值赋值给T0就OK了。

还有种办法是用定时器的自动重装模式,这个比较精确,不需要想用定时器溢出中断这么麻烦,还要用板子调试计算从进中断到你赋初值所花的时间,因为使用这个模式的时候,计数器计数到TOP值,也就是你设定的最大值时,单片机硬件会自动清零计数器,然后从0开始重新开始计数,而不需要我们继续赋初值。

或者不用定时,你外接个时钟芯片如DS1302也可以的。

keil51中如何知道汇编指令的执行时间

这个需要编译之后在汇编视图下查看。每一句汇编代码都有固定的执行时间。查个汇编与执行机器时间对应表就可以算出总的机器周期,然后根据振荡频率就可以精确计算

用Keil调试软件精确延时

51单片机,外接12M晶振

void delay1s(void) //误差 0us

{

unsigned char a,b,c;

for(c=167;c0;c--)

for(b=171;b0;b--)

for(a=16;a0;a--);

_nop_(); //if Keil,require use intrins.h

}

void delay10us(void) //误差 0us

{

unsigned char a,b;

for(b=1;b0;b--)

for(a=2;a0;a--);

}

361知讯网

本文链接:http://pdidw.com/keil/33171.html

发表评论

评论列表

还没有评论,快来说点什么吧~