ATmega128을 이용하여 숫자를 옮기면서 전화번호를 표시하는 소스.


#include "avr/io.h"
#include "util/delay.h"



int main(void){
  
  //C 포트는 fnd의 숫자 결정(어떤 숫자를 띄울지)
  //G 포트는 fnd의 위치를 결정(어디에 띄울지)

  DDRC = 0xff; //0x1111 1111 모두 출력상태
  DDRG = 0x0f; //0x0000 1111 4개만 출력상태

  //FND 숫자 원리만 알면 되니까 미리 써놓는다

 int count =0;

 unsigned char empty = 0x00;

 unsigned char digit[11] = 
 {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x40};

 unsigned char fnd_sel[4] = {0x01, 0x02, 0x04, 0x08};

 unsigned char fnd[4] = {0x00,0x00,0x00,0x00};

 unsigned char phone[14] = {0,1,0,10,6,7,3,0,10,4,9,3,8};
 

  while(1){

    if(count>13) {
	 reset(fnd,&count);
	}    
     
    for(int j=0; j<400; j++){
		print(fnd_sel[3],fnd[3]);
		print(fnd_sel[2],fnd[2]);
		print(fnd_sel[1],fnd[1]);
		print(fnd_sel[0],fnd[0]);
    }
   
    move(&count,fnd,digit,phone);
  }

  return 0;
}


void print(char which,char what){
		PORTG = which;
	    PORTC = what;
		_delay_ms(10);
}

void reset(unsigned char* fnd,int* count){
   
   *count=0;
   for(int p;p<4;p++)
     fnd[p]=0x00;

}

void move(int* count,unsigned char* fnd,unsigned char* digit,unsigned char* phone){
	
	for(int q=3;q>0;q--)
      fnd[q]=fnd[q-1];
	
	fnd[0] = digit[phone[(*count)++]];
}



'프로그램 > 마이크로프로세서 설계(Atmega128)' 카테고리의 다른 글

전화번호 표시하기  (0) 2015.10.30
Port의 이해  (0) 2015.10.30
크로스 컴파일 개발환경 구축  (0) 2015.10.30
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요