簡體   English   中英

如何創建一個計時器/時鍾,可以將其值發回,存儲在變量中,僅在 C 和 mikroC 上延遲

[英]How to create a timer/clock that can send its value back,stored in a variable, ONLY made with delays in C & on mikroC

作為 C 初學者,我很難解決我的這個問題:

我正在從事一個項目,我基本上必須使用 mikroC 平台在 C 中對 PIC(微芯片)進行編程。

我想要實現的是只有一個開關/按鈕,我必須根據時間從三個不同的“模塊”(我稱之為“模塊”,它們對應於 LED 產生的不同照明效果)進行切換按下開關/按鈕所花費的時間。 在我的情況下,500 毫秒后模塊 1 啟動,1500 毫秒后模塊 2 啟動,3500 毫秒后模塊 3 啟動(整個過程必須處於無限重復循環中,因為我必須能夠更改模塊在操作期間的任何時間)。

我唯一的問題是讓計時器/時鍾在程序開始時開始運行並繼續計算時間,直到到達停止信號(例如循環結束或其他什么)。

這可能不適合向這個社區詢問,但我仍然在這里。

我意識到這更像是一個“算法/邏輯”問題,但上周我一直在嘗試,但沒有任何關於如何解決這個問題的線索......

沒有結果,因為代碼根本沒有准備好。

有一個用於處理按鈕按下mikroC 庫 以下示例(來自鏈接)提供了檢測按鈕按下的基本示例...

bit oldstate;                                    // Old state flag

void main() {

  ANSEL  = 0;                                    // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                                  // Disable comparators
  C2ON_bit = 0;

  TRISB0_bit = 1;                                // set RB0 pin as input

  TRISC = 0x00;                                  // Configure PORTC as output
  PORTC = 0xAA;                                  // Initial PORTC value
  oldstate = 0;

  do {
    if (Button(&PORTB, 0, 1, 1)) {               // Detect logical one
      oldstate = 1;                              // Update flag
    }
    if (oldstate && Button(&PORTB, 0, 1, 0)) {   // Detect one-to-zero transition
      PORTC = ~PORTC;                            // Invert PORTC
      oldstate = 0;                              // Update flag
    }
  } while(1);                                    // Endless loop
}

還有的集合MicroE實例包括計時器的例子,如這些,和這一個 其中每一個都提供了代碼庫示例,這些示例可能適用於創建一個函數,該函數可以環繞按鈕按下代碼中的部分以獲得持續時間。

我希望這有幫助。

當按鈕被按下時,您需要初始化各個微控制器的定時器模塊檢查中斷標志,並將其置於循環中。 增加值直到釋放按鈕,然后將結果值與指定的限制進行比較,這是您可以決定按下按鈕多長時間,然后您將能夠連續切換輸出。 如果您想在不中斷程序當前執行的情況下精確監控延遲,這是唯一的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM