这个其实就是让单片机一直在那里执行空指令,达到延时的效果。延时时间越长,越小的话,延时时间越短..为了防止出现意外,所以特意写成了uint ..也就是无符号的数,,防止给出的参数为负数的话,将会延时很久很久。
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。void delay_ms(unsigned int ms_number) // ms延时函数 (AT89C51 @ 11.0...
定义一个延时xms毫秒的延时函数 void delay(unsigned int xms) // xms代表需要延时的毫秒数 { unsigned int x,y;for(x=xms;x》0;x--)for(y=110;y》0;y--);} 使用:void Delay10us(uchar Ms){ uchar data i;for(;Ms》0;Ms--)for(i=26;i》0;i--);} i=[(延时值...
定义一个函数 delay10ms 形参是无法好整型变量 望采纳哦
void delay voiddelay_ms(uint #include #define uint unsigned int #define uchar unsigned char uint voiddelay(uint voidmain voiddelay(uint voidlefttoright() p2=0xf0;p0=oxof; delay(10); p0=0x00; delay(10); p3=0xof; delay(500); p0=oxf0; delay(10); p0=0x00; delay(10); p3=0xf0;...
你传进来的参数。void DELAY_MS (unsigned int a)。比如你调用它 , DELAY_MS(10) //10就是a。
2.观察这个延时程序你可以发现,总循环次数是ms*110次,就像上面说的如果循环一次耗时1毫秒,如果你想达到你延时某段时长的目的,只能由传入的ms决定了。ms越大延时越久。3.关于这段代码,其中的 for(j=110;j--;j>0); 运行时正常的,但是部分就没有意义了。要么改成 for(j=110;j--;);,...
因为形参变量类型不同,UINT需要占用两个8位(16位)内存空间,而 51单片机 只能进行8位运行,对于16位的数没有直接可用的指令,需要一段不小的程序来处理,所以花费时间就长了。
void delay(void) { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ; //利用循环等待若干机器周期,从而延时一段时间 } / 函数功能:主函数 / void main(void) { while(1) { x=0xfe; //第一个灯亮 delay; //调用延时函数 ...
void delay(unsigned n) //0.2毫秒 { int x,y;for(x=0;x<n;x++)for(y=0;y<24;y++);} 你要先看它的汇编代码,然后根据指令计算这个函数的运行时间,就可以得到是0.2ms