atmeg128-16AU/codevision 1.25.9 을 사용중입니다.
컴파일 에러 때문에 문의를 드릴려구요.
128에서 보통,
출력일경우, PORTA.3=0; (A포트에 3번 비트를 0으로 출력해라)
입력일경우, temp=PINA.3;(A포트에 3번 비트값을 읽어서 temp라는 변수에 저장해라 )라는 의미로
사용하잖아요? 물론그전에 (A포트의 경우 DDRA에서 입출력 정의 했다고 하고요...)
헌데, 제가 F포트를 가지고 위와 같은 방법으로 했떠니 에러가 발생하다군요.
온라인으로 자료도 찾아보고, 데이터 시트도 읽어보고, 헤더파일도 리뷰해보았씁니다.
자체적으로 내린결론은,
일단 F,G포트는 헤더파일에서 정의 한 방법이 다르더라구요.
즉, F,G는 번지수는 정의 되어있지만, 그번지수는 비트 연산이 되는 번지수가 아니더란 말이죠...
(단, PINF는 예외입니다. 유일하게(?)... 턱걸이로(?) 비트영역에 정의 되어있었씁니다.)
때문에 오늘제가 문의를 드리고자 하는것은,
어떻게하면, F,G포트도 개별로 비트제어를 할수있느냐 하는것입니다.
즉, 똑같이는 아니지만(의미상으로...),
포트F의 3번 비트를 0으로 출력하고싶으면......PORTF.3=0;
포트F의 3번 비트를 temp하고싶으면......PORTF.3=0;
어떻게 하면 될까요?
자료를 찾다보니깐...
#define..., 구조체....등으로 먼저 정의 하고 사용하는것 같은데....잘 이해가 되질않아서요....
부탁드리겠습니다.
끝까지 읽어 주셔서 감사합니다.
PORTF&=0xF7; 이렇게 하면 지정은 되요O_O (&=가 and니까 11110111이랑 and 하면 나머지 비트는 바뀌지 않고 3번만 0으로 할 수 있어요~) 그 뒤에 emp=PINF.3;을 써서 돌려 봤는데 일단 프로그램상 에러는 안뜨는데 한번 해보시와요.