정보보안공부
마이크로프로세서_day03 본문
***LED를 순차적으로 불빛이동 (shift연산자 이용) - 캐소드형
-> 캐소드형으로 브레드보드 설계, 출력핀을 설정했을때 PORT가 1일때 반응한다.
-> char형을 사용해 1byte( 8bit )를 만들고 data = 0x01;로 설정(오른쪽 불빛 한칸)
-> DDRC = 0xff;로 출력 핀으로 설정
-> PORTC = data;로 선언하고 비트연산자 shift를 이용해 왼쪽으로 한비트씩 이동하
도록 설정한다. data <<= 1; 선언
-> _delay_ms(200) 은 불빛이 이동하기전까지 걸리는 시간을 설정하는 코드
-> if(data == 0x00) data = 0x01; 한비트씩 쭉이동해서 불빛이꺼지면
data를 다시 0x01로 만들어 while(1)반복문에의해 계속 실행된다.
-> 불빛이 왼쪽으로 한칸씩 계속 이동한다.
***LED를 순차적으로 하나씩 불빛이동 (shift연산자 이용) - 캐소드형
-> 위와 마찬가지 형태이지만 아까는 오른쪽에서 왼쪽으로 불빛이 켜졌다면
이번코드는 왼쪽에서 오른쪽으로 불빛이 켜지도록 코드를 작성하였다.
-> data = 0x80;으로 설정 (왼쪽 불빛 한칸)
-> DDRC = 0xff;로 출력핀 설정
-> PORTC = data;로 선언하고 비트연산자 shift를 이용해 오른쪽으로 한비트씩 이동
하도록 설정한다. data >>= 1; 선언
-> if(data == 0x00) data = 0x80; 한비트씩 쭉이동해서 불빛이꺼지면
data를 다시 0x80로 만들어 while(1)반복문에의해 계속 실행된다.
-> 불빛이 오른쪽으로 한칸씩 계속 이동한다.
*** 참고자료
***참고자료
***LED를 순차적으로 한칸씩 불빛확장 (배열이용) - 캐소드형
-> char형(1byte = 8bit)를 이용해 arr배열생성
arr[] = { 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff };
arr배열은 0x01 은 오른쪽 한칸불빛 0x03은 두칸불빛 --- 8칸까지 총8개로된 배열
int i ; for문을 사용하기위해 i도 선언
-> DDRC = 0xff;로 출력핀으로 설정
-> while(1) { for(i=0;i<8;i++) { PORTC = arr[i]; _delay_ms(200); } }
PORTC 값을 for문을 이용해서 작성한다.
-> 불빛이 오른쪽 끝부터 계단식으로 증가해서 확장한다.
***LED를 순차적으로 한칸씩 불빛확장 (배열이용) - 애노드형
-> 캐소드형 배열과 다른점은 애노드형은 0일때 불이 들어오기 때문에
arr[] = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f }; 로 배열선언
0xfe가 맨오른쪽 불빛 0xfd는 오른쪽에서 두칸불빛 --- 8칸까지 총8개로된 배열
위에 애노드 참고자료 참고
-> 불빛이 오른쪽 끝부터 계단식으로 증가해서 확장된다.
'ATMega128' 카테고리의 다른 글
마이크로프로세서_day06 (0) | 2017.04.06 |
---|---|
마이크로프로세서_day05 (0) | 2017.03.31 |
마이크로프로세서_day04 (0) | 2017.03.31 |
마이크로프로세서_day02 (0) | 2017.03.24 |
마이크로프로세서_day01 (0) | 2017.03.24 |