정보보안공부

마이크로프로세서_day03 본문

ATMega128

마이크로프로세서_day03

Steady_sp 2017. 3. 25. 01:08

***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
Comments