BASIC4MCU | AVR | 포트 | AVR 포트 입출력 설정
페이지 정보
작성자 키트 작성일2017-08-25 17:10 조회2,583회 댓글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,583등록된 댓글이 없습니다.