#include<REGX52.H>
#include<INTRINS.H>
voidDelay500ms()
{
unsigned chari,j,k;
nop();
i=4;
j=129;
k=119;
do
{
do
{
while(--k);
}while(--j);
}while (- i);
}
void main ()
{
char i= 2;
while(i--){
P1=0XFE;
Delay500ms();
P1=0XFD;
Delay500ms();
P1=0XFB;
Delay500ms();
P1=0XF7;
Delay500ms ();
P1=0XEF;
Delay500ms();
P1=OXDF;
Delay500ms();
P1=0XBE;
Delay500ms();
P1=0X7F;
Delay500ms();
}
while(1){}
}
是要全部的灯都闪烁吗?
需要每个灯交替闪烁还是同时闪烁?根据P1的赋值,一共8位,不知道你这个0亮还是1亮
如果是1亮,那么P1=0X00就是全灭,P1=0XFF就是全亮中间只要加延迟就可实现同时的亮灭闪烁
关键是要搞清楚,FF从何而来?表示的是二进制的11111111,如果1表示亮,那么赋值给P1=0XFF,则全亮
赋值P1=0XFE那么会有一盏灯灭,具体是哪盏灯需要看硬件结构图,你可以看到的是必然有盏灯灭,要么P的0号口,要么P的7号口什么原因要仔细考虑清楚
while(1){}改为
while(1){
P1=0Xff;
Delay500ms();
P1=0X00;
Delay500ms();
}
while(1){
static i=0;
if(i != 4)
{
P1=0Xff;
Delay500ms();
P1=0X00;
Delay500ms();
}
}
这个可以
建议问问题要把一些前提条件,硬件连接关系等描述清楚,别让人猜