我一直使用C語言寫微控制器程式,不太清楚程式進入中斷後,一系列PUSH到底是把ACC,PSW等

時間 2021-08-14 23:02:28

1樓:

push指令是把所要儲存的資料存到內部資料儲存器裡,也就是內部ram,具體哪個地址要看sp堆疊指標的指向,如果預設sp為07h的話,那麼存的空間地址就從08h開始。這些值都是可以用直接定址呼叫的,想幹什麼都行。但記著在中斷程式返回前把它們按照順序pop回原來的暫存器裡。

2樓:

你用c語言程式設計的時候不看看標頭檔案嗎?

雙擊keil裡面的reg51.h或者52,裡面定義了很多名字和其地址。。

裡面有的名字,比如acc,p1,tmod,ie等等都是可以在程式裡直接使用的。『

裡面沒有的你可以自己加,當然你要知道地址,名字自己可以隨便定義,不重複就好。

所以。。你先看看書,到底你的程式把中斷前那一瞬的東西存在哪個暫存器裡,

然後就可以在中斷程式裡修改,直接使用其標頭檔案裡面的定義好的名字。

3樓:小樓之外

在中斷程式執行時應該對acc,b,psw的值進行壓棧,儲存資料,中斷執行之後,應當出棧以恢復現場,資料的儲存地址在微控制器內部的資料儲存器中,堆疊指標sp設定起始位置

51微控制器中按鍵程式用C怎麼寫

這個太簡單了吧,記住寫程式定時器要一直跑,建立一個時基,像個手錶的時間一樣要一直跑,即有time 125us,time 1ms,time 100ms,time 1s,time 1min,time 1hour等時間變數建立時基一直走。其它程式可以分時掃描也可以輪流掃描,不能停留死等,像電腦裡的程式一樣...

簡單的C51微控制器組合語言程式分析

羅門大佬 樓上說的有理,但是即使刪去ljmp main也不行,因為在中斷時它把ea關了,也就不會中斷了。其實不用關ea,你把clr ea也刪去就可以執行。只要你的手沒有中斷服務程式快就會有中斷。每次按都有。你試一下在開發板上執行,應該可以的。原因是當你外中斷置低電平時,就會進入中斷程式。執行完就會自...

微控制器萬年曆的c語言程式

沒分啊 那也給你發一個吧 ds1302 ds18b20 用1602顯示 我在protues 上做的 你可以根據程式畫電路圖 很簡單 程式 採用模組化方式 初始化 define uint unsigned int define uchar unsigned char uchar code tab 20...