发现51用两个移位符号出现错误

2020-01-26 13:03发布


#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char   //宏定义
#define uint unsigned int          //宏定义

sbit leden=P1^6;
sbit en1=P2^0;
sbit en2=P2^3;                 //位定义
sbit ds1302rst=P3^6; // 时钟芯片位定义
sbit LED1=P0^1;



//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
void delay_50us(uint t)
{
        uchar j;
        for(;t>0;t--)
        for(j=19;j>0;j--);
}

//************************************************
//延时函数,在12MHz的晶振频率下
//大约50ms的延时
//************************************************
void delay_50ms(uint t)
{
        uint j;
        for(;t>0;t--)
        for(j=6245;j>0;j--);
}

//******************************************************************
//功能描述:初始化开发板。关闭一些不使用的功能
//参数说明:无      
//返回说明:无
// ******************************************************************/
void targetinit(void)
{
        ds1302rst=0;//关闭时钟芯片
        en1=1;               
        leden=1;
        P0=0xff;        //关闭发光二极管
        leden=0;
        en1=0;
        en2=1;
        P1=0x00;        //关闭点阵
        en2=0;                       
}
int main()
{

        uint led0,led1,i;
        //uchar a[4]={0x7e,0xbd,0xdb,0xe7} ;
        targetinit();  //初始化开发板
        led1=0xfe;
        led0=0x7f;
        i=0;
        leden=1;           //使能LED
        while(1)
        {
        for(i=0;i<4;i++)
        {
    P0=led0>>i;
        P0=led1<<i;        
//    P0=a[i];
//        delay_50ms(50);           //稍微延时
        }
        }
return 0;
}

程序本意是用移位法两边的灯同时亮一直亮到中间为止,但本人发现用两个移位出现问题,而单独用一个移位是完全没问题的,请问各位大神是什么问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。