#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;
}
程序本意是用移位法两边的灯同时亮一直亮到中间为止,但本人发现用两个移位出现问题,而单独用一个移位是完全没问题的,请问各位大神是什么问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
P0=led1<<i;
这第一句不是白写了嘛,哈哈,第二句完全覆盖第一句的效果嘛。
一周热门 更多>