HT47R20
Rev. 1.10
8
2002-07-25
該地址為程序初始化保留
000H
開始執(zhí)行
地址
004H
該地址為外部中斷服務(wù)程序保留 當(dāng)
INT
引腳有觸發(fā)信
號輸入
如果中斷允許且堆棧未滿
地址開始執(zhí)行
地址
008H
該地址為時基
(Time Base)
中斷服務(wù)程序保留
發(fā)生溢出 如果中斷允許且堆棧未滿 則程序會跳轉(zhuǎn)到
008H
地址開始執(zhí)行
地址
00CH
該地址為實時時鐘
(Real Time Clock)
中斷服務(wù)程序保
留
當(dāng)實時時鐘發(fā)生溢出
如果中斷允許且堆棧未滿
程序會跳轉(zhuǎn)到
00CH
地址開始執(zhí)行
地址
010H
該地址為定時
/
計數(shù)器中斷服務(wù)程序保留 當(dāng)定時
/
計數(shù)
器
A
或
B
發(fā)生溢出
如果中斷允許且堆棧未滿
表格區(qū)
ROM
空間的任何地址都可做為查表使用
和
TABRDL [m]
(
查最后頁表格
)
存器
(08H)
只有表格內(nèi)容的低字節(jié)被傳送到目標(biāo)地址中 而高字節(jié)被傳送到表格內(nèi)容高字節(jié)寄存器
TBLH
表格內(nèi)容高字節(jié)寄存器
TBLH
是只讀寄存器 表格指針
(TBLP)
是可讀
/
寫寄存器
(07H)
用來指明表格地址
在查表之前
要先將表格地址寫入
TBLP
中
如果主程序和中斷服務(wù)程序
(ISR)
都用到查表指令
TBLH
的值可能會因為
ISR
中執(zhí)行的查表指令而發(fā)生變化
服務(wù)程序中都使用查表指令
但如果必須這樣做的話
TBLH
的值后再開放中斷以避免發(fā)生錯誤
所有與表格有關(guān)的指令都需要兩個指令周期的執(zhí)行時間
提到的表格區(qū)都可以做為正常的程序存儲器來使用
系統(tǒng)復(fù)位后
程序總是從
則程序會跳轉(zhuǎn)到
004H
當(dāng)時基
則
則程序會跳轉(zhuǎn)到
010H
地址開始執(zhí)行
查表指令
TABRDC [m]
(
查當(dāng)前頁表格
而表格內(nèi)容高字節(jié)傳送到
TBLH
寄
1
頁
=256
個字
)
會把表格內(nèi)容低字節(jié)傳送給
[m]
主程序中
產(chǎn)生錯誤
我們可以在查表指令前先將中斷禁止
也就是說
要避免在主程序和中斷
在保存了
這里
表格區(qū)
*5
@5
@5
指令
*10
P10
1
*9
P9
1
*8
P8
1
*7
@7
@7
*6
@6
@6
*4
@4
@4
*3
@3
@3
*2
@2
@2
*1
@1
@1
*0
@0
@0
TABRDC [m]
TABRDL [m]
表格區(qū)
當(dāng)前程序指針字節(jié)
注
*10~*0
表格地址字節(jié)
P10~P8
@7~@0
表格指針字節(jié)
堆棧寄存器
堆棧寄存器是特殊的存儲器空間
存儲器的一部分
也不是程序存儲器的一部分
指針
(SP)
來實現(xiàn)的
堆棧指針也不能讀出或?qū)懭?/div>
會被壓入堆棧
在子程序調(diào)用結(jié)束或中斷響應(yīng)結(jié)束時
(
執(zhí)行指令
RET
或
RETI)
容彈出
重新裝入程序計數(shù)器中
在系統(tǒng)復(fù)位后
如果堆棧已滿
并且發(fā)生了不可屏蔽的中斷
抑制
直到堆棧指針
(
執(zhí)行
RET
或
RETI
指令
)
發(fā)生遞減
使得程序員易于使用這種結(jié)構(gòu)
同樣
先進入堆棧的內(nèi)容將會丟失
只有最后的
4
個返回地址會被保留
數(shù)據(jù)存儲器
RAM
數(shù)據(jù)存儲器由
85
8
位組成
分為兩個功能區(qū)間
儲器單元大多數(shù)是可讀
/
寫的
但有些只讀的
特殊功能寄存器包括間接尋址寄存器
0(00H)
1(02H)
間接尋址指針寄存器
1(MP1
03H)
計數(shù)器低字節(jié)寄存器
(PCL
06H)
表格指針寄存器
(TBLP
STACK
用來保存
PC
的值
HT47R20
有
4
層堆棧
也不能寫入
當(dāng)發(fā)生子程序調(diào)用或中斷響應(yīng)時
堆棧寄存器既不是數(shù)據(jù)
堆棧的使用是通過堆棧
程序計數(shù)器
(PC)
的值
堆棧將原先壓入堆棧的內(nèi)
而且它既不能讀出
堆棧指針會指向堆棧頂部
那么只有中斷請求標(biāo)志會被記錄下來
中斷才會被響應(yīng)
如果堆棧已滿
并且發(fā)生了子程序調(diào)用
而中斷響應(yīng)會被
這個功能可以防止堆棧溢出
那么堆棧會發(fā)生溢出
首
特殊功能寄存器和通用數(shù)據(jù)存儲器
(64
8)
數(shù)據(jù)存
間接尋址指針寄存器
0(MP0
存儲器段指針寄存器
(BP
07H)
01H)
間接尋址寄存器
05H)
04H)
累加器
(ACC
程序
08H)
表格內(nèi)容高字節(jié)寄存器
(TBLH
8
8
6 8
4
)
+ @
) #
=
+ )
# )
A
! : ) A
&
, > # )
A + ) ; 9 : ) 7
<
3 1 1 8
B ) )
) (
) )
) 3
8
) A
)
# )
A
)
# )
A
&
, > # )
A + ) ; 9 : ) 7
<
8
1 1 8
4
)
)
# )
A
!
8