AVR > AVR 포트 입출력 설정

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > AVR

포트 | AVR 포트 입출력 설정

페이지 정보

작성자 키트 작성일17-08-25 17:10 조회2,640회 댓글0건

본문

AVR은 비트 표현이 가능한 MPU입니다.

코드비젼은 비트 표현이 가능하지만

무료인 gcc계열의 winavr, avrstudio,

유료인 icc, iar은 원래가 AVR 전용 컴파일러가 아니라서 비트 표현이 불가능 합니다.

 

포트 입출력을 결정하는 레지스터가 있습니다.

DDRA = 0x0F; // 포트A 상위니블은 입력, 하위니블은 출력, (리셋값 0)

 

입출력을 결정 했으면 실제로 입력이나 출력 방법을 알아야겠죠

 

입력방법

char i;

i=PINA; // 포트 A를 i에 넣음

if(PINA&0x80){}; // 포트A 비트7이 1인지 체크

PINA는 핀 상태를 직접 읽습니다.

 

출력방법

char i;

PORTA=i; // 포트 A에 i를 출력

if(PORTA&0x08){}; // 포트A 비트3이 1인지 체크

PORTA 출력버퍼를 읽습니다.

 

주의 할 점은 입력으로 지정된 비트에 1을 쓰거나 0을 쓰는 부분입니다.

입력인데 출력포트처럼 사용 한다?

이 부분은 풀업 저항 지정과 관계 있습니다.

1을 출력하면 입력포트 풀업저항 사용입니다.

PORTA |= 0xF0; // 포트A 상위니블 풀업저항 사용

 

 

출력일 경우

PORTA |= 1; //포트A 비트0에 1을 출력

PORTA &= 0xFE; //포트A 비트0에 0을 출력

 

코드비전은

PORTA.0=1; //포트A 비트0에 1을 출력

PORTA.0=0; //포트A 비트0에 0을 출력

 

 

입력인 경우에는 위에서처럼

if(PINA&0x80){}; // 포트A 비트7이 1인지 체크

if((PINA&0x80)==0){}; // 포트A 비트7이 0인지 체크

if(PORTA&0x08){}; // 포트A 비트3이 1인지 체크

if((PORTA&0x08)==0){}; // 포트A 비트3이 0인지 체크

 

코드비젼에서는

if(PINA.7){}; // 포트A 비트7이 1인지 체크

if(!PINA.7){}; // 포트A 비트7이 0인지 체크

if(PORTA.3){}; // 포트A 비트3 이 1인지 체크

if(!PORTA.3){}; // 포트A 비트3 이 0인지 체크

댓글 : 0

조회수 : 2,640

등록된 댓글이 없습니다.

게시물 검색

AVR 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전