智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2543|回复: 5
打印 上一主题 下一主题

大家看一段XS128的神奇但却跑得很稳的一段程序

[复制链接]

12

主题

90

帖子

0

精华

高级会员

Rank: 4

积分
959
QQ
威望
607
贡献
178
兑换币
2
注册时间
2011-7-10
在线时间
87 小时
跳转到指定楼层
1#
发表于 2012-3-15 11:18:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说功能,实现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口上写出来矩阵键盘程序的话分享下,大家谈论下程序中各个问题都很奇怪的啊!?  

32

主题

782

帖子

1

精华

常驻嘉宾

帮主

Rank: 8Rank: 8

积分
3869
威望
2079
贡献
698
兑换币
86
注册时间
2010-10-22
在线时间
547 小时
2#
发表于 2012-3-15 14:10:44 | 只看该作者
建议参考下51单片机的键盘程序
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
3#
发表于 2012-3-15 20:36:28 | 只看该作者
很奇怪吗?
T口本来就可以用做GPIO口
建议用反转法吧,代码少
回复 支持 反对

使用道具 举报

1

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
324
威望
218
贡献
62
兑换币
2
注册时间
2012-3-14
在线时间
22 小时
4#
发表于 2012-3-16 20:28:16 | 只看该作者
无语
回复 支持 反对

使用道具 举报

12

主题

90

帖子

0

精华

高级会员

Rank: 4

积分
959
QQ
威望
607
贡献
178
兑换币
2
注册时间
2011-7-10
在线时间
87 小时
5#
 楼主| 发表于 2012-3-18 16:03:22 | 只看该作者
51的配置根本就出不来,不信的话可以试试,仔细的看看,你会发现程序根本不执行第一个if而是执行else后的,但是if和else是完全一样的代码!可以试试,这是我一个晚上试出来的,拿出来让大家看的,呵呵
回复 支持 反对

使用道具 举报

5

主题

167

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4628
威望
879
贡献
225
兑换币
100
注册时间
2012-2-18
在线时间
3930 小时
毕业学校
神马
6#
发表于 2012-3-24 22:17:40 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 07:27 , Processed in 0.050523 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表