找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2679|回復(fù): 6
收起左側(cè)

STC單片機(jī)外部中斷中入棧出棧中的一些疑問

[復(fù)制鏈接]
ID:259017 發(fā)表于 2020-1-15 23:15 | 顯示全部樓層 |閱讀模式
我的疑問是這邊箭頭處為什么需要進(jìn)棧操作呢,主程序main中又沒有用到R2寄存器,還有這邊為什么使用DPH呢,我覺得完全沒有必要進(jìn)棧操作呀,是不是這本書寫錯(cuò)了(何賓師傅的STC開發(fā)指南)

1

1

2

2
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2020-1-16 09:35 | 顯示全部樓層
這兩段都是中端服務(wù)操作,就是暫停正在進(jìn)行的工作執(zhí)行中斷服務(wù),中斷服務(wù)前要先保護(hù)現(xiàn)場(chǎng),中斷服務(wù)后要恢復(fù)現(xiàn)場(chǎng),這是中斷服務(wù)必須要做的。
回復(fù)

使用道具 舉報(bào)

ID:259017 發(fā)表于 2020-1-16 12:24 | 顯示全部樓層
xuyaqi 發(fā)表于 2020-1-16 09:35
這兩段都是中端服務(wù)操作,就是暫停正在進(jìn)行的工作執(zhí)行中斷服務(wù),中斷服務(wù)前要先保護(hù)現(xiàn)場(chǎng),中斷服務(wù)后要恢復(fù) ...

兄弟,你能具體分析一下嗎,為什么這邊用到R2寄存器,實(shí)際上我刪除進(jìn)棧出棧也沒有任何影響,且主程序中并滅有用到R2寄存器
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2020-1-16 13:50 | 顯示全部樓層
Zidone 發(fā)表于 2020-1-16 12:24
兄弟,你能具體分析一下嗎,為什么這邊用到R2寄存器,實(shí)際上我刪除進(jìn)棧出棧也沒有任何影響,且主程序中并 ...

這要看全部程序,別的地方用到R2寄存器呢。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2020-1-16 15:09 | 顯示全部樓層
沒有完整的程序看不出來,就那么幾十行的代碼,你打不出來不是更好嗎?可以練習(xí)一下指令
這書的內(nèi)容實(shí)際上也不咋的,說白了就是隨便說說:嗯!就是這個(gè)意思,你明白就好了!
1,累加器A在8051匯編中是到處都要用到的,書上竟然是在中斷中去改變A的值
2.進(jìn)入中斷最先也是一定要保護(hù)的是PSW和ACC的值,因?yàn)檫@兩個(gè)寄存器到處都有可能要用到的,中斷中如果用到了,卻又不保護(hù)的話,程序可能會(huì)亂的

以上說法是針對(duì)8051匯編而言的,我不會(huì)C,所以不知道如果是在C中包含匯編是不是有什么不一樣的地方,如果有不對(duì)的,請(qǐng)指正
回復(fù)

使用道具 舉報(bào)

ID:684095 發(fā)表于 2020-1-16 18:09 | 顯示全部樓層
網(wǎng)上查詢一下了解一下功能會(huì)更好
回復(fù)

使用道具 舉報(bào)

ID:433166 發(fā)表于 2020-1-16 20:47 | 顯示全部樓層
1.DPH和DPL是DPTR寄存器的高八位和低八位。DPTR是16位寄存器。DPH/DPL可以單獨(dú)作為8位寄存器使用。
2. 本例中似乎是示教某些東西,在中斷運(yùn)行中,根據(jù)棧的先入后出規(guī)則:DPH和R2兩個(gè)寄存器實(shí)現(xiàn)了數(shù)據(jù)交換。 ------------------------       正確出入方式是:     PUSH A; PUSH B;......;POP B;POP A ; RETI;
                  --------------------------------------------------------這里或許有BUG
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表