我记得keil里面有时间的,好久不用了,单位好像是微秒吧!就是那个分步执行,按一下执行一步的..
比如前面那个箭头指到你的调用函数delay(200);假设执行到此部用时1110。
按一下执行,箭头指到下一“;”前的那一句了,如果此时用时显示变成了1510,说明延时函数延时了400us
要注意选择对的晶振频率
延迟就是无限执行while语句,一直到循环退出。执行一条语句一般是1-4个机器周期,而一个机器周期由12个时钟周期组成,时钟周期就是晶振的倒数。
比如12MHz的晶振,一个语句是一个周期,那就是1/12us 乘以 12 乘以 1 ,就是a=1的延时时间,a=200就再乘以200.
不知你用的什么型号的单片机,假设你单片机执行一条指令的时间为x,则:
1:传递的参数为200,一直减到0用200个周期
2:每减一需要判断是否减到0,汇编后为比较指令,就要用200个比较指令的周期
总共用时就是200+200*比较指令的周期
将代码通过编译工具转成汇编指令,然后计算执行完这个函数需要多少条指令周期,根据芯片DATASHEET,计算出总共需要的时间。
每步相当于一微妙,--a每循环一次之前自减1,所以while循环的次数为a的值,时间t=200微妙