找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2509|回复: 2
打印 上一主题 下一主题
收起左侧

请教5个单片机IO口和数组设置问题

[复制链接]
跳转到指定楼层
楼主
ID:405193 发表于 2018-12-5 21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位师傅,您们好
我有P1口做按钮,用到P1.0,P1.1,P1.2,P1.3,P1.4 做按钮,支持复合按钮,就是多个按钮可以同时按下。对应数组
uint data yanshi[32]={0,3,5,10,20,30,60,120,180,240,300,360,480,600,900,1200,1500,1800,2700,3600,4200,
             4800,5400,6000,6600,7200,7800,8400,9000,9600,10200,10800};  //延时秒数


按钮和数组对应程序如下:
     uchar temp;
        temp=P1;
        temp=~temp;
        temp=temp&0x1F;
        YS=yanshi[temp];

现在的问题,如果YS指定的某个,对应参数正确,例如YS=yanshi[5];延时就是20秒,但是用按钮的程序YS=yanshi[temp]不稳定,有时候20秒,有时候40秒才停,就是多跑了几次,检测问题应该出现在上面的读键盘程序。希望师傅们帮我看看怎样编写,我学单片机时间比较短,水平有限,非常感谢。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:405193 发表于 2018-12-5 22:56 | 只看该作者
我已经找到解决方法了,大家可以参考https://blog.csdn.net/sdnu2011d1/article/details/78268082, 高手就是高手,简单程序就解决了。
unsigned char Trg;
unsigned char Cont;
void KeyRead( void )
{
    unsigned char ReadData = P1^0xff;   // 1
    Trg = ReadData & (ReadData ^ Cont);      // 2
    Cont = ReadData;                                // 3
}

评分

参与人数 1黑币 +100 收起 理由
admin + 100 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:429805 发表于 2018-12-6 09:04 | 只看该作者
unsigned char Trg;
unsigned char Cont;
void KeyRead( void )
{
    unsigned char ReadData = P1^0xff;   // 1
    Trg = ReadData & (ReadData ^ Cont);      // 2
    Cont = ReadData;                                // 3
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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