20141030

流水灯左移8个灯亮然后右移至8个灯亮,再循环

0
阅读(8502)

我的第一个程序

/**************************************
深入浅出玩转51单片机——学习笔记:Led流水灯
实现功能:用左移和右移实现流水灯由右向左,然后由左向右循环移动
硬件接线:Led 接P1口
晶振频率:11.0592Mhz
**************************************/

#include<reg52.h>

#define uint unsigned int

void 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 了