只有当表达式为0时才会跳出循环;所以可以用while做延时用
a=50000; while(a--);
当a减到为0时 循环结束;
想要永远循环得话可以这样用
while( 1 ){ a=500; while( a-- ); }软件延时
编写一个让第一个灯闪烁的程序
#includeunsigned int a; void main() { while(1){ a=50000; P1=0xfe; while( a-- ); a=50000; P1=0xff; while( a-- ); } }
中间用了两次延时程序;
子程序调用延时子程序
void delay() { uint x,y; for(x=100;x>0;x--) for(y=2000;y>0;y--); }
延时时间为 100*2000*机器周期
完整程序 实现灯闪烁
#include带参数的子程序调用//头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; void delay(); //声明函数 void main() { while(1) { led1=0; delay(); //延时 led1=1; delay(); //延时 } } void delay() //延时子程序 { uint x,y; for(x=100;x>0;x--) for(y=2000;y>0;y--); }
#includeC51库函数的调用#define uint unsigned int sbit led1=P1^0; void delay(uint); //声明函数 void main() { while(1) { led1=0; delay(500); led1=1; delay(500); } } void delay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); }
aa=_crol_(aa,1);
aa左移一位 并把结果再次给aa
用c51库函数调用完成流水灯
#include蜂鸣器#include //包含_crol_函数所在的头文件 #define uint unsigned int #define uchar unsigned char void delay(uint); uchar aa; //定义一个中间量,来给P1赋值 void main() { aa=0xfe; //赋值11111110 while(1) { P1=aa; //第一个灯亮 delay(500); //延时 aa=_crol_(aa,1); //将aa循环左移1位再赋值给aa } } void delay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); }
当b接低电平的时候 ec导通 蜂鸣器启动
b是由单片机上P2.3口控制的
#include#define uint unsigned int sbit fmq=P2^3; void delay(uint); void main() { while(1) { fmq=0; delay(500); fmq=1; delay(100); } } void delay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)