麻烦大神帮我看下这个程序哪不对了

2019-07-15 23:51发布

#include <reg52.h>
#include <intrins.h>

unsigned char code DispLED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极
                            // 0    1    2    3    4    5    6    7    8    9   
sbit LS138A = P2^2;          //定义138译码器的输入A脚由P2.2控制            74LS138译码器方式
sbit LS138B = P2^3;            //定义138译码器的输入脚B由P2.3控制
sbit LS138C = P2^4;         //定义138译码器的输入脚C由P2.4控制

sbit been=P1^5;
sbit led=P1^1;

void scan();
void delayus(unsigned char i);        //微妙级别延时函数
void InitT();

unsigned char t=0;
unsigned int num=0;

void scan()
{                        
   //显示时间
        delayus(13000);
        P0=DispLED[t];        //个位
        LS138A=1;           //选择到底用哪一个七段数码管来显示这位数据
        LS138B=1;
        LS138C=1;
}

void delayus(unsigned int i)
{
        unsigned int x;
        for(x=i;x!=0;x--)
        {
                _nop_;
        }
}

void InitT()
{
        TMOD=0x01;       //定时器0,工作方式1:16位手动动灌装,定时器1,工作方式0:13位手动灌装
        TH0=(65536-50000)/256;                 //装初值12Mhz晶振,定时50ms计数50000次
        TL0=(65536-50000)%256;
        EA=1;                           //开总中断
        ET0=1;                           //开定时器0中断
        TR0=1;            //启动定时器0
}




void T0_time() interrupt 1                   //T0中断服务函数
{
        TH0=(65536-50000)/256;                 
        TL0=(65536-50000)%256;
        num++;
        if(num==20)        //           1秒到
        {
                num=0;
                if(t==9)                  //
                {
                        t=0;
                }
                else
                        t++;       
        }
}
void main()
{
        InitT(); //对定时器进行初始化
        while(1)
        {
                switch(t)
                                {
                                        case 0:
                                                been=0;          // 开启蜂鸣器
                                                delayus(300);
                                                been=1;                 //关闭蜂鸣器
                                                delayus(300);
                                                break;
                                        case 9:
                                                led=1;        //把led灯点亮
                                                delayus(300);
                                                led=0;          //把led灯关闭
                                                delayus(300);
                                                break;
                                        default:
                                                break;
                                }
                scan(t);
        }                       
}

做到的效果是到0响声,到9led亮,有什么地方不对麻烦了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。