#define PORTF (*(volatile unsigned int *)0x62) //입출력설정
#define DDRF (*(volatile unsigned int *)0x61) //출력설정
#define PINF (*(volatile unsigned int *)0x20)
#define PORTC (*(volatile unsigned int *)0x35) //입출력설정
#define DDRC (*(volatile unsigned int *)0x34) //출력설정
#define PINC (*(volatile unsigned int *)0x33)
#define PORTD (*(volatile unsigned int *)0x32) //입출력설정
#define DDRD (*(volatile unsigned int *)0x31) //출력설정
#define PIND (*(volatile unsigned int *)0x30)
#define PORTE (*(volatile unsigned int *)0x23) //입출력설정
#define DDRE (*(volatile unsigned int *)0x22) //출력설정
#define PINE (*(volatile unsigned int *)0x21)
void delay_us(unsigned char time_us);
void delay_ms(unsigned int time_ms);
int main(void)
{
DDRD = 0x00; //E번째 IO 핀에 대한 설정 초기화
PORTD = 0x00; //E번째 IO 핀에 대한 출력 값 초기화
//volatile unsigned char i=0;
//volatile unsigned char a=0;
volatile unsigned char b=0;
volatile unsigned char r=0;
for(;;)
{
for(r=0 ; r < 10 ; r++)
{
for(b=0; b < 10; b++)
{
if(PINC != 0xff)
{
r=0;
b=0;
}
PORTD = (r<<4)+b;
delay_ms(10);
}
}
}
}
void delay_us(unsigned char time_us)
{
register unsigned char i;
for ( i =0 ; i< time_us ;i++)
{
asm volatile (" PUSH R0 ");
asm volatile (" POP R0 ");
asm volatile (" PUSH R0 ");
asm volatile (" POP R0 ");
asm volatile (" PUSH R0 ");
asm volatile (" POP R0 ");
asm volatile (" PUSH R0 ");
asm volatile (" POP R0 ");
}
}
void delay_ms(unsigned int time_ms)
{
register unsigned int i;
for ( i=0 ; i < time_ms ; i++)
{
delay_us(250);
delay_us(250);
delay_us(250);
delay_us(250);
}
}
1. 99~0까지 순차적으로 숫자를 1씩 감소하면서 FND에 표시 하기
2. 0~99까지 순차적으로 숫자를 1씩 증가시키다가 버튼을 누르면 현재 값에서 1씩 감소하기, 다시 누르면 1씩 증가하기
'About 프로그래밍!!! > ATmega128' 카테고리의 다른 글
[ATmega128] ATmega128의 메모리 구조. (0) | 2010.07.19 |
---|---|
[ATmega128] EEPROM 실패~몰겠당 (0) | 2010.06.18 |
[ATmega128]비교매치 카운터 (0) | 2010.06.17 |
[ATmega128]0~99까지 순차적으로 숫자를 1씩 증가하면서 FND에 표시 하기 (0) | 2010.06.15 |
세그먼트 같은 숫자 들어오게 하기. (0) | 2010.06.15 |