标题: 单片机流水灯三种不同方法源程序(位运算+库函数+字符型数组) [打印本页]

作者: Lydia~    时间: 2018-10-28 08:08
标题: 单片机流水灯三种不同方法源程序(位运算+库函数+字符型数组)
流水灯程序(位运算):
  1. #include <REGX51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char i;
  5. unsigned char temp;
  6. void Delayms(unsigned int ms)
  7. {
  8.    unsigned int i,j;
  9.    for(i=0;i<ms;i++)
  10.    for(j=0;j<120;j++);
  11. }
  12. void main(void)
  13. {
  14.    while(1)
  15.    {
  16.       temp = 0x01;           //0x01=0000 0001
  17.           for(i=1;i<8;i++)
  18.           {
  19.                   P2=~temp;           //P2=1111 1110  对temp取反,保证每次循环只亮一个灯
  20.                   temp=temp<<1;                //按位左移,高位丢弃,低位补0
  21.                   Delayms(200);
  22.           }
  23.           for(i=1;i<8;i++)
  24.           {
  25.                   P2=~temp;        
  26.                   temp=temp>>1;  //按位右移,高位补0,低位丢弃
  27.                   Delayms(200);
  28.           }
  29.    }
  30. }
复制代码


流水灯代码(库函数):
  1. #include <REGX51.H>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void Delayms(uint ms)
  6. {
  7.    uchar t;
  8.    while(ms--)
  9.    {
  10.       for(t=0;t<120;t++);
  11.    }
  12. }

  13. void main()
  14. {
  15.    uchar i,j;
  16.    P2 = 0xfe;
  17.    while(1)
  18.    {
  19.       for(i=0;i<7;i++)
  20.           {
  21.                  P2 = _crol_(P2,1);         //P1端口向左循环移动一位
  22.                  Delayms(300);
  23.           }
  24.           for(j=0;j<7;j++)
  25.           {
  26.             P2 = _cror_(P2,1);        //P1端口向右循环移动一位
  27.                 Delayms(300);
  28.           }
  29.    }
  30. }
复制代码


流水灯(字符型数组):

  1. #include <REGX51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code Pattern_P2[] =
  5. {
  6.    0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
  7. };
  8. void Delayms(uint ms)
  9. {
  10.    uchar t;
  11.    while(ms--)
  12.    {
  13.       for(t=0;t<120;t++);
  14.    }
  15. }
  16. int main()
  17. {
  18.    uchar i;
  19.    while(1)
  20.    {
  21.       for(i=0;i<8;i++)
  22.           {
  23.              P2=Pattern_P2[i];
  24.                  Delayms(200);
  25.           }
  26.           for(i=8;i--;i>0)
  27.           {
  28.              P2=Pattern_P2[i];
  29.                  Delayms(200);
  30.           }
  31.    }
  32. }
复制代码







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1