본문 바로가기
임베디드/Atmega128

atmega128- 03_external_pullup.c , internal_pullup 내부풀업 외부풀업

by sj0020 2020. 12. 22.

외부풀업

/*
 * 03_external_pullup.c
 *
 * Created: 2020-12-21 오후 6:55:00
 * Author : User
 */ 
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

#define BUTTON1 PORTE0
#define BUTTON2 PORTE3
#define LED      PORTB0


int main(void)
{
    DDRE = 0x00;
	DDRB = 0xff;
   //DDRB = 1<<LED;
   //DDRE = 1<<BUTTON1 | 1<<BUTTON2;
   
    while (1) 
    {
      if ( (!(PINE & (1<<BUTTON1))) | ( !(PINE & (1<<BUTTON2)) ) )
         PORTB = 1<<LED;
      else
         PORTB &= ~(1<<LED);
      
      /*if ( !(PINB & (1<<BUTTON2)) )
         PORTB = 1<<LED;
      else
         PORTB &= ~(1<<LED);   */
    }
   return 0;
}

 


내부풀업

 

atmega 128 내부 풀업 사용 방법 --------------------------------

  DDRE = 0x00;  // 입출력설정을 하고
  PORTE = 0xFF; // FF로 설정을 해준다 - 풀업저항을 사용하겠다는 의미

 

코드는 위의 외부풀업 사용 코드와 같다 . 위의 두줄만 DDRE 선언 하는 main 내부 부분에 추가 해주면 됨.

/*
 * 03_internal_pullup.c
 *
 * Created: 2020-12-22 오후 2:33:00
 * Author : User
 */ 
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

#define BUTTON1 PORTE0
#define BUTTON2 PORTE3
#define LED      PORTB0


int main(void)
{
    DDRE = 0x00; // 입출력설정을 하고
	PORTE = 0xFF; // FF로 설정을 해준다 - 풀업저항을 사용하겠다는 의미
	DDRB = 0xFF;
  
    while (1) 
    {
      if ( (!(PINE & (1<<BUTTON1))) | ( !(PINE & (1<<BUTTON2)) ) )
         PORTB = 1<<LED;
      else
         PORTB &= ~(1<<LED);
    }
   return 0;
}

'임베디드 > Atmega128' 카테고리의 다른 글

ATmega128 timer / counter  (0) 2020.12.27
모터 L 298  (0) 2020.12.23
atmega128- 03_external_pulldown 외부 풀다운  (0) 2020.12.17
가져온 코드  (0) 2020.12.15
도트매트릭스 8x8 숫자 0~9 띄우기 / 흐르게 하기  (0) 2020.12.14