实现功能:用左移和右移实现流水灯由右向左,然后由左向右循环移动
硬件接线:Led 接P1口
晶振频率:11.0592Mhz
#include<reg52.h>#define uint unsigned intvoid delay(uint z); //函数声明void main(void){ uint i; while(1) { P1=0XFF; for(i=0;i<17;i++)//本来左右循环一遍共需要16次,但是因为在i=8时 P1=0XFF没有右移所以写i<17不是16 { if(i<=8) { if(i<8) //左移的过程 { P1<<=1; delay(1000); } else P1=0XFF;//为右移赋初值 } else { P1>>=1;//右移的过程 delay(1000); } } }}void delay(uint z){ uint x,y; for(x=0;x<z;x++) for(y=0;y<113;y++);}
通过此实验学会了左移,右移,宏定义,函数声明for语句if..else 嵌套语句,的使用。在调试的过程中遇到了以下错误并独自解决了:P一点要大写;注意if..else 嵌套语句的{}是否配对;当延时时间超过255时要用unsigned int不能再用unsigned char 了。