帮忙看一下那个地方出错了,怎么用protues仿真时出错

2019-07-15 23:05发布

本帖最后由 ty1649 于 2013-8-13 10:20 编辑

#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;
                }
                }
%ZAO)Z]{K(T@IOL(II5R9(6.jpg
QQ截图20130813101556.png
QQ截图20130813101609.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
xunfeng0862
2019-07-16 06:32
1.如一楼所说 P0=duan[zhong];这句肯定有问题,duan是个数组,zhong也是个数组,你要表达的意思是P0依次取zhong的6个值。
for(i = 0; i < 6; i++)
{
       P0 = duan[zhong[i]];
}

2.你用的是定时器的第二种模式,定时非常短,只有250US,你把显示程序放在中断里面,肯定会有问题的。 建议把显示程序放在主函数里面。定时器用模式1。定时时间为100MS左右。

一周热门 更多>