我认为应该是和第一个流水等试验一样是第一个灯(MTA)先亮,但是利用第二个程序(位操作)都发现是MTB先亮。为什么?谢谢
第一个:对每一个口操作
#include <STC89.h>
sbit mta=P2^4;
sbit mtb=P2^5;
sbit mtc=P2^6;
sbit mtd=P2^7;
void delay(unsigned char n) //延时程序 (n=10--200ms)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
mta=1;
delay(10);
mta=0;
delay(20);
mtb=1;
delay(30);
mtb=0;
delay(40);
mtc=1;
delay(40);
mtc=0;
delay(30);
mtd=1;
delay(20);
mtd=0;
delay(10);
}
}
第二个:(利用了位操作)
#include<stc89.h>
void delay(unsigned char n)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<4;i++)
{
P2=(1<<i+4);
delay(10);
P2&=0x0F;
delay(10);
}
}
}