1樓:匿名使用者
你需要先看微控制器彙編,以及熟悉cpu的gpio,還有就是看懂硬體原理圖。
其實多數彙編程式可以改寫成c程式,你可以從學51微控制器c語言開發入門
微控制器c語言程式,看不懂,求講解
2樓:匿名使用者
「t0中斷服務程式不是一個子程式嗎?但沒看見在主程式中呼叫這個子程式啊,求講解這個程式命令的執行過程,定時器怎麼中斷的?」
該子程式是在硬體產生中斷的時候,跳轉到相應中斷入口後,再跳轉到這個中斷服務程式的。請注意函式後面的「interrupt x」宣告,這是c51的擴充套件內容。
「用示波器測波形是測p1.0引腳,為什麼是這個引腳,怎麼確定的?p1_0不是個變數名嗎?」
p1_0這個符號在前面的標頭檔案 t89c51cc02.h 中有定義。至於「為什麼是這個引腳」,是由硬體設計及本程式共同確定的。
p1_0(不是你寫的p1_0,c語言要區分大小寫哦)代表p1口的第0管腳,在標頭檔案中通過sbit定義。
「為什麼t0中斷服務程式和主程式中都有t0的初值,設定還是一樣,他們有什麼關係?」
主程式前面的是對timer0初始化,賦以初值。執行 tr0 = 1; 這一句以後,timer0就開始執行了——tl0與th0組成的13位計數器開始不斷遞增。當13位全部為1之後,再遞增就全部為0,此時溢位事件會觸發產生定時器0,同時計數器仍然在繼續計數——為了讓時間間隔保持一致,就需要再度將計數器賦以初值。
3樓:匿名使用者
1.t0定時器中斷不用再程式中呼叫,當定時器溢位時自動申請中斷,是硬體觸發的。
2.keil中,p1_0表示p1.0,這是一個「位」變數3.t0溢位後,如果不繼續賦初值,那麼將從0開始計數,所以為了保證每次定時一致,中斷
服務程式裡面必須重新賦值。
4.pk記錄中斷次數,p沒什麼意義。tmod et0 ea tr0 tl0 th0是微控制器的關鍵字,可以查書
4樓:我西城冷月
針對你的問題
1 中斷服務程式不需要在使用者程式中呼叫,硬體自動處理,因為每個中斷服務程式在編譯的時候都會指定入口,這個入口是硬體規定死的,決定入口地址的就是中斷函式的interrupt 後面那個數
2 聯絡你在這個變數p1_0上面點右鍵,goto definition of 。。。找到它的定義,最終應該是p1^0或者是對應埠暫存器
3 主程式中只要給值就行,起決定作用的是中斷中的。由於你設定tmod為0,是13位定時器,不會自動重灌載,因此必須每次中斷後手動賦值。
4 這倆東西我覺得沒用,主程式中那個loop不如用一個while(1)代替
5樓:匿名使用者
主程式首先設定中斷,這樣滿足條件時主程式中斷,執行中斷服務程式,完成後繼續執行主程式。中斷有優先順序。微控制器程式設計需要了解一些硬體方面的知識。
p1_0是一個位變數對應微控制器的p1口的第一位,這個是在標頭檔案定義的,當然你也可以自己定義。pk,p就兩個全域性變數,和硬體沒關係,中斷累計pk,主程式清零。主程式的t值啟動時起作用,因為中斷程式修改了,所以它就起作用一次。
為啥中斷修改呢?波形寬度可變的。中斷的簡單解釋:
你在做一件事,來了個**,放下,處理**,完了繼續做這事。
微控制器程式,微控制器程式
org 100h 微控制器起始地址 mov a,31h 分配儲存空間 m0 mov a,0efh p2口賦初值mov r0,08h 迴圈次數 m1 mov p2,a 給p1口賦值,從而點亮ledlcall delay led點亮延遲時間lcall delay lcall delay rr a led...
微控制器作業,微控制器作業求解
這此課本上都可以找到答案的呀。微控制器作業求解 這個可以解決嗎?你好!看不清楚,可以打字嗎。1 根據如下共陰極型數碼管電路,程式設計實現倒計數顯示功能,從99開始倒計數,計到0後再從99開始。2 對數碼管採用動態顯示的方式顯示7 0。共陰極動態數碼管實現模值為100的計數器,計數區間0 99 無進位...
求助微控制器控制LED程式,求助微控制器控制LED程式
你好!微控制器什麼型號?程式是c語言寫嗎 什麼微控制器,用什麼語言說清楚 微控制器控制led程式詳談幫你搞定 什麼型號的微控制器?要用什麼語言編寫?多少個led燈?51微控制器如何控制8個led程式 include包含微控制器專用標頭檔案 include這個是什麼俺也不知道,但這個程式不需要這個標頭...