Guest User

Hüseyin

a guest
Jan 17th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1. /** \file main.c
  2. *
  3. *
  4. */
  5.  
  6. #include <avr/io.h>
  7. #include "board.h"
  8. #include <util/delay.h>
  9.  
  10. void partOne(void){
  11.     //LED 0 on and off
  12.     if (!(BUTTON_LOW_PORT.IN & BUTTON4_PIN_bm)) {
  13.         LED_PORT.OUT |= LED0_PIN_bm;
  14.     }
  15.     if (!(BUTTON_LOW_PORT.IN & BUTTON0_PIN_bm)) {
  16.         LED_PORT.OUT &= ~LED0_PIN_bm;
  17.     }
  18.  
  19.     //LED 1 on and off
  20.     if (!(BUTTON_LOW_PORT.IN & BUTTON5_PIN_bm)) {
  21.         LED_PORT.OUT |= LED1_PIN_bm;
  22.     }
  23.     if (!(BUTTON_LOW_PORT.IN & BUTTON1_PIN_bm)) {
  24.         for(int i = 0; i<1; i++){
  25.             LED_PORT.OUT &= ~LED1_PIN_bm;
  26.             _delay_ms(250);
  27.             LED_PORT.OUT |= LED1_PIN_bm;
  28.             _delay_ms(250);
  29.         }
  30.         LED_PORT.OUT &= ~LED1_PIN_bm;
  31.     }
  32.  
  33.     //LED 2 on and off
  34.     if (!(BUTTON_HIGH_PORT.IN & BUTTON6_PIN_bm)) {
  35.         LED_PORT.OUT |= LED2_PIN_bm;
  36.     }
  37.     if (!(BUTTON_LOW_PORT.IN & BUTTON2_PIN_bm)) {
  38.         for(int i = 0; i<=1; i++){
  39.             LED_PORT.OUT &= ~LED2_PIN_bm;
  40.             _delay_ms(250);
  41.             LED_PORT.OUT |= LED2_PIN_bm;
  42.             _delay_ms(250);
  43.         }
  44.         LED_PORT.OUT &= ~LED2_PIN_bm;
  45.     }
  46.  
  47.     //LED3 on and off
  48.     if (!(BUTTON_HIGH_PORT.IN & BUTTON7_PIN_bm)) {
  49.         LED_PORT.OUT |= LED3_PIN_bm;
  50.     }
  51.     if (!(BUTTON_LOW_PORT.IN & BUTTON3_PIN_bm)) {
  52.         for(int i = 0; i<=2; i++){
  53.             LED_PORT.OUT &= ~LED3_PIN_bm;
  54.             _delay_ms(250);
  55.             LED_PORT.OUT |= LED3_PIN_bm;
  56.             _delay_ms(250);
  57.         }
  58.         LED_PORT.OUT &= ~LED3_PIN_bm;
  59.     }
  60. }
  61.  
  62. int main(void)
  63. {
  64.     // Initialize LED
  65.     LED_PORT.DIR = (LED0_PIN_bm|LED1_PIN_bm|LED2_PIN_bm|LED3_PIN_bm|LED4_PIN_bm);
  66.  
  67.     LED_PORT.OUT = LED4_PIN_bm;
  68.     // Initialize push-buttons
  69.     BUTTON0_PINCTRL = PORT_OPC_PULLUP_gc;
  70.     BUTTON1_PINCTRL = PORT_OPC_PULLUP_gc;
  71.     BUTTON2_PINCTRL = PORT_OPC_PULLUP_gc;
  72.     BUTTON3_PINCTRL = PORT_OPC_PULLUP_gc;
  73.     BUTTON4_PINCTRL = PORT_OPC_PULLUP_gc;
  74.     BUTTON5_PINCTRL = PORT_OPC_PULLUP_gc;
  75.     BUTTON6_PINCTRL = PORT_OPC_PULLUP_gc;
  76.     BUTTON7_PINCTRL = PORT_OPC_PULLUP_gc;
  77.     uint8_t data;
  78.  
  79.     USB_USART_PORT.DIRSET = USB_USART_TX_PIN_bm;
  80.     USB_USART_PORT.DIRCLR = USB_USART_RX_PIN_bm;
  81.  
  82.     USB_USART_MODULE.CTRLC=(USART_CMODE_ASYNCHRONOUS_gc|USART_CHSIZE_8BIT_gc|USART_PMODE_DISABLED_gc);
  83.  
  84.     USB_USART_MODULE.BAUDCTRLA = 11;
  85.     USB_USART_MODULE.BAUDCTRLB = (-7<<USART_BSCALE_gp);
  86.  
  87.     USB_USART_MODULE.CTRLB=(USART_RXEN_bm|USART_TXEN_bm);
  88.  
  89.     while(1)
  90.     {
  91.         partOne();
  92.         if (USB_USART_MODULE.STATUS & USART_RXCIF_bm) {          // Receive complete?
  93.             data = USB_USART_MODULE.DATA;                    // Read data
  94.             while(!(USB_USART_MODULE.STATUS & USART_DREIF_bm));  // Wait until data register empty
  95.             USB_USART_MODULE.DATA = data;               // send data
  96.             LED_PORT.OUT &= ~LED4_PIN_bm;
  97.             _delay_ms(250);
  98.             LED_PORT.OUT |= LED4_PIN_bm;
  99.             _delay_ms(250);
  100.            
  101.         }
  102.  
  103.     }
  104. }
Add Comment
Please, Sign In to add comment