1樓:
直接跳回主程式,再初始化。
怎樣51微控制器呼叫兩個子程式 5
2樓:天蠍神經俠侶
mov r0,#08h
mov a,#0feh
loop: mov p1,a
lcall del
rr a
djnz r0,loop
使用djnz 指令。為0執行下一指令,不為0跳轉。
就可以呼叫內兩個容子程式了
3樓:匿名使用者
估計是進入到倒計時程式,一直沒有出來。
主程式直接呼叫洗滌程式。
定時器,每到1s時,再去呼叫一下倒計時程式。
4樓:**飄渺迷人
1>設定定時器t0為20毫秒中斷
2>中斷裡計數50次為1秒,提供計時秒時基3>顯示程式與倒計時判定放於中斷執行
4>主程式中呼叫洗滌程式.
5樓:匿名使用者
這就是單任務的缺點,你的意思是要倒計時 和洗滌 2個任務同時進行,最好用作業系統
不然只能用中斷,執行一會洗滌 在執行一會倒計時 巨集觀上看也是2個任務同時進行
51微控制器 中斷子程式中呼叫其它子程式怎樣呼叫
6樓:毛曼趙方
在主程式裡面呼叫過的函式最好不要在中斷裡面呼叫,因為這關係到函式的遞迴呼叫了。所謂遞迴函式就是在函式裡面呼叫了函式本身。一般在pc機裡面用。
這樣處理很麻煩的,在微控制器資源有限的情況下這種情況很容易出現死迴圈,你設想一下,例如你在主函式裡面呼叫了函式a。在中斷裡面也呼叫了函式a。當主程式執行到函式a裡面的時候,發生中斷,在中斷裡面有執行了函式a。
等出了中斷,繼續執行函式a,可是又在執行函式a的時候發生中斷,又執行函式a。這樣不就是個死迴圈了嗎??如果非得在中斷裡面呼叫,又要在主程式裡面呼叫,那就用兩個名字不同,但是功能完全相同的函式。
當然這樣做也有風險,要是你呼叫的函式裡面有觸發中斷的條件,也會變死迴圈。
7樓:匿名使用者
中斷中呼叫其他程式跟不在中斷中呼叫一樣,比如你定義一個只程式vodi delay(void)那麼你在main()中呼叫時是delay();
在中斷中也是一樣這樣用
51微控制器如何呼叫兩個不同的中斷子程式?
8樓:匿名使用者
當然不可行了,中斷服務程式是不能呼叫的,只能靠硬體觸發。
你可以初始化時只開啟第一個中斷,在第一個中斷服務程式裡,開啟第二個中斷,這樣還是可以的。
9樓:匿名使用者
首先設定中斷使能,中斷源等,如定時器觸發、輸入點電壓變化等,中斷條件生效立即轉去中斷服務程式。
10樓:匿名使用者
中斷程式 不是 呼叫的,是在滿足中斷條件時 產生中斷 後 才執行 中斷服務程式的,
這樣的 結構 是 不可行的。
51微控制器怎麼把多個子程式做成標頭檔案,然後呼叫
11樓:
標準的做法:
timer.c 裡面包含了函式宣告,全域性變數,函式體,timer.h 裡面使用#ifndef 語句,並且將外部需要使用的變數或函式加extern;
例:timer.c:
#include "timer.h"
int timercnt;
int timerstatu;
void timerstart();
void timerstop();
void timerinit();
void timerstart()
{}void timerstop()
{}void timerinit()
timer.h:
#ifndef __timer_h_
#define __timer_h_
//如果外部需要使用這些變數或函式,直接包含標頭檔案即可。
//如果不對外開放的函式,就不需要新增
//注:在c原始檔中,函式宣告要補全
extern int timercnt;
extern int timerstatu;
extern void timerstart();
extern void timerstop();
extern void timerinit();
#endif
12樓:壕銘爽
你可以寫一個標頭檔案,比如說之類的,開始寫51程式的時候,#include 就可以放進去了,這條語句相當於這個檔案。你可以把它放在任意的路徑,最好是和一個資料夾,方便直接用,就不用每次使用都要查詢它的路徑了。希望能夠幫到你
13樓:
多個子程式寫到一個原始檔中啊,弄個main.c原始檔呼叫標頭檔案跑下就好了啊
14樓:匿名使用者
樓主解決問題了嗎?同問
關於微控制器在呼叫子程式時,進行了怎樣的堆疊操作
斷點的pc值入棧,還有哪些東西呢?取決於子程式的型別和程式設計方式。有些特殊型別的子程式是需要入棧的,若採用高階語言程式設計則編譯器會自動新增相應的入棧出棧語句。有人說臨時變數不入棧,那cpu從子程式執行退回斷點時,臨時變數的值是如何恢復的呢?呵呵,為何要恢復?呼叫子程式的時候會從區域性變數塊中新分...
51微控制器外部中斷實驗程式,51微控制器外部中斷實驗程式
做51微控制器外部中斷實驗,應該有主程式 中斷服務程式。樓主所說這些的亮滅,那些的主程式的?那些是中斷程式的?請問你這個觸發中斷是一個按鍵?你觸發的方式是長時間按下還是瞬間按下?我覺得你應該是長時間按下的。回到正題,你這個中斷服務函式裡只有一句 那麼中斷服務函式執行的速度會很快的,所以如果你只按了一...
51微控制器蜂鳴器程式是什麼,求51微控制器蜂鳴器程式
迷你手工老張 include reg52.h typedef unsigned char u8 typedef unsigned int u16 sbit beep p1 5 void delay u16 i while i void main while 1 beep beep delay 100...