Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <msp430.h>
- #include <stdio.h>
- #include <stdint.h>
- #include "EEL4746.h"
- #define LOADVALUE 104500
- /**
- * main.c
- */
- void myLED(uint8_t Color);
- void myDelay(uint32_t LOAD);
- void BlinkLED(uint8_t Color);
- void Display(uint8_t count);
- const uint8_t RED_ON = 0;
- const uint8_t GREEN_ON = 2;
- const uint8_t OFF = 4;
- const uint8_t MAXCOUNT = 3;
- uint8_t count = 0;
- uint8_t vOn = ~0;
- uint8_t vUp = 0;
- void main(void)
- {
- WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
- P1DIR |= BIT0;
- P4DIR |= BIT7;
- P1DIR &= ~BIT1;
- P2DIR &= ~BIT1;
- P1REN |= BIT1; // Sets BIT1 of P1REN.
- P1OUT |= BIT1; // Sets BIT 1 of P1OUT;
- P2REN |= BIT1; // Sets BIT1 of P1REN.
- P2OUT |= BIT1;
- P1OUT &= ~BIT0;
- P4OUT &= ~BIT7;
- P2IES |= BIT1;
- P1IES |= BIT1;
- P2IE |= BIT1;
- P1IE |= BIT1;
- P1IFG &= ~BIT1;
- P2IFG &= ~BIT1;
- BlinkLED(RED_ON);
- // EnableInterrupts4746(LOADVALUE,0);
- EnableInterrupts4746(LOADVALUE,1);
- }
- void myLED(uint8_t Color){
- switch(Color){
- case RED_ON:
- P1OUT |= BIT0;
- break;
- case RED_ON+1:
- P1OUT &= ~BIT0;
- break;
- case GREEN_ON:
- P4OUT |= BIT7;
- break;
- case GREEN_ON+1:
- P4OUT &= ~BIT7;
- break;
- default:
- P1OUT &= ~BIT0;
- P4OUT &= ~BIT7;
- break;
- }
- }
- void myDelay(uint32_t LOAD){
- EnableTimer4746(LOAD); // enable timer
- while((TA0CTL & BIT0) == 0 ); //Wait until TAIFG == 1
- DisableTimer4746(); // Resets timer flag and turns off the timer
- return;
- }
- void BlinkLED(uint8_t Color){
- myLED(Color);
- myDelay(104500);
- myLED(Color+1);
- myDelay(104500);
- }
- void Display(uint8_t count){
- uint8_t vTwos;
- uint8_t vOnes;
- switch(count)
- {
- case 0:
- vTwos = 0;
- vOnes = 0;
- break;
- case 1:
- vTwos = 0;
- vOnes = 1;
- break;
- case 2:
- vTwos = 1;
- vOnes = 1;
- break;
- case 3:
- vTwos = 1;
- vOnes = 0;
- break;
- default:
- vTwos = 0;
- vOnes = 0;
- break;
- }
- switch (vTwos)
- {
- case 1:
- myLED(RED_ON); // Turns RED ON
- break;
- default:
- myLED(RED_ON + 1); // Turns RED OFF
- break;
- }
- switch (vOnes)
- {
- case 1:
- myLED(GREEN_ON);
- break;
- default:
- myLED(GREEN_ON+1);
- break;
- }
- }
- #pragma vector=TIMER0_A0_VECTOR
- __interrupt void TIMER0_A0(void)
- {
- Display(count);
- if(vOn != 0){
- if(vUp == 0){
- if(count == MAXCOUNT) count = 0;
- else count++;
- }
- else {
- if(count == 0) count = MAXCOUNT;
- else count--;
- }
- }
- }
- #pragma vector=PORT2_VECTOR
- __interrupt void PORT2(void){
- switch(P2IV){
- case 4:
- vOn = ~vOn;
- P2IFG &= ~BIT1;
- break;
- default:
- break;
- }
- }
- #pragma vector=PORT1_VECTOR
- __interrupt void PORT1(void){
- switch(P1IV){
- case 4:
- vUp = ~vUp;
- P1IFG &= ~BIT1;
- break;
- default:
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement