EV LM3S6965 KEYB SCAN FUNCTION
int iFS_IPE; int iFB_IPE;
int p_UP(void){ int si; if ((GPIOPinRead(GPIO_PORTE_BASE,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPI
O_PIN_6|GPIO_PIN_7))==14)){si=1;} else si=0; return si;} int p_DOWN(void){ int si; if ((GPIOPinRead(GPIO_PORTE_BASE,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPI
O_PIN_6|GPIO_PIN_7))==13)){si=1;} else si=0; return si;} int p_LEFT(void){ int si; if ((GPIOPinRead(GPIO_PORTE_BASE,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPI
O_PIN_6|GPIO_PIN_7))==11)){si=1;} else si=0; return si;} int p_RIGHT(void){ int si; if ((GPIOPinRead(GPIO_PORTE_BASE,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPI
O_PIN_6|GPIO_PIN_7))==7)){si=1;} else si=0; return si;} int p_SELECT(void){ int si; if ((GPIOPinRead(GPIO_PORTF_BASE,(GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPI
O_PIN_6|GPIO_PIN_7))==0x00)){si=1;} else si=0; return si;}
int anterior_p_UP, FS_pUP, FB_pUP; int anterior_p_DOWN, FS_pDOWN, FB_pDOWN; int anterior_p_LEFT, FS_pLEFT, FB_pLEFT; int anterior_p_RIGHT, FS_pRIGHT, FB_pRIGHT; int anterior_p_SELECT, FS_pSELECT, FB_pSELECT;
void scan_keyb(void){ //RISING EDGES if (p_UP()==1 && anterior_p_UP==0) {FS_pUP=1;FB_pUP=0;anterior_p_UP=1;} if (p_DOWN()==1 && anterior_p_DOWN==0) {FS_pDOWN=1;FB_pDOWN=0;anterior_p_DOWN=1;} if (p_LEFT()==1 && anterior_p_LEFT==0) {FS_pLEFT=1;FB_pLEFT=0;anterior_p_LEFT=1;} if (p_RIGHT()==1 && anterior_p_RIGHT==0) {FS_pRIGHT=1;FB_pRIGHT=0;anterior_p_RIGHT=1;} if (p_SELECT()==1 && anterior_p_SELECT==0) {FS_pSELECT=1;FB_pSELECT=0;anterior_p_SELECT=1;} //FALLING EDGES if (p_UP()==0 && anterior_p_UP==1) {FB_pUP=1;FS_pUP=0;anterior_p_UP=0;} if (p_DOWN()==0 && anterior_p_DOWN==1) {FB_pDOWN=1;FS_pDOWN=0;anterior_p_DOWN=0;} if (p_LEFT()==0 && anterior_p_LEFT==1) {FB_pLEFT=1;FS_pLEFT=0;anterior_p_LEFT=0;} if (p_RIGHT()==0 && anterior_p_RIGHT==1) {FB_pRIGHT=1;FS_pRIGHT=0;anterior_p_RIGHT=0;} if (p_SELECT()==0 && anterior_p_SELECT==1) {FB_pSELECT=1;FS_pSELECT=0;anterior_p_SELECT=0;} }
//reset Mirror input bits void reset_IPE(void){ //PONER A CERO TODAS LAS IMAGENES DE PULSADORES FS_pUP=0; FB_pUP=0; FS_pDOWN=0; FB_pDOWN=0; FS_pLEFT=0; FB_pLEFT=0; FS_pRIGHT=0; FB_pRIGHT=0; FS_pSELECT=0; FB_pSELECT=0; }
//////////////////////////////////////////////////usage:////////////////////////////////////////////
///////////////////////
while(true){
scan_keyb();
if (p_UP==1){OSRAM128x64x4StringDraw("true at UP key",0,10,15);}
if (FS_pSELECT==1){OSRAM128x64x4StringDraw("rise edge at SELECT key",0,20,15);}
///USER PROGRAM
reset_IPE(); }
login or register to reply
|