刚学C语言,写了一个追逐式流水灯;自我感觉太繁琐,请高手指点一下,有没有更简单的。 HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.80编译通过 #include<pic.h> #define uchar unsigned char #define uint unsigned int //函数申明 void delay1(uint x); //=======================================//============= void main() //主程序 { uchar x,y,z; //定义变量 x=7; TRISC=0X00; //C口定义为输出 PORTC=0Xfe; //点亮RCO口LED,为共阳 while(1) { PORTC&=0Xfe; delay1(200); if(x==0) { PORTC=0Xfe; x=7; } if(x==1) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC&=0X03; PORTC|=0X01; delay1(200); } x--; } if(x==2) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC&=0X07; PORTC|=0X01; delay1(200); } x--; } if(x==3) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC&=0X0f; PORTC|=0X01; delay1(200); } x--; } if(x==4) { for(z=x;z>0;z--) { PORTC=PORTC<<1; PORTC|=0X01; PORTC&=0X1f; delay1(200); } x--; } if(x==5) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC&=0X3f; PORTC|=0X01; delay1(200); } x--; } if(x==6) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC&=0X7f; PORTC|=0X01; delay1(200); } x--; } if(x==7) { for(z=x;z>0;z--) { PORTC=PORTC<<1; //显示左移一位 PORTC|=0X01; delay1(200); } x--; } } } //=======================================//============= //延时程序 void delay1(uint x) //延时时间为(X)ms { uint a,b; for(a=x;a>0;a--) for(b=75;b>0;b--); //延时数较准确固定多26us } //====================================================================== |
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |