发现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;
}

程序本意是用移位法两边的灯同时亮一直亮到中间为止,但本人发现用两个移位出现问题,而单独用一个移位是完全没问题的,请问各位大神是什么问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
eduhf_123
1楼-- · 2020-01-26 13:37
先去把C语言学懂了再说。
HeP028
2楼-- · 2020-01-26 18:46
 精彩回答 2  元偷偷看……
log1009855496
3楼-- · 2020-01-26 22:10
顶一楼,解决方法在二楼。
starsnow
4楼-- · 2020-01-27 03:26
P0=led0>>i;
P0=led1<<i;

这第一句不是白写了嘛,哈哈,第二句完全覆盖第一句的效果嘛。

一周热门 更多>