AVR 따라하기 > 024 - [LED-22] 누적 점등

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

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


BASIC4MCU | AVR 따라하기 | 2015년 강좌 | 024 - [LED-22] 누적 점등

페이지 정보

작성자 키트 작성일2017-08-23 14:40 조회3,215회 댓글2건

본문

3660040649_h94iewnv_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740


1
2
3
4
5
6
7
8
9
10
11
12
13
14
//--------------------------------------------------------
// 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//--------------------------------------------------------
// 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


 
//--------------------------------------------------------------------------------------
3660040649_XmpCQIzh_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//--------------------------------------------------------
// 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//--------------------------------------------------------
// 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
차례대로 전체가 채워지는 모양으로 켜집니다.
이 연산을 사용해서 구동하는 것은 제가 처음인 듯 (동일한 방법을 본 적이 없습니다.)

AVR 따라하기HOME > 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
모바일버전으로보기