标题:
矩阵键盘扫描编里面有不懂的地方请大家帮帮我
[打印本页]
作者:
fujian2014
时间:
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一样吗为啥这么写
请大家帮帮我哈
作者:
a110
时间:
2014-11-2 01:48
KeyNO +=? 意思是 keyno= KeyNO +12
作者:
jiege
时间:
2014-11-4 12:38
楼上的说的很很对,这是c语言的操作符号,这种写法可以简化程序。二楼的这种写法就明显要长一些
作者:
fujian2014
时间:
2014-11-5 15:28
谢谢哦
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1