首先delay函数用for循环控制空操作:for(j=0;j<255;j==);再加上外层循环for(k=0;k<=1;k++)来实现延时。其中void delay(unsignde shar i) i 为形参。而在主函数delay(10) 10为实参,遵循值的单向传递性。在调用delay函数时,i为10.。但是你这个延时函数写的有问题,应该做下修改: void delay(unsignde shar i) { unsigned char j,k; for(k=0;k<=i;k++) for(j=0;j<255;j++) ; }