51 单片机 跑马灯2

/*-----------------------------------------------
  名称:流水灯
  日期:2016.7.28
  修改:无
  内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
                    延时子程序
------------------------------------------------*/
void delay(unsigned int cnt) 
{
    while(--cnt);
}
/*------------------------------------------------
                    主函数
------------------------------------------------*/

main()
{
    char flag = 0;                  //设置一个位变量

    P1=0x7f;                       //给初始化值 换算成二进制是0111 1111
    while(1)                     //当为1时  则无限循环   当为0时  则一次都不执行
    {  
        if (flag == 0)           //判断是否为0
        {
            delay(30000);        //延时程序
            P1 = P1 >> 1;          //右移一位 该语句等效于 P1=P1>>1
            P1 |= 0x80;            // 1000 0000
    
            if(P1==0xfe)         //检测是否移到最左端?"=="表示检测符号2端的值是否相等
            { 
                flag = 1;       
            }
        
        }
        else if (flag == 1)
        {
            delay(30000);        //延时程序
            P1 = P1 << 2;          //左移两位 该语句等效于 P1=P1<<2
            P1 |= 0x03;            // 0000 0011
    
            if(P1==0xbf)         //检测是否移到最左端?"=="表示检测符号2端的值是否相等
            { 
                flag = 2;
            }
        }
        else
        {
            P1 = 0x00;            // 灯将会全亮
            delay(30000);        //延时程序
    
            P1 = 0x7f;            // 0111 1111
            flag = 0;
        }
    }
}

 

转载于:https://www.cnblogs.com/zengsf/p/5713757.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值