大神!我倒底错在哪里?就4行代码矩阵按...
P1 = 0xf0;
column = P1>>4;
n = (row<<4)|column;这段代码n 会有哪些值呢?源程序上是 0xee,0xed,0xeb,0xe7,0xde...0xbe...0x7e,0x7d,0x7b,0x77,可是我推了好几遍 就是推不出这些结果值 程序已下载到原理图中仿真没有错——————本人对这段代码的理解:比如随便按下一个按键 假设P1值为0x0E,则row=0x0e,给P1重新赋值后P1右移四位为0x0f,赋给column,row左移四位为0xe0,与column位或(0xe0|0x0f)这样结果为0xef,同理所有的低四位都为1 我的理解哪错了呢 程序我已经下载到proteus中仿真 没有问题
#include "key_board.h"
#include "1602_display.h"
/********************************************************************
* 名称 : get_key(void)
* 功能 : 捕获键盘按下的键
* 输入 : 无
* 输出 : 相应的按键对应的字符
***********************************************************************/
char get_key(void)
{
uchar row,column,n;
P1 = 0xf;
if(P1 != 0xf)
{
delay(15);
if(P1 != 0xf)
{
row = P1;
P1 = 0xf0;
column = P1>>4;
n = (row<<4)|column;
switch(n)
{
case (0xee):return 'c';
case (0xed):return '0';
case (0xeb):return '=';
case (0xe7):return '/';
case (0xde):return '1';
case (0xdd):return '2';
case (0xdb):return '3';
case (0xd7):return '*';
case (0xbe):return '4';
case (0xbd):return '5';
case (0xbb):return '6';
case (0xb7):return '-';
case (0x7e):return '7';
case (0x7d):return '8';
case (0x7b):return '9';
case (0x77):return '+';
default: return '#';
}
}
else
return '$';
}
return NOKEY;
}
