Page 41 - 2020학년도 MDP과제발표회 자료집 (통신과) (3)
P. 41
(MODE7)
case 0x7f: mode = 8; timer = 65535; break; // SW8 ON
(MODE8)
}
(2) 설명
switch case 문은 문과는 다른 선택문입니다if . if 문과는 다르게 조건식을 일일이 검사하지 않고
정수값을 비교하여 일치하는 문장만 실행하게 됩니다. switch case 문의 특징으로는
-case 에 구분 가능한 값이 들어가 있어야한다
-break 가 없다면 다음 선언된 case 문도 실행된다.
- if else 문법에서 의 조건이 거짓일 경우 바로 if else 로 이동되듯이 switch case 에서도
switch() 안에 내용이 어떠한 case 에도 속하지 않을 경우엔 default 로 이동을 한다.
따라서 스위치를 개를 사용하는 저희 조에서는 일일이 문을 사용하기 보다는 8 if switch case
문을 이용해서 한번에 프로그램을 실행할 수 있도록 했습니다.
나) for 문
(1) 예제
for (z=0;z<8;z++)
for (y=0;y<8;y++)
cube[z][y] = pattern;
(2) 설명
반복문은 의미 그대로 어떠한 동작을 반복수행할 때 사용하는 문법입니다 반복문의 종류에는 .
for 문 / while 문 / do while 문 세 가지 종류가 있으며 저희 조에서는 for 문을 사용해서 cube
라는 배열 안에 패턴을 집어넣을 때나 74HC595 의 데이터 입력 핀에 데이터를 입력할 때 for 문
을 사용했습니다.
4) 포트의 사용
가)PORTB
PORTB 는 74hc595 의 11 번,12 번,13 번,14 번 핀과 연결되어있습니다.PB0 에는 데이터 입력핀
PB1 에는 레치클록 PB2 에는 데이터클록 PB3 에는 Output enable 이 연결되어 있습니다 포트. b
에서는 를 제어하여 ic led 를 켜주는 역할을 하고 있습니다.
나)PORTC
PORTC 는 led 의 층부터 층까지의 공통단자를 제어하는 트렌지스터와 연결되어있습니다 트1 8 .
렌지스터는 active high 로 동작하며 PC0 은 층 1 PC7 은 층을 제어합니다8 .
다)PORTD
PORTD 는 스위치와 연결되어있습니다.
#define SW PIND // 스위치 모드 변환( )
switch case 문을 통해서 각각의 스위치를 누를때마다 다른 애니메이션이 펼쳐질 수 있도록 했
습니다.
5) 오류 및 오류 수정 방법
가) led 의 점멸속도가 느려 애니매이션과 그림이 제대로 보이지 않는 오류
타이머 카운터의 분주와 TCNT1 의 값의 설정이 잘못되어 있어 타이머 카운터의 인터럽트 호
출주기를 더 빨리 설정할수 있도록TCNT1 의 값을 조정하여 오류를 해결할 수 있었습니다.
- 40 -