51微控制器呼叫子程式問題,怎樣51微控制器呼叫兩個子程式

時間 2021-08-30 09:56:08

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...