Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- --------------------------------
- MSP 430
- LED : RESET INT 0.x1
- Developed by: Utroz(Raphael) and Kaddoush(Pablo)
- Blog: http://oakcoders.com
- --------------------------------
- */
- #include "io430.h"
- /* Definição de interrupções(ON/OFF) e manipulação de registradores */
- #include "in430.h"
- #define LED_RED BIT0
- #define LED_GREEN BIT1
- #define DELAY 0xC350
- unsigned short value = 0x01;
- void delay(unsigned int arg)
- {
- for(; arg > 0; arg--);
- }
- int main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; /* Desativa o watch dog */
- P1DIR |= 0x01; /* Pino P.0 como saída e P.2 como entrada */
- P1REN |= 0x04; /* Habilitar interrupção na porta P.2 */
- P1IE |= 0x04; /* Temporariamente desativa a INT. */
- __bis_SR_register(GIE); /* Interrupção Global */
- while(1)
- {
- /* Teste condicional para verificar em qual LED(cor) está */
- if(value == LED_RED)
- P1OUT ^= LED_RED; /* Desliga LED */
- else P1OUT ^= LED_GREEN; /* " " */
- delay(DELAY); /* Chama função de delay */
- }
- return 0;
- }
- /* Tratando RESET INT */
- #pragma vector=PORT1_VECTOR
- __interrupt void Port_1(void)
- {
- P1IFG &= ~0x04; /* Limpa o flag do registrador de INT */
- P1DIR ^= 0x03; /* Bit a bit XOR para alterar a saída do LED */
- P1OUT ^= 0x03;
- value ^= 0x03; /* Sobrecarga em value para teste condicional(0x01 ou 0x02)*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement