#include<reg52.h>//T1的方式2,时间间隔一秒 流水灯 每次三个
#define uint unsigned int
sbit D0=P1^0;
sbit D1=P1^1;
sbit D2=P1^2;
sbit D3=P1^3;
sbit D4=P1^4;
sbit D5=P1^5;
sbit D6=P1^6;
sbit D7=P1^7;
void display(uint);
uint num,n;
void main()
{
TMOD=0x20;
TH1=256-200;
TL1=256-200;
EA=1;
ET1=1;
TR1=1;
while(1)
{
display(n);
}
}
void T0_time() interrupt 3
{
num++;
if(num==5000)
{
num=0;
n++;
if(n==4)
{
n=1;
}
}
}
void display(uint n)
{
if(n==1)
{
D0=~D0;
D1=~D1;
D2=~D2;
}
if(n==2)
{
D3=~D3;
D4=~D4;
D5=~D5;
}
if(n==3)
{
D6=~D6;
D7=~D7;
D0=~D0;
}
}
这段代码,我运行出来 第一次循环是正确的,每次三个闪烁,但是从第二次循环就开始乱闪了 每次也不是三个。。各位看看我错在哪里啊 |