源码:
#include <reg52.h>
sbit weia=P2^0;
sbit weib=P2^1;
sbit weic=P2^2;
unsigned char letter;
unsigned char num;
unsigned char table[5]={0x76,0x79,0x38,0x38,0x3f};
void delay(unsigned int yc);
void ls();/*数码管流水灯效果函数*/
void main()
{
EA=1;
EX0=1;
IT0=1;
while(1)
{
for(num=0;num<5;num++)
{
letter=table[num];
ls();
}
}
}
void delay(unsigned int yc)
{
unsigned long a;
unsigned long b;
for(a=yc;a>0;a--)
for(b=20;b>0;b--);
}
void ls()
{
weia=1;
weib=1;
weic=1;
P0=letter;
delay(350);//8
weia=0;
weib=1;
weic=1;
P0=letter;
delay(350);//7
weia=1;
weib=0;
weic=1;
P0=letter;
delay(350);//6
weia=0;
weib=0;
weic=1;
P0=letter;
delay(350);//5
weia=1;
weib=1;
weic=0;
P0=letter;
delay(350);//4
weia=0;
weib=1;
weic=0;
P0=letter;
delay(350);//3
weia=1;
weib=0;
weic=0;
P0=letter;
delay(350);//2
weia=0;
weib=0;
weic=0;
P0=letter;
delay(350);//1
}
/*中断函数不需要声明*/
void exter0() interrupt 0
{
P1=0X55;//为什么中断函数中引用delay延迟函数会出问题
delay(1000);//出问题的地方
P1=0XFF;
}
那该怎么修改呢???求指导
è¿æ ·ææ¯æ£ç¡®çä¸æè°ç¨
不过你的中断写错了,有固定的格式的,关中断、计数器TR0=0,设置TH0,TL0,中断优先级(需要时),TR0=1,开中断。
通常做软循环不建议用INT的变量因为太不好就算了 而且切效率低。用UCHAR的2个循环嵌套就可完成你的要求