Весь код:
#include <LPC21xx.H>`
#define S1 0x20
#define LED0_bm 0x10000
#define LED1_bm 0x20000
#define LED2_bm 0x40000
#define LED3_bm 0x80000
int uiReadButton1(){
unsigned int uiReturnNumber = 0;
uiReturnNumber = ((IO0PIN&S1)== S1) ? 1: 0;
return uiReturnNumber;
}
void LedOn(unsigned int uiNumberOfLed){
switch(uiNumberOfLed){
case 0:
IO1SET = IO1SET|LED0_bm;
break;
case 1:
IO1SET = IO1SET|LED1_bm;
break;
}
}
int main(){
int iPress;
IO1DIR = IO1DIR|LED0_bm|LED1_bm;
IO0DIR = IO0DIR|S1;
IO0SET = IO0SET|S1;
iPress = uiReadButton1();
LedOn(iPress);
}
В обучении говорилось, что если кнопка нажата - соответствующий PIN-код имеет логическое значение 0, а когда он не нажат, PIN-код имеет логическое значение 1.
OKпоэтому я настроил направление ввода:
IO0DIR = IO0DIR|S1;
Я получил что-то вроде этого: отладка IO0DIR
Далее я использовал:
IO0SET = IO0SET|S1;
возобновление использования IO0SET
И мой квест - в этом случае кнопка нажата или не нажата?По логике он должен быть не нажат, потому что флажок установлен, но с другой стороны по умолчанию кнопка нажимается после использования IO0DIR ...