微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 帮忙看一下那个地方出错了,怎么用protues仿真时出错

帮忙看一下那个地方出错了,怎么用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左右。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top