BASIC4MCU | 질문게시판 | atmega128 분초시계에서 초부분이 잘안돼고있어요
페이지 정보
작성자 rpdla 작성일2023-05-08 17:06 조회714회 댓글2건본문
여러 사이트를 찾아보면 다른분들에게 도움을 받아서 분부분을 완생햇는데 아래의 초부분이 코드가 잘연결이 안돼고 있어요#include
//
unsigned char s=0,m=0,h=0,d=1,MODE=0,blink=0,KEY1_NOWs=1,KEY1_OLDs,KEY2_NOWs=1,KEY2_OLDs;
unsigned int ms=0;
//
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
TCNT2=0x06;
//
if(++ms>999){ ms=0;
if(++s>59){ s=0;
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
//
PORTD=((m/10)<<4)+(m%10); PORTE=((s/10)<<4)+(s%10);
//-------------------------------------------------------
KEY1_OLDs=KEY1_NOWs; KEY1_NOWs=PINA.0;
KEY2_OLDs=KEY2_NOWs; KEY2_NOWs=PINA.1;
//-------------------------------------------------------
if((KEY2_OLDs==1)&&(KEY2_NOWs==0)){ // 시간모드/ 수정모드
MODE^=1;
if(MODE)PORTB.0=0; // 수정모드 분 깜박임
else PORTB.0=1; // 시간모드 정상표시
}
//-------------------------------------------------------
if((KEY1_OLDs==1)&&(KEY1_NOWs==0)){ // 수정모드 시 분 증가
if(MODE){
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
//-------------------------------------------------------
if(ms<500){ PORTB.2=1; }
else { PORTB.2=0; }
}
//
void main(){
PORTB.1=1;
분부분의 코드는 이거에요 그리고 아래의 부분인 초부분을 한번 누르면 아래의 초부분의 숫자는 올라가면서 깜빡이고 두번째로 누르면 표기된 숫자에서 그대로 멈추는며 깜빡임도 멈추는거에요. 근대 버튼이 인식이 안돼고 있어요 그리고 인식하더라도 위의 분부분의 시계모드와 시간병모드가 되고 있어요. 도와주세요
댓글 2
조회수 714master님의 댓글
master 작성일
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
TCNT2=0x06;
//
if(MODE==0){ // 시간모드 일 때만 자동으로 시간 증가 // <-- 추가
if(++ms>999){ ms=0;
if(++s>59){ s=0;
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
} // <-- 추가
rpdla님의 댓글
rpdla
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
TCNT2=0x06;
//
if(MODE==0){ // 시간모드 일 때만 자동으로 시간 증가 // <-- 추가
if(++ms>999){ ms=0;
if(++s>59){ s=0;
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
} // <-- 추가
//
PORTD=((m/10)<<4)+(m%10); PORTE=((s/10)<<4)+(s%10);
//-------------------------------------------------------
KEY1_OLDs=KEY1_NOWs; KEY1_NOWs=PINA.0;
KEY2_OLDs=KEY2_NOWs; KEY2_NOWs=PINA.1;
//-------------------------------------------------------
if((KEY1_OLDs==1)&&(KEY1_NOWs==0)){ // 시간모드/ 수정모드
MODE^=1;
if(MODE)PORTB.0=0; // 수정모드 분 깜박임
else PORTB.0=1; // 시간모드 정상표시
}
//-------------------------------------------------------
if((KEY1_OLDs==1)&&(KEY1_NOWs==0)){ // 수정모드 시 분 증가
if(MODE){
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
//-------------------------------------------------------
if(ms<500){ PORTB.2=1; }
else { PORTB.2=0; }
//-------------------------------------------------------
if((KEY2_OLDs==1)&&(KEY2_NOWs==0)){ // 시간모드/ 수정모드
MODE^=1;
if(ms < 500) PORTB.1 = 0 ;
else PORTB.1 = 1 ;
}
//-------------------------------------------------------
if((KEY2_OLDs==1)&&(KEY2_NOWs==0)){ // 수정모드 시 분 증가
if(MODE){
if(++m>59){ m=0;
if(++h>23){ h=0; if(++d>31)d=1; }
}
}
}
//-------------------------------------------------------
if(ms<500){ PORTB.1=1; }
else { PORTB.1=0; }
}
//
이렇게 했는데 여전히 깜빡이는걸 실행시켰 봤지만 버튼 연결이 잘안돼고있어요. 몇번인가 깜빡이 코드 위치를 바꿔서 해봤지만 잘안돼서 그러는데 어디가 문제인지 알려주실수 있나요? 그리고 이 코드가 맞는지 알려주실수 있나요?