BASIC4MCU | AVR 따라하기 | 2015년 강좌 | 024 - [LED-22] 누적 점등
페이지 정보
작성자 키트 작성일2017-08-23 14:40 조회3,215회 댓글2건본문
1234567891011121314 //--------------------------------------------------------// CVAVR// [LED-22] 누적 점등//--------------------------------------------------------#include <mega128.h>#include <delay.h>//void main(void){int i;DDRA=0xff;while(1){for(i=0;i<9;i++){ PORTA=(1<<i)-1; delay_ms(300); }}}cs
123456789101112131415 //--------------------------------------------------------// AVRStudio// [LED-22] 누적 점등//--------------------------------------------------------#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <util/delay.h>//int main(void){int i;DDRA=0xff;while(1){for(i=0;i<9;i++){ PORTA=(1<<i)-1; _delay_ms(300); }}}cs //--------------------------------------------------------------------------------------
123456789101112131415 //--------------------------------------------------------// CVAVR// [LED-22] 누적 점등//--------------------------------------------------------#include <mega128.h>#include <delay.h>//void main(void){int i;DDRA=0xff;while(1){for(i=0;i<9;i++){ PORTA=~((1<<i)-1); delay_ms(300); }}return 0;}cs
12345678910111213141516 //--------------------------------------------------------// AVRStudio// [LED-22] 누적 점등//--------------------------------------------------------#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <util/delay.h>//int main(void){int i;DDRA=0xff;while(1){for(i=0;i<9;i++){ PORTA=~((1<<i)-1); _delay_ms(300); }}return 0;}cs
댓글 2
조회수 3,215세계제일초보님의 댓글
세계제일초보작성일
질문이 있습니다..
위에 내용 중에 PORTA=(1<<i)-1 의미를 잘모르겠습니다.. 0000 0001 , 0000 0011 ...알겠는데 -1이 어떤 동작에 영향을 주는지를 모르겠습니다 ㅠㅠ
master님의 댓글
master작성일
PORTA=(1<<i)-1
여기서 제일 끝에있는 -1을 제거하면 이미 알고 있는 내용일겁니다.
PORTA=1<<i
0000 0001
0000 0010
0000 0100
..
0100 0000
1000 0000
중간을 생략하고 썼습니다.
이값에 -1을 빼면
0000 0001 -1 = 0000 0000
0000 0010 -1 = 0000 0001
0000 0100 -1 = 0000 0011
..
0100 0000 -1 = 0011 1111
1000 0000 -1 = 0111 1111
차례대로 전체가 채워지는 모양으로 켜집니다.
이 연산을 사용해서 구동하는 것은 제가 처음인 듯 (동일한 방법을 본 적이 없습니다.)