Thứ Năm, 28 tháng 2, 2013

Tự học AVR ATmega8 - 01 Leds

Trước khi sử dụng các IO của ATmega8, chúng ta phải config IO là Input hoặc Output:
  • Ví dụ config PD7 là Output:
    •  DDRD |= (1 << PD7);
  •  Ví dụ config PD7 là Input:
    •  DDRD &= ~ (1 << PD7);
--------------------------------------------------------------------
Source code 1: Nhấp nháy led 500ms
#include <avr/io.h>           /* khai báo IO cho Mega8 */
#include <util/delay.h>      /* khai báo cho hàm  _delay_ms */
/* main function */
int main(void)
{
  DDRD |= (1 << PD7); //PD7 is Output:
  while(1)
  {
     //turn on/turn off LED after 500ms
     PORTD |= (1 << PD7);
      _delay_ms(500);
      PORTD &= ~(1 << PD7);
      _delay_ms(500);
  }
}

------------------------------------------------------------------------
Để souce code dễ đọc hơn, ta dùng macro:

#include <avr/io.h>           /* khai báo IO cho Mega8 */
#include <util/delay.h>      /* khai báo cho hàm  _delay_ms */

#define LED_PIN          PD7
#define LED_PORT       PORTD
#define LED_DDR         DDRD

#define LED_ON         LED_PORT |= 1 << LED_PIN
#define LED_OFF       LED_PORT &= ~(1 << LED_PIN)

/* main function */
int main(void)
{
  LED_DDR |= (1 << LED_PIN); //PD7 is Output:
  while(1)
  {
     //turn on/turn off LED after 500ms
     LED_ON;
      _delay_ms(500);
      LED_OFF;
      _delay_ms(500);
  }
}

Không có nhận xét nào:

Đăng nhận xét