一开始我编写的时候是这样的
if (IO0PIN & key == 0) IO1CLR = led;
else IO1SET = led;
我左看右看感觉没有什么错误,后来才想起来&和==的运算符优先级是==大于&,所以需要改成if((IO0PIN&key)==0)
改完了以后就成功了。
IO0DIR的某一位设置为1时只有该位是输出位,其他位不输出。
IO0PIN不论IO0DIR为什么,都可以读出。
矩阵键盘的检测:
贴出代码:
#include<lpc213x.h>
#define sw1 (unsigned int)1<<8 //unsigned int 消除warning,默认为有符号数。
#define key1 1<<12
#define led 1<<17
int main()
{
PINSEL0=0;
PINSEL1=0;
PINSEL2=0;
IO0DIR=~sw1; //被检测的一边IO应为输入 ,另一端作为输出,设置为输出的不变(为低电平),要检测的是输入的部分。
IO0PIN=0xfffffeff;
IO1DIR|=led;
while(1)
{
if((IO0PIN&k