BASIC4MCU | 질문게시판 | 코드비젼 제한시간 타이머카운터 관련 질문입니다.
페이지 정보
작성자 길세만 작성일2018-12-11 17:17 조회6,405회 댓글0건본문
게임을 실행하고 문제에 대한 답을 일정 시간동안 입력하지 않으면 게임이 종료되도록 하고싶습니다.. 타이머카운트를 이용했는데 암만 시도해도 잘 되지않아 질문드립니다.
전체 코딩은 너무 길어서 보기 쉽게 타이머카운터 부분만 정리해서 올리겠습니다 옥현님 ㅠㅠ
저희가 실행하려는 게임중 하나입니다. 다른게임들도 있지만 그나마 젤 나은 하나만 올립니다.
랜덤함수 seed를 타이머카운터로 받고 ( 이를위해 이렇게 초기화, TCCR1B=0x0D; OCR1A=256; TIMSK=0x11; )
난수를 받아 난수를 lcd에 출력시키고 delay 후 사라지게합니다. 사용자는 이를 기억해 답을 입력하면 점수가 1점 올라갑니다.
void game1(void) //순간기억
{
srand(TCNT1L);
play1= rand()%(999999-9999+1)+ 9999 ;
if (play1 < 0)
play1=0-play1;
lcd_inst_write(0x01);
sprintf(q,"%d",play1);
lcd_data_write( q );
delay_ms(3000);
lcd_inst_write(0x01);
}
내부 인터럽트 부분입니다. tcnt값을 증가시키면서 3초가 지나면 게임을 종료하는 문구 end[]를 출력하도록 만들었습니다.interrupt [TIM0_OVF] void timer0_ovf_isr(void) // 오버플로 인터럽트 발생 서브루틴
{
tcnt += 1;
if(tcnt == 300) //100씩 늘릴때 마다 1초 증가
{
TCCR0=0;
lcd_inst_write(0x80); // 1000 0000
lcd_data_write(end);
PORTF = 0x08;
}
}
위를 실행하기위해 이렇게 초기화 했습니다.
TCCR0 = 0x07; // 클록을 1024 분주
TCNT0 = 99; // 3sec마다 인터럽트 발생 100씩 늘릴때마다 1초 증가
TIMSK = 0x01; // TIMER0 interrupt enable ]
SREG = 0x08;
일주일동안 둘이서 생각해보았는데 답이안나옵니다 옥현님 도와주시면 너무너무 감사합니다.. 간절함이 닿았으면 좋겠습니다 T^T
댓글 0
조회수 6,405등록된 댓글이 없습니다.