본문 바로가기

카테고리 없음

마이크로프로세서_이름출력

반응형

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h> //Interrupt

unsigned char arr[10][8]={
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //blank
        {0x1c, 0x14, 0x1c, 0x20, 0x24, 0x28, 0x2e, 0x00}, //김
        {0x3e, 0x08, 0x08, 0x1e, 0x02, 0x02, 0x1e, 0x00}, //도
{0x3c, 0x04, 0x42, 0x75, 0x42, 0x77, 0x42, 0x02}, //현
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
        {0x18, 0x24, 0x24, 0x18, 0x80, 0xd1, 0x8a, 0x84}, //성
        {0x00, 0xae, 0xa2, 0xae, 0xe2, 0xa2, 0xae, 0x00}, //태
        {0x7c, 0x10, 0x18, 0x24, 0x24, 0x18, 0x3e, 0x08},  //호
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};

int t = 1;
int reverse = 1;
int i;
int j;
// Interrupt 설정을 위한 변수 reverse 추가.
int first_last;
int second_last;
int pushed;
ISR (INT4_vect) {
reverse = -reverse;
}

int main()
{
DDRB = 0xff;
DDRC = 0xff;
EICRB =   0b10;
EIMSK = 0b00010000;
sei();
//__count는 글자가 너무 빨리 넘어가는 것을 막아주는 용도

while(1)
{
if(reverse == 1){
t = 0;
}
else{
t = 8;
}
while(1){
t += reverse;
if(t == -1 || t == 9 ){
break;
}
int r = reverse;
for(j=0; j<10; j++){

for(int count = 0; count<30; count ++){
for(i=0; i<8; i++){ // 정방향 밀어내기
int first;
int second;
first = arr[t][i];
second = arr[t+reverse][i];
if(r == reverse){
first_last = first;
second_last = second;
pushed = j;
}

if(r != reverse){
first = first_last;
second = second_last;
j = pushed;
//second = arr[t+r][i];
}
else if(reverse == 1){
first = first >> j;
second = second << (8-j);
}
else{
first = first << j;
second = second >> (8-j);
}
//first = first >> j;
//second = second << (8-j);


PORTB = ~(0x01<<i);
PORTC = first|second;
_delay_ms(1);
PORTC = 0;
_delay_ms(1);
}
}
}
}

}
return 0;
}

반응형