帮忙看一下那个地方出错了,怎么用protues仿真时出错
时间:10-02
整理:3721RD
点击:
#include <reg51.h>
#define uchar unsigned char
uchar duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar wei[]={0x01,0x02,0x04,0x08,0x10,0x20};
uchar zhong[]={0,0,0,0,0,0};
uchar i,second,minite,hour;
int t;
void main()
{
TMOD=0x00;
TH0=(8192-250)/256;
TL0=(8192-250)%256;
EA=1;ET0=1;TR0=1;
while(1);
}
void timer() interrupt 1
{
TH0=(8192-250)/256;
TL0=(8192-250)%256;
P0=duan【zhong【i】】;
P2=wei【i】;
i++;
if(i==6)
i=0;
if(t++==4000)
{
t=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
zhong[0]=second%10;
zhong[1]=second/10;
zhong[2]=minite%10;
zhong[3]=minite/10;
zhong[4]=hour%10;
zhong[5]=hour/10;
}
}
没细看,这样能显示吗?P0=duan[zhong]; 我也猜的
1.如一楼所说 P0=duan[zhong];这句肯定有问题,duan是个数组,zhong也是个数组,你要表达的意思是P0依次取zhong的6个值。
for(i = 0; i < 6; i++)
{
P0 = duan[zhong[i]];
}
2.你用的是定时器的第二种模式,定时非常短,只有250US,你把显示程序放在中断里面,肯定会有问题的。 建议把显示程序放在主函数里面。定时器用模式1。定时时间为100MS左右。