MSP430F2274
Tengo cuatro botones que deben estar vinculados a la misma rutina de servicio de interrupción. Están vinculados a P1.0 - P1.3. El primer botón está configurado y funciona muy bien con este código de inicialización:
; configure switches
bic.b #0x01,&P1SEL ; select GPIO
bic.b #0x01,&P1DIR ; configure P1.0 as inputs
bis.b #0x01,&P1OUT ; use pull-up
bis.b #0x01,&P1REN ; enable pull-up
bis.b #0x01,&P1IES ; trigger on high to low transition
bis.b #0x01,&P1IE ; P1.0 interrupt enabled
bic.b #0x01,&P1IFG ; P1.0 IFG cleared
Quiero aplicar la misma configuración a los cuatro botones, así que la cambié a:
; configure switches
bic.b #0x0F,&P1SEL ; select GPIO
bic.b #0x0F,&P1DIR ; configure P1.0 as inputs
bis.b #0x0F,&P1OUT ; use pull-up
bis.b #0x0F,&P1REN ; enable pull-up
bis.b #0x0F,&P1IES ; trigger on high to low transition
bis.b #0x0F,&P1IE ; P1.0 interrupt enabled
bic.b #0x0F,&P1IFG ; P1.0 IFG cleared
Este fue el único cambio, y rompió el programa.
La ISA se configura así:
P1_ISR: bic.b #0x01,&P1IFG ; clear the interrupt flag
WALK_ON ; turn the WALK on
reti ; end service routine
; ... some other unrelated stuff ...
.sect ".int02" ; Port 1 interrupt Vector
.word P1_ISR