智能车制作

标题: 大家看一段XS128的神奇但却跑得很稳的一段程序 [打印本页]

作者: 阳光里的孩子    时间: 2012-3-15 11:18
标题: 大家看一段XS128的神奇但却跑得很稳的一段程序
先说功能,实现T[0:6]口实现按键扫描的程序

/*
*   T[4:6]配置为输出,扫描时为高电平
*   T[0:3]配置为输入,极性为下拉
*/
void an_jian_init(void)
{
    DDRT=0x70;
          PERT=0x8f;
          PPST=0x8f;
          PTT=0x70;
}

void an_jian(unsigned char *anjian)
{
   //  0  4  8
    PTT=0x10;
    if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT1==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT1==1)
        {
            while(PTT_PTT1==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=4;
        }
    }
    else if(PTT_PTT2==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT2==1)
        {
            while(PTT_PTT2==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=8;
        }
    }
    else if(PTT_PTT3==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT3==1)
        {
            while(PTT_PTT3==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    PTT=0x20;
    if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT1==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT1==1)
        {
            while(PTT_PTT1==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=4;
        }
    }
    else if(PTT_PTT2==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT2==1)
        {
            while(PTT_PTT2==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=8;
        }
    }
    else if(PTT_PTT3==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT3==1)
        {
            while(PTT_PTT3==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    PTT=0x40;
    if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT0==1)
    {
        delay_12864(1);
        if(PTT_PTT0==1)
        {
            beep=1;
            while(PTT_PTT0==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
    else if(PTT_PTT1==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT1==1)
        {
            while(PTT_PTT1==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=4;
        }
    }
    else if(PTT_PTT2==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT2==1)
        {
            while(PTT_PTT2==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=8;
        }
    }
    else if(PTT_PTT3==1)
    {
        beep=1;
        delay_12864(1);
        if(PTT_PTT3==1)
        {
            while(PTT_PTT3==1)
            {
                delay_12864(1);
            }
            beep=0;
            *anjian=0;
        }
    }
}

这段程序看着很畸形,但却是我一个上午的结晶哈,无论是自操作还是其他操作,大家如果能在T口上写出来矩阵键盘程序的话分享下,大家谈论下程序中各个问题都很奇怪的啊!?  


作者: 我是北丐    时间: 2012-3-15 14:10
建议参考下51单片机的键盘程序
作者: sonwendi    时间: 2012-3-15 20:36
很奇怪吗?
T口本来就可以用做GPIO口
建议用反转法吧,代码少
作者: 天弈    时间: 2012-3-16 20:28
无语
作者: 阳光里的孩子    时间: 2012-3-18 16:03
51的配置根本就出不来,不信的话可以试试,仔细的看看,你会发现程序根本不执行第一个if而是执行else后的,但是if和else是完全一样的代码!可以试试,这是我一个晚上试出来的,拿出来让大家看的,呵呵
作者: erchowyo    时间: 2012-3-24 22:17





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2