현재 내 LCD 화면에 약간의 문제가 있습니다. 내가 카운트 다운 타이머를하려고하지만 시간 = 0, 최소 = 1을 설정하면 초가 0에 도달하고 시간이 알려지지 않은 문자와 분 = 59, 초 = 59로 바뀝니다. 나는 뭔가를 놓치고 있습니까?8051 마이크로 컨트롤러 lcd 카운트 다운 타이머
void Timer1(void) interrupt 3
{
TF1 = 0;
TH1 = 0xB1;
TL1 = 0XE0;
cd_msec--;
if(cd_msec == 0)
{
cd_msec = 99;
cd_sec--;
}
if(cd_sec == 0)
{
cd_sec = 59;
cd_min--;
}
if(cd_min == 0)
{
cd_min = 59;
cd_hour--;
}
if(cd_hour == 0)
{
cd_hour = 0;
}
if(cd_hour == 0 && cd_min == 0)
{
cd_hour = 0;
cd_min = 0;
}
if(cd_hour == 0 && cd_min == 0 && cd_sec == 0)
{
cd_hour = 0;
cd_min = 0;
cd_sec = 0;
cd_msec = 0;
}
}
오. 이제 알겠습니다. 와우 주셔서 감사합니다 –
@ Sunil, @FuFu Alex : 여기 예제는 약간 잘못되었습니다. 마지막으로'else'가 잘못되었습니다. 그 시점은 너무 늦게 1 틱에 도달 할 것입니다! 'COUNTDOWN REACHED'에 대한 확인은 감소가 완료된 후에해야합니다 (예 : 큰 if 문 이후). – 4386427
@nielsen, 지적 해 주셔서 고맙습니다. 따라서 모든 틱에서 3-> 2-> 1-> 0 -> "COUNTDOWN 0에 도달했습니다."와 같이됩니다. 사실, "COUNTDOWN REACHED TO 0"에 대한 것입니다. 예 : if (milli_sec == 0 && second == 0 && minute == 0 && hour == 0 {// 0에 도달 한 카운트) –