微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助啊,帮我看看程序为什么出错?

求助啊,帮我看看程序为什么出错?

时间:10-02 整理:3721RD 点击:
后面的不用看,帮我看看数码管扫描部分为什么出错就行了?
#include<reg52.h>
sbit WE=P2^1;
sbit DUAN=P2^0;
sbit DS1302=P2^7;
#define uchar unsigned char
#define uint unsigned int
uchar t,num1,num2,num3,num4,num5,num6,num7,num8;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void chushihua()
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        DS1302=0;               
}
void display()
{
        WE=1;
        P0=0xfe;
        WE=0;
        DUAN=1;
        P0=table[num8];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xfd;
        WE=0
        DUAN=1;
        P0=table[num7];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xfb;
        WE=0
        DUAN=1;
        P0=table[num6];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xf7;
        WE=0
        DUAN=1;
        P0=table[num5];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xef;
        WE=0
        DUAN=1;
        P0=table[num4];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xdf;
        WE=0
        DUAN=1;
        P0=table[num3];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0xbf;
        WE=0
        DUAN=1;
        P0=table[num2];
        DUAN=0;
        P0=0xff;
        WE=1;
        P0=0x7f;
        WE=0
        DUAN=1;
        P0=table[num1];
        DUAN=0;
        P0=0xff;
}
void main()
{       
        chushihua();
        TMOD=0x01;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
        {       
                display();               
                if (t==20)
                {
                        t=0;
                        num1++;
                        if (num1==10)       
                        {
                                num1=0;
                        }
                }
        }
}
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t++;       
}

先段选再位选,还要加延时

已经改成这样了,为什么编译不了?

#include<reg52.h>
sbit WE=P2^1;
sbit DUAN=P2^0;
sbit DS1302=P2^7;
#define uchar unsigned char
#define uint unsigned int
uchar t,num1,num2,num3,num4,num5,num6,num7,num8;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)
{
        uint y,x;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void chushihua()
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        DS1302=0;               
}
void display()
{
        DUAN=1;
        P0=table[num8];
        DUAN=0;
        WE=1;
        P0=0xfe;
        WE=0;
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num7];
        DUAN=0;
        WE=1;
        P0=0xfd;
        WE=0
        P0=0xff
        delay(5);
        DUAN=1;
        P0=table[num6];
        DUAN=0;
        WE=1;
        P0=0xfb;
        WE=0
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num5];
        DUAN=0;
        WE=1;
        P0=0xf7;
        WE=0
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num4];
        DUAN=0;
        WE=1;
        P0=0xef;
        WE=0
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num3];
        DUAN=0;
        WE=1;
        P0=0xdf;
        WE=0
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num2];
        DUAN=0;
        WE=1;
        P0=0xbf;
        WE=0
        P0=0xff;
        delay(5);
        DUAN=1;
        P0=table[num1];
        DUAN=0;
        WE=1;
        P0=0x7f;
        WE=0
        P0=0xff;
        delay(5);
}
void main()
{       
        chushihua();
        TMOD=0x01;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
        {       
                display();               
                if (t==20)
                {
                        t=0;
                        num1++;
                        if (num1==10)       
                        {
                                num1=0;
                        }
                }
        }
}
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t++;       
}

0xff 放到dula = 0后面啊

       WE=1;
        P0=0xfe;
        WE=0;
        P=0xff;
        DUAN=1;
        P0=table[num8];
        DUAN=0;
        P0=0xff;应该就没有问题了,试试

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

网站地图

Top