BASIC4MCU | 질문게시판 | AVR 아트메가 128 @내부시간?@ @스톱워치@
페이지 정보
작성자 초보메가아트 작성일2018-10-13 02:50 조회11,225회 댓글0건첨부파일
본문
안녕하세요! 아트메가 128을 배우고있는 공돌이입니다.!! (00) ( __)
다름이 아니라 시계를 만들고 있는데 어떤 난관에 봉착해 구렁에 빠졋습니다 ㅠㅠ
문제는 이렇습니다. 시계를 만드는데 까지는 문제없는데 조건이 내부시간? 내용을 잘 모르겠습니다. 전체 if 문을 해서 else 를 해보자 이렇게도 해보고 했는데 결국 막혔습니다.
제가 원하는 상태는 시계가 멈춰 있으면 내부적으로 안에는 시간이 가고있고 다시 시작했을
경우에 그 내부시간으로 바껴서 가는걸로 만들고 싶은데( ex 2초에 스톱누르고 (5초뒤 다시 sw1 s누르면 7초부터 시작) 이런식으로 할려하는데 너무 어렵네요
그리고 2.) 세븐세그 먼트로 Eror을 쓰긴썻는데 조건이 sw1,2 같이 눌렀을 경우입니다. 근데
밑의 파일에 보면 같이 누르면 eror가 하나씩 뜨고 E 만 떠잇고 다시 sw1을 누르면 시계가 가지를 않습니다. 이것도 어떤식으로 해야할지 잘 모르겠습니다!
#include <io.h>
#include <delay.h>
const unsigned char FND_DATA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f};
void main()
{
int i, count,j,count_min,start,reset,sw1=0;
DDRC=0xff;
DDRG=0x0f;
DDRE.4=0x00;
DDRE.5=0x00;
i=4;
count=0;
count_min=0;
start=0;
reset=0;
sw1=0;
while(1){
for(j=0; j<5 ; j++)
{
PORTC = FND_DATA[count_min];
PORTG=0x08;
delay_ms(i);
delay_us(996);
PORTC = FND_DATA[count/100];
PORTG=0x04;
delay_ms(i);
delay_us(996);
PORTC = FND_DATA[(count/10)%10];
PORTG=0x02;
if((count%10)>5)
PORTC = FND_DATA[(count/10)%10]|0x80;
PORTG=0x02;
delay_ms(i);
delay_us(996);
PORTC = FND_DATA[count%10];
PORTG=0x01;
delay_ms(i);
delay_us(996);
}
if(sw1==0&&PINE.4==1)
sw1=1;
if(sw1==1&&PINE.4==0)
{sw1=0;
if(start==1)
start=0;
else
start=1;}
if(PINE.5==0)
reset=1;
else
reset=0;
if(start==1)
count++;
if(reset==1) {count=0; count_min=0;}
if(count>=600)
{
count=0;
count_min++;
if(count_min>=10) count_min=0;
}
}
}
댓글 0
조회수 11,225등록된 댓글이 없습니다.