Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实时时钟、增量和LED在C中的显示_C_Embedded_Clock - Fatal编程技术网

实时时钟、增量和LED在C中的显示

实时时钟、增量和LED在C中的显示,c,embedded,clock,C,Embedded,Clock,我的时钟有一个循环,如果键盘发送的x值为30,我会尝试加30秒。然后显示在LED显示屏上。它是有效的,但我似乎对增加30秒和超过59秒的时间有问题。它最初的工作方式是不断增加30到60到90+120,等等。但我希望它每60秒滚动一次,当我增加30秒时。如果我要重写代码,我会全力以赴,但任何线索都会有帮助。要知道这段代码是针对嵌入项的,只是一个片段。初始设置时间在设置循环之前添加,并作为测试值保存 n=test; for(i=0;i<n;i++){ q = test %10

我的时钟有一个循环,如果键盘发送的x值为30,我会尝试加30秒。然后显示在LED显示屏上。它是有效的,但我似乎对增加30秒和超过59秒的时间有问题。它最初的工作方式是不断增加30到60到90+120,等等。但我希望它每60秒滚动一次,当我增加30秒时。如果我要重写代码,我会全力以赴,但任何线索都会有帮助。要知道这段代码是针对嵌入项的,只是一个片段。初始设置时间在设置循环之前添加,并作为测试值保存

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;
n=测试;
对于(i=0;i=60){
min=q;
sec2=(试验+30)%60;
试验=sec2+(100+q);

}否则,如果(sec1我会这样做。这对我很有效。你有一个很好的开始!你只需要把你的时钟数字分解一下

 if(start<15){
        min=0;                                                               /*microwave keypad numeric input method*/
       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*/

              d4 = test % 10;
              d3 = (test / 10) % 10;
              d2 = (test / 100) % 10;
              d1 = (test / 1000) % 10;
              min=(d1*1000)+(d2*100);
              sec1=(d3*10)+d4;
              n = n + 30;
              sec2=(sec1+30)%90;

              if(sec2>=60){
                min=min+100; 
                sec1=(sec1+30)%60;
                test=sec1+(min);
              } else if (sec2<60){
                test=test+30;
              }
           SevenSegWrite(test);


         }
         test = test - 1;       /*count down tick*/
         SevenSegWrite(test);
         OSTimeDlyHMSM(0, 0, 1, 0);
         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);  
           }
         }

if(startSuggest)重新编写整个块
if(x==30){…}
。这非常混乱。没问题,我对这类东西有一些经验