atmega128를 이용한 FND 9999 업카운터 및 uart통신모듈제어 프로그래밍
- 곰부리
- 6847
- 1
atmega128를 이용한 타이머 이용 IC2803 이용한 FND 9999 업카운터 및 uart통신모듈제어
#include<mega128.h>
#include<delay.h>
#include <stdio.h>
int i;
int sw;
int k;
int hun,hel;
unsigned char cnt=0;
unsigned char led=0;
int fnd[10]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90};
unsigned char BUFFER[4];
void serial0_init(void)
{
UCSR0A = 0x00;
UCSR0B = 0x98;
UCSR0C = 0x86;
UBRR0L = 103;
}
interrupt [TIM0_OVF] void timer0_ovf(void)
{
TCNT0=10;
if (++cnt>=10)
{ cnt=0;
if(k==1){i++;}
if(k==2){i--;}
if(k==3){i=i;}
}
}
interrupt [USART0_RXC] void rev(void)
{
BUFFER[0] = UDR0;
}
void main()
{
serial0_init();
SREG=0x80;
DDRF = 0xff;
PORTF = 0xff;
DDRA=0xff;
DDRD=0x00;
PORTA=0xff;
PORTD=0xff;
TCCR0=0x07;
TCNT0=50;
TIMSK=0x01;
SREG|=0x80;
while(1)
{
hun=(i%100)/10;
hel=(i%10);
sw=~PIND&0x0f;
if(sw==1)
{
k=1;
printf(" UP MODE ");
}
else if(sw==2)
{
k=2;
printf(" DOWN MODE ");
}
else if(sw==4)
{
k=3;
printf(" STOP MODE ");
}
else if(sw==8)
{
k=4;
printf(" STOP MODE ");
}
if(i>99)i=00;
if(i<0)i=99;
delay_ms(1);
PORTF=0xfe;
PORTA=fnd[hun];
delay_ms(1);
PORTF=0xfd;
PORTA=fnd[hel];
delay_ms(1);
}
}
곰부리
문의 공일공-육칠사사-팔이공칠
한번 적용해볼게요