大家好,又见面了,我是你们的朋友全栈君。
延时函数如何延时
代码语言:javascript复制**函数样例 编译软件编译后的 汇编指令
Delay_ms(200); // 1、 0x0000058C 20C8 MOVS r0,#0xC8
void Delay_ms(unsigned int time)
{
unsigned char n;
while(time>0) // 3、0x00000210 2800 CMP r0,#0x00
{
for(n=0;n<4; n) // 4、 0x00000204 2100 MOVS r1,#0x00
{ // 5、 0x00000206 1C49 ADDS r1,r1,#1
; // 6、 0x00000208 B2C9 UXTB r1,r1
// 7、 0x0000020A 2902 CMP r1,#0x02
// 8、 0x0000020C D3FB BCC 0x00000206
// 9、 0x0000020E 1E40 SUBS r0,r0,#1
}
time--; // 2、 0x00000202 E005 B 0x00000210
}
}
所需要了解的信息 1、每一条汇编指令需要占用几个时钟周期,方便计算多少时间 2、时钟周期为1M时,其倒数为时间1us
文字解释
程序进入Delay_ms(200)延时函数后,其对应汇编指令运行顺序为1——2——3——4——5——6——7——8——9 其中的for空循环的汇编指令为5、6、7、8、9这四条,进入for循环这四条指令的运行次数为4(来源于自己设置的n<4) 本函数中对应的汇编指令一般占用一个时钟周期,其中第2和8条为跳转指令,占用2个时钟周期,本函数程序其硬件时钟设置为22MHz,故延时函数时间为(10 8*(n-1))*(1/22M)us
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151107.html原文链接:https://javaforall.cn