作业帮 > 综合 > 作业

void delay(uint t) {while(--t);}与void delay(uint z){uint x,y

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/11 04:35:51
void delay(uint t) {while(--t);}与void delay(uint z){uint x,y for(x=z;x>0;x--)的区别
void delay(uint t) {while(--t);}与void delay(uint z){uint x,y
void delay(uint t) {while(--t);}就是执行t次空操作,一个空操作是占一个指令周期,一个指令周期占若干个机器时钟周期(和具体硬件有关).一般在单片机和dsp中,空操作为asm("Nop");所以void delay(uint t) {while(--t);}等价于
void delay(uint t) {while(--t) asm("Nop");}
void delay(uint z)
{uint x,y
for(x=z;x>0;x--);
}
我感觉好像没有写完,因为y还没有看出来是干啥用的~
再问: 为什么我在写调光灯程序时 用void delay(uint t) {while(--t);}可以 用void delay(uint z){uint x,y for(x=z;x>0;x--) for(y=110;y>0;y--);}不可以
再答: 这倒是难住我了 我试试回答啊: 首先,void delay(uint t) {while(--t);}中的字符都是半角符,符合程序书写规范; void delay(uint z){uint x,y for(x=z;x>0;x--) for(y=110;y>0;y--);}中有中文全角符,编译上应该就不能通过,应该改为: void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 另外就是,如果在void delay(uint t) {while(--t);}中你用的是delay(1100),那么在后面的函数中,你应该用delay(10);这样延迟才会是一样的。 我没有单片机在手上,只能在vc上调,感觉后面那个应该也可以。如果还是不行,那就是试试这样子: #define delay(t) while(--t) 这种方式是用宏来实现延迟,和void delay(uint t) {while(--t);}效果一样的。