AVR > AVR 포트 입출력 설정

TODAY1,049 TOTAL2,271,453
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | AVR | 포트 | AVR 포트 입출력 설정

페이지 정보

작성자 키트 작성일2017-08-25 17:10 조회2,635회 댓글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,635

등록된 댓글이 없습니다.

AVRHOME > AVR > 전체 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기