[英]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.