单片机经典流水灯效果,通过端口循环移位实现。
代码:
#include#include void delay(unsigned int a) { unsigned int i; while( --a!=0) { for(i=0;i<125;i++); } } void main(void) { unsigned i; while(1) { P1=0x01; for(i=0;i<8;i++){ delay(200); P1=P1<<1; //左移 //P1=P1>>1; //右移 } } }
效果图:
led流水灯逐亮。
代码:
#includevoid delay(void) { unsigned int m; for(m=0;m<36000;m++) ; } void main() { unsigned char i; while(1) { P1=0xfE; delay(); for(i=0;i<8;i++) { P1=P1<<1; delay(); } } }
效果图:
通过数组实现:
代码:
#includevoid delay60ms(void) { unsigned char m,n; for(m=0;m<100;m++) for(n=0;n<200;n++); // c语言一条指令3us,汇编为2us,机器周期为1us; } // 一个12mhz,时钟周期为12分之一秒,机器周期为1us,12个时钟周期为一个机器周期 void main(void) {unsigned char i; unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //code 把数组放到rom中,依次放置; while(1) { for(i=0;i<8;i++) {P1=Tab[i]; delay60ms(); } } }
效果:



