BASIC4MCU | 질문게시판 | Atmega FND 왼쪽 2칸엔 고정 오른쪽 2칸엔 1씩증가
페이지 정보
작성자 초피 작성일2023-05-20 01:22 조회47회 댓글1건본문
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
unsigned char fnd[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};
unsigned char fnd_position[4]={0x01,0x02,0x04,0x08};
volatile int count=0;
ISR(INT4_vect){ count++; _delay_ms(1);}
ISR(INT5_vect){ count=0; _delay_ms(1);}
unsigned char digit[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67};
unsigned char fnd_sel[4] = {0x08, 0x04, 0x02, 0x01};
int main( )
{
DDRG=0x0F; //FND sel
DDRC=0xFF; //FND digit
EIMSK=0x30; //interrupt4,5 set
EICRB = 0x0A;
sei(); //interrupt enable
int i=0;
while (1)
{
for (i=0; i<2; i++)
{
PORTC = digit[i+1];
PORTG = fnd_sel[i];
_delay_ms(5);
}
}
while(1)
{
int i=0;
for(i=0;i<4;i++){
PORTG=fnd_position[i];
switch(i){
case 0 : PORTC=fnd[count%10]; break;
case 1 : PORTC=fnd[(count/10)%10]; break;
case 2 : PORTC=fnd[(count/100)%10]; break;
case 3 : PORTC=fnd[(count/1000)%10]; break;
}
_delay_ms(2.5);
}
}
return 0;
}
왼쪽 2칸엔 숫자 '12' 고정이 되는데,, 오른쪽엔 불이 들어오지않네요 어떤게 문제일까요?
댓글 1
조회수 47master님의 댓글
master 작성일
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
//
unsigned char fnd[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F};
volatile int count=0;
//
ISR(INT4_vect){ if(count<99)count++; _delay_ms(1);}
ISR(INT5_vect){ count=0; _delay_ms(1);}
//
int main( ){
int i=0;
DDRG=0x0F; //FND sel
DDRC=0xFF; //FND digit
EIMSK=0x30; EICRB=0x0A;
sei();
while(1){
PORTG=1; PORTC=fnd[count%10]; _delay_us(2500);
PORTG=2; PORTC=fnd[count/10]; _delay_us(2500);
PORTG=4; PORTC=fnd[2]; _delay_us(2500);
PORTG=8; PORTC=fnd[1]; _delay_us(2500);
}
return 0;
}