AVR 따라하기 > 012 - [LED-10] 교차점등

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

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


BASIC4MCU | AVR 따라하기 | 2015년 강좌 | 012 - [LED-10] 교차점등

페이지 정보

작성자 키트 작성일2017-08-23 14:21 조회636회 댓글3건

본문

3660040649_HVbc90nI_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//--------------------------------------------------------
// CVAVR
// [LED-10] 교차점등
//--------------------------------------------------------
#include <mega128.h> 
#include <delay.h> 
//
void main(void){
    char i;
    DDRA=0xFF;
    while(1){
        for(i=0;i<4;i++){ PORTA=(0x01<<i)|(0x80>>i); delay_ms(100); }
        for(i=0;i<4;i++){ PORTA=(0x08>>i)|(0x10<<i); delay_ms(100); }
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//--------------------------------------------------------
// AVRStudio
// [LED-10] 교차점등
//--------------------------------------------------------
#define  F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//
int main(void){
    char i;
    DDRA=0xFF;
    while(1){
        for(i=0;i<4;i++){ PORTA=(0x01<<i)|(0x80>>i); _delay_ms(100); }
        for(i=0;i<4;i++){ PORTA=(0x08>>i)|(0x10<<i); _delay_ms(100); }
    }
}
cs
 
//--------------------------------------------------------------------------------------
3660040649_ePHwfmzg_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//--------------------------------------------------------
// CVAVR
// [LED-10] 교차점등
//--------------------------------------------------------
#include <mega128.h> 
#include <delay.h> 
//
void main(void){
    char i;
    DDRA=0xFF;
    while(1){
        for(i=0;i<4;i++){ PORTA=~((0x01<<i)|(0x80>>i)); delay_ms(100); }
        for(i=0;i<4;i++){ PORTA=~((0x08>>i)|(0x10<<i)); delay_ms(100); }
    }
}
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//--------------------------------------------------------
// AVRStudio
// [LED-10] 교차점등
//--------------------------------------------------------
#define  F_CPU 16000000UL // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//
int main(void){
    char i;
    DDRA=0xFF;
    while(1){
        for(i=0;i<4;i++){ PORTA=~((0x01<<i)|(0x80>>i)); _delay_ms(100); }
        for(i=0;i<4;i++){ PORTA=~((0x08>>i)|(0x10<<i)); _delay_ms(100); }
    }
}
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//설명
첫번째 문장
        for(i=0;i<4;i++){ PORTA=~((0x01<<i)|(0x80>>i)); delay_ms(100); }
for(i=0;i<4;i++){ PORTA=~((0x01<<i)
앞((0x01<<i)) 부분만 보면
00000001
00000010
00000100
00001000
 
for(i=0;i<4;i++){ PORTA=~((0x80>>i));
뒷((0x80>>i))부분만 보면
10000000
01000000
00100000
00010000
 
for(i=0;i<4;i++){ PORTA=~((0x01<<i)|(0x80>>i));
두부분을 합하면
10000001
01000010
00100100
0001
1000
 
두번째문장
        for(i=0;i<4;i++){ PORTA=~((0x08>>i)|(0x10<<i)); delay_ms(100); }
00011000
00100100
01000010
10000001
 
메인 무한루프의 두문장은
 
10000001
01000010
00100100
00011000
00011000

댓글 3

조회수 636

세계제일초보님의 댓글

세계제일초보작성일

안녕하세요 선생님!!
제가 이해를 잘못하고 있는가 해서 질문 드립니다.

~ 0이면 1로 1이면 0으로 시키는 부호인데..
 아래 프로그램에서 ~ 를 뺴고 작동을 하면 잘 됩니다..
~를 넣고 하면 제 개인적인 생각은 다 켜진 상태에서 양끝에서 하나씩 꺼지면서 쉬프트를 생각을 했습니다..
0x01<<i부분은 작동을 하는데.. 0x80>>i이부분은 잘동을 않하는 이유를 모르겠습니다.
)|~(0x80>>i)); 넣으니깐 다 켜진상태에서 아무작동이 없습니다.
-----------
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
int main ()
{
DDRA=0xff;
while (1)
{
int i;
for(i=0;i<4;i++)
{
PORTA=(~(0x01<<i)|(0x80>>i));
_delay_ms(200);
}
}
}

master님의 댓글

master댓글의 댓글작성일

불필요한 질문을 하시는 것 같습니다.
강좌글 끝까지 쭉 동작시키면서 이해를 하려고 노력해보시고
중간에 이해가 안가는 부분이 나오더라도 질문하지 마세요
//
다시 처음부터 끝까지 동작시키면서 공부를 해보세요
한번 했던 것이라서 속도가 많이 빠를겁니다.
처음에 이해가 안갔던 부분도 상당부분 이해가 갈테고요
이런 식으로 3번 정도 공부한 후에
그래도 막히는 부분을 질문 하세요
질문양이 줄어들고, 기초를 어느정도 닦은 상태라서
답변을 이해하기 수월해집니다.

세계제일초보님의 댓글

세계제일초보댓글의 댓글작성일

ㅠㅠ감사합니다.. 이부분도 고쳐 나가도록 하겠습니다..

AVR 따라하기HOME > AVR 따라하기 > 전체 목록

AVR 따라하기 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 974
공지 사이트 이용 안내댓글[10] 이미지 master 17-10-29 8925
173 2015년 강좌 106 - [타이머인터럽트-19] 누른시간 & 뗀시간 & 더블클릭 체크 키트 17-08-23 1403
172 2015년 강좌 105 - [타이머인터럽트-18] 스위치 누르는 시간 & 스위치 누르지 않는 시간 체크댓글[3] 키트 17-08-23 2098
171 2015년 강좌 WS2812B [1개]- 테스트 - AVRstudio 키트 17-08-23 1090
170 2015년 강좌 delay_us()보다 더 짧은 딜레이 함수 - 2 키트 17-08-23 1342
169 2015년 강좌 delay_us()보다 더 짧은 딜레이 함수 - 1 키트 17-08-23 1468
168 2015년 강좌 104 - [부저] 회로내장형 키트 17-08-23 1494
167 2015년 강좌 103 - [타이머인터럽트-17] 스위치 누르는 시간 체크 키트 17-08-23 1550
166 2015년 강좌 102 - [타이머인터럽트-16] 스위치 누를 때마다 1칸씩 좌우시프트 키트 17-08-23 1582
165 2015년 강좌 101 - [타이머인터럽트-15] 스위치 8개 SRAM에 읽어서 LED에 출력 키트 17-08-23 1127
164 2015년 강좌 100 - [타이머인터럽트-14] 스위치 8개 읽어서 LED에 출력 (포트 다이렉트) 키트 17-08-23 1264
163 2015년 강좌 099 - [타이머인터럽트-13] 스위치 1개 SRMA에 읽어서 LED에 출력 키트 17-08-23 767
162 2015년 강좌 098 - [타이머인터럽트-12] 스위치 1개 읽어서 LED에 출력 키트 17-08-23 1078
161 2015년 강좌 096 - [타이머 CTC 토글-3] 스위치 8개 피아노 키트 17-08-23 966
게시물 검색

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 ⓒ 2019
모바일버전으로보기