找回密码
 立即注册

QQ登录

只需一步,快速开始

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

矩阵键盘扫描编里面有不懂的地方请大家帮帮我

[复制链接]
跳转到指定楼层
楼主
ID:67818 发表于 2014-10-30 21:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4*4矩阵键盘扫描编



#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit BEEP = P3^7;uchar code DSY_CODE[]={         0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};uchar Pre_KeyNO = 16,KeyNO = 16;void DelayMS(uint ms){         uchar t;        while(ms--)        {                 for(t=0;t<120;t++);        }}void Keys_Scan(){         uchar Tmp;        P1 = 0x0f;        DelayMS(1);        Tmp = P1 ^ 0x0f;        switch(Tmp)        {                 case 1: KeyNO = 0; break;                case 2: KeyNO = 1; break;                case 4: KeyNO = 2; break;                case 8: KeyNO = 3; break;                default: KeyNO = 16;        }        P1 = 0xf0;        DelayMS(1);        Tmp = P1 >> 4 ^ 0x0f;        switch(Tmp)        {                 case 1: KeyNO += 0; break;                case 2: KeyNO += 4; break;                case 4: KeyNO += 8; break;                case 8: KeyNO += 12;        }}void Beep(){         uchar i;        for(i=0;i<100;i++)        {                 DelayMS(1);                BEEP = ~BEEP;        }        BEEP = 1;}void main(){         P0 = 0x00;        while(1)        {                 P1 = 0xf0;                if(P1 != 0xf0)                        Keys_Scan();                if(Pre_KeyNO != KeyNO)                {                         P0 = ~DSY_CODE[KeyNO];                        Beep();                        Pre_KeyNO = KeyNO;                }                DelayMS(100);        }}以上程序是我从别处摘录的
     我这里不明白
    switch(Tmp)
        {                 case 1: KeyNO += 0; break;                case 2: KeyNO += 4; break;                case 4: KeyNO += 8; break;                case 8: KeyNO += 12;        }

       KeyNO +=?这是什么意思呢
       还有Tmp = P1 >> 4 ^ 0x0f;
      不就是和第一次的那个TMP一样吗为啥这么写
      请大家帮帮我哈

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

使用道具 举报

沙发
ID:44262 发表于 2014-11-2 01:48 来自触屏版 | 只看该作者
  KeyNO +=?  意思是 keyno= KeyNO +12

评分

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

查看全部评分

回复

使用道具 举报

板凳
ID:51088 发表于 2014-11-4 12:38 来自触屏版 | 只看该作者
楼上的说的很很对,这是c语言的操作符号,这种写法可以简化程序。二楼的这种写法就明显要长一些
回复

使用道具 举报

地板
ID:67818 发表于 2014-11-5 15:28 | 只看该作者
谢谢哦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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