各位大牛,我是菜鸟,麻烦大家看看我的程序哪里出错!为什么proteus上模拟的led数码管一个一个地显示,不能做到动态显示?
谢谢大家!
#include<reg51.h>
sbit button=P3^0;
unsigned int msec1;
unsigned int msec2;
unsigned int clockbuf[]={0,0};
unsigned int com[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int *dis_p;
void display(unsigned int *dis_p);
void delay(unsigned int i)
{
unsigned char a;
for(a=0;a<i;i++);
}
void main ()
{
msec1=0;
msec2=0;
TMOD=0x02;
TL0=0x06;
TH0=0x06;
ET0=1;
EA=1;
TR0=1;
dis_p=clockbuf;
while(1)
{
display(dis_p);
}
}
void clock() interrupt 1
{
msec1++;
if(msec1==0x28)
{
msec1=0;
msec2++;
if(msec2==100)
{
msec2=0;
clockbuf[1]++;
if(clockbuf[1]==60)
{
clockbuf[1]=0;
clockbuf[0]++;
if(clockbuf[0]==60)
{clockbuf[0]=0;}
}
}
}
}
void display(unsigned int *p)
{
unsigned int i;
unsigned int k;
unsigned int temp;
unsigned int buffer[]={0,0,0,0};
buffer[0]=p[0]/10;
buffer[1]=p[0]%10;
buffer[2]=p[1]/10;
buffer[3]=p[1]%10;
for(k=0;k<3;k++)
{ temp=0x01;
for(i=0;i<4;i++)
{ unsigned char j;
j=buffer;
P1=com[j];
P2=temp;
temp<<=1;
delay(10);
}
}
}
|