微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助,写了个二进制对应十进制流水对照,出问题求助啊...

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

时间:10-02 整理:3721RD 点击:
我写了个LED灯显示二进制,对应数码管的十进制数。可是注入到51上,只显示数码管的000,LED不显示,就是说只显示初始值。我怀疑没进入中断计时if中,但是我调试表明进入过了,可是为什么在开发板没有显示呢?
#include<reg52.h>
unsigned char jishu,ge,shi,bai,a,b;
sbit wei=P2^7;
sbit 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++;       
}

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

网站地图

Top