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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6710|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機(jī)跳過(guò)中斷向量地址的問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:284637 發(fā)表于 2018-2-21 17:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)程序代碼是存入在程序存儲(chǔ)器里,那代碼是怎樣跳過(guò)程序存儲(chǔ)器中斷向量的地址的呢?如下:

ORG   0JMP   START
ORG  03H
JMP INT0
START........

我的問(wèn)題是START后的程序代碼是怎樣跳過(guò)中斷向量的地址03H的?

我的理解:

ORG 03H
JMP INT0

說(shuō)明了03H存放了JMP  INT0這個(gè)指令。其它程序代碼會(huì)跳過(guò)這個(gè)地址存放。

不知這樣理解是不正確。

請(qǐng)老師指教。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155507 發(fā)表于 2018-2-21 22:42 | 只看該作者
(ORG的解釋:該偽指令的功能是規(guī)定其后面的目標(biāo)程序或數(shù)據(jù)塊的起始地址。它放在一段源程序(主程序、子程序)或數(shù)據(jù)塊的前面,說(shuō)明緊跟在其后的程序段或數(shù)據(jù)塊的起始地址就是ORG后面給出的地址。)


00h這個(gè)地址能存8位的二進(jìn)制數(shù),00h后對(duì)應(yīng)的就是01h以此類推,程序寄存器里面中斷源入口地址是固定的屬于保留地址 這個(gè)你最好不要再里面寫(xiě)入程序指令,寫(xiě)程序保持良好的習(xí)慣這很有好處的,如果說(shuō)你寫(xiě)的程序過(guò)大裝不下的話,可以外接存儲(chǔ)設(shè)備來(lái)保存程序指令。


關(guān)于后ORG 03H 是被執(zhí)行的問(wèn)題。

ORG 03H 是外部中斷0的中斷服務(wù)地址,如果外部中斷0被觸發(fā)程序的pc指針就會(huì)指到org 03h ,不要問(wèn)為什么 這是匯編的規(guī)定 。

到03h這后依然順序執(zhí)行 通過(guò)jmp ext1跳到存放中斷服務(wù)程序的地方。這樣0rg 03h被執(zhí)行了,如果沒(méi)有中斷觸發(fā)那么這個(gè)org 03h 就永遠(yuǎn)不會(huì)被執(zhí)行

ORG 00H ;開(kāi)始地址
JMP MAIN ;跳轉(zhuǎn)到主程序
ORG 03H ;外部中斷0地址
JMP EXT1 ;跳轉(zhuǎn)
ORG 13H ;外部中斷1地址
JMP EXT2 ;跳轉(zhuǎn)

評(píng)分

參與人數(shù) 1黑幣 +8 收起 理由
arthuryu + 8 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2018-2-22 08:01 | 只看該作者
你的問(wèn)題很簡(jiǎn)單,但需要從頭從基礎(chǔ)學(xué)起,否則給你解釋了也理解不了。先學(xué)理論,打基礎(chǔ),否則,問(wèn)題多多,事倍功半。
回復(fù)

使用道具 舉報(bào)

地板
ID:111634 發(fā)表于 2018-2-22 08:01 | 只看該作者
先學(xué)理論,打基礎(chǔ),就不會(huì)有這么多問(wèn)題了,本壇至少有50%的問(wèn)題屬于此類情況。
回復(fù)

使用道具 舉報(bào)

5#
ID:282439 發(fā)表于 2018-2-22 08:22 | 只看該作者
我的理解:00H-100H是系統(tǒng)的保留區(qū)。用于安排中斷向量的跳轉(zhuǎn)。用戶程序從ORG 100H開(kāi)始,安排初始化即后面的MAIN.
回復(fù)

使用道具 舉報(bào)

6#
ID:284637 發(fā)表于 2018-2-22 11:23 | 只看該作者
angmall 發(fā)表于 2018-2-21 22:42
(ORG的解釋:該偽指令的功能是規(guī)定其后面的目標(biāo)程序或數(shù)據(jù)塊的起始地址。它放在一段源程序(主程序、子程序 ...

START 后面的程序會(huì)放在程序存儲(chǔ)器中的什么地址呢?它不是在ROM里順序放么,不會(huì)有可能放到03H   13H 這些地址里去?

因?yàn)檫@個(gè)START 前面沒(méi)有用ORG指令指定地址。
回復(fù)

使用道具 舉報(bào)

7#
ID:123289 發(fā)表于 2018-2-22 12:24 | 只看該作者
5#的理解是不完全對(duì)的。
51系統(tǒng):
當(dāng)RESET引腳作用時(shí),程序自動(dòng)從0000H取指令;
當(dāng)INT0引腳作用時(shí),且INT0中斷被允許時(shí),程序?qū)F(xiàn)行的下一條指令地址壓堆棧,再轉(zhuǎn)向0003H取指,直到遇見(jiàn)RETI指令再返回(彈出運(yùn)行的地址,回到原來(lái)位置)。
樓主要細(xì)讀這些原理,理解了就不會(huì)有這些問(wèn)題了。
51系統(tǒng)的中斷地址是硬件固定好的,不可變。為了機(jī)動(dòng),所以這此地址上通常是放LJMP指令。當(dāng)然可以直接放程序,但是程序會(huì)占用其它中斷地址。如果沒(méi)有其它中斷,則是可以直接放程序的。
任何程序都可以運(yùn)行到0000H-0100H中去,不是只有中斷可以用這些地址的。
我們經(jīng)常用:JMP。埃埃埃埃,進(jìn)行軟件強(qiáng)制復(fù)位。
我處理這此地址的方案有兩種,當(dāng)然需要視情況決定采用哪一種:
1、放一條跳轉(zhuǎn)指令:LJMP START (START是我的主程序起點(diǎn));
2、放一條 RETI 指引令。

出兩個(gè)題目給你做做,做對(duì)了你的單片機(jī)水平就大用長(zhǎng)勁了。
1、JMP 0000H 與RESET,都會(huì)使用程序從0000H單元開(kāi)始執(zhí)行程序。有區(qū)別嗎?
2、中斷服務(wù)程序遇到RETI會(huì)返回,將 RETI 改為 RET,會(huì)怎樣?

回復(fù)

使用道具 舉報(bào)

8#
ID:111634 發(fā)表于 2018-2-22 13:06 | 只看該作者
arthuryu 發(fā)表于 2018-2-22 08:22
我的理解:00H-100H是系統(tǒng)的保留區(qū)。用于安排中斷向量的跳轉(zhuǎn)。用戶程序從ORG 100H開(kāi)始,安排初始化即后面的 ...

100H,誰(shuí)規(guī)定的?
回復(fù)

使用道具 舉報(bào)

9#
ID:284637 發(fā)表于 2018-2-23 12:24 | 只看該作者
yzwzfyz 發(fā)表于 2018-2-22 12:24
5#的理解是不完全對(duì)的。
51系統(tǒng):
當(dāng)RESET引腳作用時(shí),程序自動(dòng)從0000H取指令;

1,RESET,會(huì)初始化單片機(jī),但JMP 不會(huì)



2,RETI可以清除優(yōu)先級(jí)激活觸發(fā)器,以保證后續(xù)中斷源的及時(shí)響應(yīng)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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