BASIC4MCU | 질문게시판 | 답변 : AVR에서 이렇게 코딩하면....
페이지 정보
작성자 master 작성일2018-06-05 03:37 조회7,578회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1416
본문
#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>//unsigned char index=0;unsigned char dir=0;unsigned char led=0;//int main(void){DDRA=0xFF;while(1){if(dir==0)PORTA=0x01<<index;else PORTA=0x20>>index;PORTA=PORTA | (led<<7); // 이부분에서 l(?맞나요)이 의미하는게 뭔지 궁금합니다_delay_ms(100);index++;index=index%6;if(index==0)dir=dir^0x01;led=led^0x01; // 이부분도 뭔지도 궁금합니다.}}
PORTA=PORTA l(led<<7); // 이부분에서 l(?맞나요)이 의미하는게 뭔지 궁금합니다
l 또는 1은 아닙니다.
| 연산자입니다.
비트7을 무조건 1로 만들기 위한 연산이죠
led7=led7^0x01; // 이부분도 뭔지도 궁금합니다.
led 변수의 비트0을 토글 시키기 위한 연산입니다.
^는 xor 연산자이며
위 연산의 결과는 0 또는 1로서, 비트0만 반전됩니다.
if(dir==0)PORTA=0x01<<index;else PORTA=0x20>>index;위 연산 결과에서 비트7은 항상 0 입니다.
PORTA=PORTA | (led<<7);바로 아래에서 비트7을 출력해주는 것인데
led 변수의 비트0 을 포트A의 비트7에 출력해주는 것이죠
led^=0x80;PORTA|=led;코드를 좀 더 간단히 하려면 이렇게하면 되겠죠
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-05 오전 3:40:10// by Ok-Hyun Park//#define F_CPU 16000000UL#include <avr/io.h>#include <util/delay.h>//char index=0,dir=0,led=0;//int main(void){DDRA=0xFF;while(1){if(dir)PORTA=0x20>>index;else PORTA=0x01<<index;led^=0x80;PORTA|=led;if(++index>5){ index=0; dir^=1; }_delay_ms(100);}}
댓글 0
조회수 7,578등록된 댓글이 없습니다.