*키트는 Atmega128A를 사용하였습니다*
왼쪽서부터 0~9까지 나타낸 후 한칸씩 옮겨가는 코드입니다.
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
int main(void)
{
/* Replace with your application code */
DDRC = 0xff; //fnd의 포트는 portc. PORT C를 입/출력으로 설정
DDRG = 0x0f; //fnd의 자리를 결정하는 포트. 4개의 자리만 있기 때문에 0x0f
unsigned char fnd[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f}; //0~9를 나타내는 HEX값
unsigned char fnd_pos[4] = {0x01, 0x02, 0x04, 0x08} ; //fnd의 자리를 결정하는 값.
while (1)
{
for(int j = 0; j < 4 ; j++){ //fnd의 자리를 결정하는 반복문. j=0부터 3까지 4번
PORTG = fnd_pos[j]; //PORTG에 fnd_pos의 값을 저장
for ( int i = 0; i < 10 ; i++) //배열 fnd는 총 10개. i=0부터 9까지 10번 반복 >> 배열 fnd[0] ~ fnd[9]
{
PORTC = fnd[i]; //PORTC에 fnd[i]의 값 저장
_delay_ms(1000); //딜레이 1초
}
}
}
}
/* a
* ******
* * * b
* f * g *
* ******
* * * c LED와 비슷하게..
* e * *
* ******
* d
*/
'AVR 기초 > FND 제어하기' 카테고리의 다른 글
[AVR 기초] FND 4자리를 한번에 나타내기 (0) | 2020.07.12 |
---|---|
[AVR 기초] FND 1씩 옮기기 (0) | 2020.07.12 |