Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include "msp430g2553.h"
  2.  
  3. void configTimer() {
  4.     TA0CTL |= (TASSEL_2 | ID_3); //Configuração
  5.     TA0CCR0 = 62500 - 1; //Define o contador
  6.     TA0CCTL0 = CCIE; //Liga interrupção do timer
  7. }
  8.  
  9. void startTimer() {
  10.     TA0CTL &= ~MC_0;
  11.     TA0CTL |= MC_1;
  12. }
  13.  
  14. void paraTimer() {
  15.     TA0CTL &= ~MC_1;
  16.     TA0CTL |= MC_0;
  17. }
  18.  
  19. void configLeds() {
  20.     P1DIR |= (BIT0 | BIT6);
  21.     P1OUT &= ~(BIT0 | BIT6);
  22. }
  23.  
  24. void configSensor() {
  25.     P1DIR &= ~BIT3;
  26.     P1REN |= BIT3;
  27.     P1OUT |= BIT3;
  28. }
  29.  
  30. void acendeLeds() {
  31.     P1OUT |= (BIT0 | BIT6);  
  32. }
  33.  
  34. void apagaLeds() {
  35.     P1OUT &= ~(BIT0 | BIT6);  
  36. }
  37.  
  38. unsigned char contTimer = 0;
  39. void main( void )
  40. {
  41.     WDTCTL = WDTPW + WDTHOLD;
  42.     configLeds();
  43.     configSensor();
  44.     _BIS_SR(GIE); //Habilita as interrupções
  45.    
  46.     configTimer();
  47.  
  48.     while(42) {
  49.         if((P1IN & BIT3) == 0) { //Se botão está pressionado
  50.             acendeLeds();
  51.             startTimer();
  52.         }
  53.     }
  54. }
  55.  
  56. #pragma vector = TIMER0_A0_VECTOR
  57. __interrupt void tempo0(void) {
  58.     contTimer++;
  59.     if(contTimer == 20) {
  60.         apagaLeds();
  61.         contTimer = 0;
  62.         paraTimer();
  63.     }
  64.     TA0CCTL0 &= ~CCIFG;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement