胖班长 发表于 2012-10-23 11:24:28

菜鸟求助:一个遥控器的程序

我是个菜鸟 想调试个遥控器的程序 弄了一天也没弄出来 希望各位指点一下 我错在哪里我数据接的是p3.2,数码管是共阴的,用两个573和P0口接的
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;

uchar code du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

uchar code we[]={0xfe,0xfd,0xfb,0xf7};

uchar irtime;
uchar startflag;
uchar irdata;
uchar bitnum;
uchar irreceok;
uchar ircode;
uchar disp;
uchar irprosok;
void delayms(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j<0;j--);
}

void display(void)
{
        uint i;
        for(i=0;i<4;i++)
        {
                dula=1;
                P0=du];
                dula=0;
                P0=0xff;
                wela=1;
                P0=we;
                wela=0;
                delayms(1);
        }       
}

void timer0init(void)
{
        TMOD=0X02;
        TH0=0X00;
        TL0=0X00;
        ET0=1;
        EA=1;
        TR0=1;
}

void int0init(void)
{
        IT0=1;
        EX0=1;
        EA=1;
}

void irpros()
{
        uchar k,i,j;
        uchar value;
        k=1;
        for(j=0;j<4;j++)
        {
                for(i=0;i<8;i++)
                {
                        if(irdata>6)
                        {
                                value=value|0x80;
                        }
                        k++;
                }
                ircode=value;
        }
}
void irwork(void)
{

        disp=ircode/16;
        disp=ircode%16;

        disp=ircode/16;
        disp=ircode%16;

        disp=ircode/16;
        disp=ircode%16;
        disp=ircode/16;
        disp=ircode%16;
}
void main()
{
        timer0init();
        int0init();
        while(1)
        {
                if(irreceok)
                {
                        irpros();
                        irreceok=0;
                }
                if(irprosok)
                {
                        irwork();
                        irprosok=0;
                }
                display();
        }
}

void timer0() interrupt 1
{
        irtime++;
}

void int0()interrupt 0
{
        if(startflag)
        {
                if(irtime>32)
                {
                        bitnum=0;
                }
                irdata=irtime;
                irtime=0;
                bitnum++;
                if(bitnum==33)       
                {
                        bitnum=0;
                        irreceok;
                }
        }
        else
        {
                startflag=1;
                irtime=0;
        }

}

胖班长 发表于 2012-10-23 11:28:40

那个显示程序是乱弄的
页: [1]
查看完整版本: 菜鸟求助:一个遥控器的程序