欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1471|回復: 6
打印 上一主題 下一主題
收起左側

C語言程序中如何獲得自加時的值?

[復制鏈接]
跳轉到指定樓層
樓主
ID:997026 發表于 2022-4-5 21:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有如下C語言程序,我想知道當trigger_IO被拉低時,此時process_cnt在中斷里自加到哪個數了?大概的代碼應該怎么寫?請教各位大神!
因為process_cnt一直在自加,數值是變化的,當process_cnt>5時,自加到某一個值,如果發生trigger_IO被拉低,此時process_cnt的值是多少(想知道的是process_cnt的初值,也就是trigger_IO被拉低的瞬間,process_cnt的值是多少)?代碼應該怎么寫呢?

unsigned char   process_cnt=0;
unsigned char   trigger_IO=0;
void    sum_process1();
void    sum_process2();

int main(void)
{
   if (process_cnt<=5)
    {
        sum_process1();
    }
    else
    {
      if(!trigger_IO)
      {
         sum_process2();
         //此處需要知道當trigger_IO被拉低時,process_cnt自加到哪個值了?
      }
    }
}


ISR(timer_vect)  //定時器中斷,1s進一次中斷
{
  process_cnt ++;
if(process_cnt==1000)
{
    process_cnt=0;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2022-4-5 22:57 | 只看該作者
開多一個變數如process_cnt_tigger
//此處需要知道當trigger_IO被拉低時,process_cnt自加到哪個值了?
process_cnt_tigger = process_cnt;

然后就用方法去顯示process_cnt_tigger如:
串口
數碼管
LCD1602/12864/OLED
回復

使用道具 舉報

板凳
ID:997026 發表于 2022-4-5 23:26 | 只看該作者
本帖最后由 hxdby 于 2022-4-5 23:27 編輯
lkc8210 發表于 2022-4-5 22:57
開多一個變數如process_cnt_tigger
//此處需要知道當trigger_IO被拉低時,process_cnt自加到哪個值了?
p ...

我想到的也是這種方法,但是遺憾的是我這里不能用到LCD,串口和數碼管這些,可能是我沒說清楚,其實我只需要捕獲到trigger_IO拉低時,process_cnt初值(不需要管這個初值具體值多少,只需要捕獲到,然后保存就可以)就行了。
舉個例子,假設trigger_IO拉低時,process_cnt的值剛好是7,然后trigger_IO拉低了5s, process_cnt從7開始連續自加到12.  我只需要捕獲到拉低瞬間的初值7,后面的值不用管;蛘邠Q句話說,我甚至不需要知道這個初值是不是7或其他什么值都無所謂,這不重要,我只需要捕獲到這個初值并保存就可以,只要知道我捕獲的這個是trigger_IO拉低時,process_cnt初值就行,有什么方法?感謝
回復

使用道具 舉報

地板
ID:883242 發表于 2022-4-5 23:46 | 只看該作者
hxdby 發表于 2022-4-5 23:26
我想到的也是這種方法,但是遺憾的是我這里不能用到LCD,串口和數碼管這些,可能是我沒說清楚,其實我只需 ...

在sum_process2();之前直接讀process_cnt的值就行了,為什么你不去讀?
回復

使用道具 舉報

5#
ID:997026 發表于 2022-4-6 10:12 | 只看該作者
本帖最后由 hxdby 于 2022-4-6 10:17 編輯
Hephaestus 發表于 2022-4-5 23:46
在sum_process2();之前直接讀process_cnt的值就行了,為什么你不去讀?

我直接設置一個變量temp=process_cnt保存這個初值,其實我的應用場景是,要在trigger_IO拉低時,先執行sum_process2(), 然后過5s在執行另一個程序,大概這樣:

if(!trigger_IO)
      {
         unsigned int temp;
         temp=process_cnt; //捕獲process_cnt初值
         sum_process2();  //實際發現執行到這里結束了,下面的沒有執行,trigger_IO拉低的時間是夠的
         if(process_cnt==(temp+5)) //延遲5s
         {
           state_change=1;  
         }         
      }

感覺這樣寫是有問題的,因為process_cnt的值在不斷變,但是又不知道如何寫才能實現這個功能。補充一下,sum_process2()執行的時間是極短的,內部只是一個關閉LED的動作。
回復

使用道具 舉報

6#
ID:161164 發表于 2022-4-6 11:40 | 只看該作者
其實你只是想用process_cnt來做延時
說得那么復雜干什么
開多一個全局變數bit Trigger_flag=0;

if(!trigger_IO)
      {
         unsigned int temp;
         temp=process_cnt; //捕獲process_cnt初值
Trigger_flag=1;
         sum_process2();  //實際發現執行到這里結束了,下面的沒有執行,trigger_IO拉低的時間是夠的
         
      }

把下面的代碼放到外面的while(1)里
if(Trigger_flag)
{
if(process_cnt>=(temp+5)) //延遲5s
         {
           state_change=1;  
Trigger_flag=0;
         }         
}
回復

使用道具 舉報

7#
ID:997026 發表于 2022-4-6 19:40 | 只看該作者
lkc8210 發表于 2022-4-6 11:40
其實你只是想用process_cnt來做延時
說得那么復雜干什么
開多一個全局變數bit Trigger_flag=0;

感謝指點
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表