У меня есть петля для моих часов, что я пытаюсь добавить 30 секунд, если клавиатура отправит значение х 30. Это отобразится на светодиодном дисплее. Он работает, но у меня, похоже, проблема с добавлением 30 секунд и более 59 секунд. Вначале он работал с добавлением от 30 до 60 до 90 + 120 и т. Д. Но я хочу, чтобы он катился каждые 60 секунд, когда я добавляю 30 секунд. Если я должен переписать код, я все играю, но любые ссылки будут полезны. Знайте этот код для встроенного элемента и это всего лишь фрагмент. до установленного цикла добавляется инициальное заданное время и сохраняется как значение для теста.Часы реального времени, приращение и отображение на светодиодах в C
n=test;
for(i=0;i<n;i++){
q = test %100; /*q makes real time clock work in 60 sec decriments*/
if(q==0){
test = test - 40;
}
key = KeypadReadPort();
x = keys[key];
if(x==30){ /*add 30 seconds during count*/
n = n + 30;
sec1=(test+30)%90;
if(sec1>=60){
min=q;
sec2=(test+30)%60;
test=sec2+(100+q);
} else if (sec1<60){
test=test+30;
}
SevenSegWrite(test);/* display result on LED*/
}
test = test - 1; /*count down tick*/
SevenSegWrite(test);
OSTimeDlyHMSM(0, 0, 1, 0);/*1 second tick*/
if(test==0){
for(i=0;i<750;i++){ /*buzzer*/
PTT = PTT | 0x20;
OSTimeDlyHMSM(0,0,0,1);
PTT = PTT & 0xDF;
OSTimeDlyHMSM(0,0,0,1);
}
}
}
test=0;
Предложите переписать весь блок 'if (x == 30) {...}'. Это очень запутанно. – chux