AVR2560

2013.06.10_USART로 모든 기능 활용_

성엽이 2013. 6. 11. 17:56

▶ main.c


 #include "Lcd.h"

#include "Ultra.h"
#include "USART.h"
#include "Timer.h"
#include "EEPROM.h"
#include "ADC.h"

void __vector_25(void)
{
  static unsigned char ucData;

  ucData = UDR0;

  while((0 == (UCSR0A)) & (RXC0));
  
  USART_String("1. Ultra Sonic\r\n");
  USART_String("2. Write the Data to EEPROM\n\r");
  USART_String("3. Read the Data from EEPROM\n\r");
  USART_String("4. Sensor_Light_Temp\n\r");
  USART_String("5. initialize\n\r");  

  switch(ucData)
  {
    case '1' : 
      LCD_cmd_write(LCD_CLEAR);  // 화면지우기
      USART_String(ULTRA_RUN());
      LCD_cmd_write(0x80);
      LCD_string(ULTRA_RUN());
      break;
    case '2' :
      EEPROM_write(0xFFF, Recv_char());
      break;
    case '3' :
      USART_String("\r\n");
      Send_char(EEPROM_read(0xFFF));  
      USART_String("\r\n");
      break;
    case '4' :
      LCD_cmd_write(LCD_CLEAR);  // 화면지우기      
      LCD_number(1, Sensor_Light());
      LCD_number(2, Sensor_Temp());  
      break;
    case '5' :
      LCD_cmd_write(LCD_CLEAR);  // 화면지우기      
      SettingFont();
  
      LCD_cmd_write(0x80);    // DD RAM Address (첫라인 첫위치)
      LCD_data_write(0x00);    // '성'

      LCD_cmd_write(0x81);    //
      LCD_data_write(0x01);    // '엽'

      LCD_cmd_write(0x82);  
      LCD_data_write(0x02);    // '이' 
  
      LCD_cmd_write(0x83);  
      LCD_data_write(0x03);    // '하트'

      LCD_cmd_write(0x84);
      LCD_data_write(0x04);    // '하트' 
    default :
      USART_String("Error");
      break;
  }
}

int main(void)
{
  LCD_Init();
  Timer0_Init();
  ULTRA_INIT();
  
  USART_Init_INT(__vector_25);

  volatile unsigned int iCnt;  // 2byte int  
  volatile unsigned int iCnt1;
  volatile unsigned int i;
  volatile unsigned int j;

  DDRA = 0xFF;
  
  SettingFont();

  LCD_cmd_write(0x80);    // DD RAM Address (첫라인 첫위치)
  LCD_data_write(0x00);    // '성'

  LCD_cmd_write(0x81);    //
  LCD_data_write(0x01);    // '엽'

  LCD_cmd_write(0x82);  
  LCD_data_write(0x02);    // '이' 
  
  LCD_cmd_write(0x83);  
  LCD_data_write(0x03);    // '하트'

  LCD_cmd_write(0x84);
  LCD_data_write(0x04);    // '하트' 

  while(1)
  {  
    LCD_cmd_write(0x08);
    MS_DELAY(500);
    LCD_cmd_write(0x0C);
    //LEC 토글.
    MS_DELAY(1000);
    PORTA = 0x00;
    MS_DELAY(1000);
    PORTA = 0xFF;


  }

  while(1);
  return 0;
}


---AVR 파일----

 AVR2560_.zip

----------------
TC 를 벡터 15사용해야함.