单片机/MCU论坛
直播中

ltc1994

11年用户 4经验值
擅长:可编程逻辑 处理器/DSP RF/无线
私信 关注
[文章]

求助,写了个二进制对应十进制流水对照,出问题求助啊...

我写了个LED灯显示二进制,对应数码管的十进制数。可是注入到51上,只显示数码管的000,LED不显示,就是说只显示初始值。我怀疑没进入中断计时if中,但是我调试表明进入过了,可是为什么在开发板没有显示呢?

#include
unsigned char jishu,ge,shi,bai,a,b;
***it wei=P2^7;
***it duan=P2^6;
unsigned char code array[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};          //定义数码管0~9数模
void init();          //初始化函数
void dis(unsigned char w,unsigned char e,unsigned char r,unsigned char deng);         //显示函数
void de(unsigned char x);                        //延时函数
void main()
{
        init();
        while(1)
        {
                if(jishu==20)                        //递增
                {
                        a=a--;
                        b=255-a;
                        bai=b/100;
                        shi=b%100/10;
                        ge=b%10;
                        jishu=0;
                }       
                dis(bai,shi,ge,a);
        }
}

void init()
{
        a=255;
        jishu=0;
        TMOD=0x01;                                                  //定时器中断初始化
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
}

void dis(unsigned char w,unsigned char e,unsigned char r,unsigned char deng)
{
        duan=1;                                                   //第一位数码管
        P0=array[w];
        duan=0;
        P0=0xff;
        wei=1;
        P0=0xfe;
        wei=0;
        de(1);

        duan=1;                                                  //第二位数码管
        P0=array[e];
        duan=0;       
        P0=0xff;
        wei=1;
        P0=0xfd;
        wei=0;
        de(1);

        duan=1;                                                 //第三位数码管
        P0=array[r];
        duan=0;
        P0=0xff;
        wei=1;
        P0=0xfb;
        wei=0;
        de(1);
       
        P1=deng;       
}

void de(unsigned char x)
{
        unsigned char q,p;
        for(p=x;p>0;p--)
                for(q=0;q<124;q++);
}

void timer() interrupt 1                                  //定时器
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        jishu=jishu++;       
}

更多回帖

发帖
×
20
完善资料,
赚取积分