Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. #include <msp430.h>
  2.  
  3.  
  4. void set_pins(void){
  5.     P1DIR &= ~BIT1;
  6.     P2DIR &= ~BIT1;
  7.     P1REN |= BIT1;
  8.     P2REN |= BIT1;
  9.     P2OUT |= BIT1;
  10.     P1OUT |= BIT1;
  11.     P4DIR |=  BIT7;
  12.     P4OUT &= ~BIT7;
  13.     P5SEL |= BIT2 | BIT3 | BIT4 | BIT5;
  14.     UCSCTL4 = SELS_5;
  15.     UCSCTL5 = DIVS_2;
  16.     UCSCTL6 = 0;
  17. }
  18.  
  19. void set_timers(void){
  20.     TA0CTL = TASSEL_2 | ID_0 | MC__UP | TACLR;
  21.     TA0EX0 = TAIDEX_0;
  22.     TA0CTL &= ~TACLR;
  23.     TA0CCR0 = 20971;
  24.     TA0CCR1 = 10485;
  25. }
  26.  
  27. void delay(void){
  28.     volatile long int i;
  29.     for(i=0;i<=1000;i++){
  30.  
  31.     }
  32. }
  33.  
  34. void check_sw(void){
  35.     if((P1IN & BIT1) == 0){
  36.         delay();
  37.         TA0CCR1 = TA0CCR1 + 1048;
  38.         if(TA0CCR1 > 20971)
  39.             TA0CCR1 = 20971;
  40.     }
  41.     if((P2IN & BIT1) == 0){
  42.         delay();
  43.         TA0CCR1 = TA0CCR1 - 1048;
  44.         if(TA0CCR1 <= 0)
  45.             TA0CCR1 = 0;
  46.     }
  47. }
  48.  
  49. void set_pwm(void){
  50.     while(1){
  51.  
  52.         check_sw();
  53.         if((TA0CCTL1 & CCIFG) != 0){
  54.             TA0CCTL1 &= ~CCIFG;
  55.             P4OUT |= BIT7;
  56.         }
  57.  
  58.         if((TA0CTL & TAIFG) !=0){
  59.             TA0CTL &= ~TAIFG;
  60.             P4OUT &= ~BIT7;
  61.         }
  62.  
  63.     }
  64. }
  65.  
  66. int main(void) {
  67.     WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer
  68.     set_pins();
  69.     set_timers();
  70.     set_pwm();
  71.  
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement