看看各位对这个程序有解没,问题是,不能控制延时时间。
功能:实现数码管位上的延时和单向重复流水,且以数字标示是第几位;而中断程序实现循环流水。
#include <reg52.h>
#include <intrins.h>
sbit duan=P3^5;
sbit wei=P3^6;
unsigned char code table1[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
unsigned char code table2[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char a,b,c;
void delay(unsigned char b);
void main()
{
EA=1;
EX0=1;
IT0=1;
while(1)
{
for(a=0;a<8;a++)
{
duan=1;
P0=table1[a];
duan=0;
duan=0xff;
wei=1;
P1=table2[a];
delay(200);
P1=0XFF;
delay(200);
wei=0;
}
}
}
void inte(void) interrupt 0 using 3
{
P3=0xfe;
while(1)
{
delay(100);
P3=_crol_(P3,1);
}
}
void delay(unsigned char b)
{
for(c=110;c>0;c--)
for(;b>0;b--);
}
改变b的变量,对延时程序无影响。不是延时程序不能调用的问题,而是无法控制延时时间的问题。 |