单片机用c语言编程的问题

void delay()
{ ;; } //里面有两个空格和两个逗号

这是一个延时程序,郭天祥的教材上这么说的 大约延时5us左右 我有一下几点不太明白 1.大括号内的逗号是不是必须的,用空格代替行吗 2.这个程序的延时5us是怎么算的,全是空格或者全是逗号行吗 3.用其它的符号代替行吗

1大括号主要是告诉编译器这是一个程序段,不可能空格代替,空格只有用在字符串时才被编译器识别。
2程序的延时主要是与你用的晶振有关,计算方法:如果你的用12M晶体,一般的51单片机12分频之后就只有1M了,1M就是它的工作速度(也叫做机器周期,大小为1us),指令执行的时间叫做指令周期,一个机器周期内执行一个单周期指令,NOP是单周期指令(用时为1us)。空格不会被编译器认为有空格的,你用多少都没有用;一个逗号就是一个空语句,常被编译成NOP指令。
3你可以用_nop();这是一个空跳的函数,多调用几次就能达到效果。一般延时最好用,定时器,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-11
单片机c语言编程做不到精确延时,这个延时程序是用两句空语句来延时的,类似汇编中的NOP指令,这个延时的5us应该是利用断点的方法测试出来的
相似回答