標(biāo)題: 微控制器基礎(chǔ)知識(shí)—第四章 [打印本頁(yè)]
作者: tongguan123 時(shí)間: 2022-6-8 21:03
標(biāo)題: 微控制器基礎(chǔ)知識(shí)—第四章
本帖最后由 tongguan123 于 2022-6-8 22:30 編輯
第四章 東芝微控制器,內(nèi)核示例(TLCS-870/C1)
1 CPU整體配置
CPU具有用于存儲(chǔ)讀取指令存儲(chǔ)器地址的存儲(chǔ)電路、用于暫時(shí)存儲(chǔ)讀取指令的存儲(chǔ)電路、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)電路以及用于執(zhí)行計(jì)算的運(yùn)算電路。

8位微控制器功能框圖

2 CPU整體配置:CPU核心(1)
PSW(程序狀態(tài)字):用于保存操作結(jié)果和指令執(zhí)行結(jié)果狀態(tài)的寄存器,由各種標(biāo)志組成。
通用寄存器:儲(chǔ)存數(shù)據(jù)的存儲(chǔ)電路。根據(jù)存儲(chǔ)電路的位置,通用寄存器分別稱為W、A、B、C、D、E、H、L等。儲(chǔ)存計(jì)算結(jié)果的地方稱為累加器。在TLCS-870/C1中,W、A、B、C、D、E、H、L、IX和IY這十個(gè)寄存器具有累加器功能。
程序計(jì)數(shù)器(PC):用于儲(chǔ)存存儲(chǔ)器地址以讀取指令的存儲(chǔ)電路。

各種寄存器

3 CPU整體配置:CPU核心(2)
ALU(算術(shù)邏輯單元):用于執(zhí)行計(jì)算的運(yùn)算電路。
指令寄存器:用于暫時(shí)存儲(chǔ)讀取指令的存儲(chǔ)電路。
指令解碼器:對(duì)存儲(chǔ)在指令寄存器中的指令進(jìn)行解密,并將其發(fā)送到控制單元。
中斷控制電路:控制中斷功能。

計(jì)算部分、指令部分、中斷電路

4 CPU整體配置:程序計(jì)數(shù)器
程序計(jì)數(shù)器(PC)是管理下一步要執(zhí)行的指令的存儲(chǔ)器地址的寄存器。每次執(zhí)行一條指令時(shí),程序計(jì)數(shù)器指定的地址將+n(1字指令為+1,2字指令為+2)。但是,在中斷指令等情況下,將存儲(chǔ)跳轉(zhuǎn)目標(biāo)地址。
調(diào)用執(zhí)行指令
CPU從PC讀取下一條要執(zhí)行的指令所在的地址,并依次執(zhí)行。例如,如果PC中存儲(chǔ)了0x8020(地址),則意味著CPU正在執(zhí)行地址為0x8019的指令。如果從PC讀取了地址0x8020,則用于讀取CPU下一步要執(zhí)行的指令的地址0x8021將儲(chǔ)存在PC中。
調(diào)用下一個(gè)指令的存儲(chǔ)地址(程序計(jì)數(shù)器)

5 CPU整體配置:通用寄存器通用寄存器可用于各種用途,例如累加器和數(shù)據(jù)處理。TLCS-870/C1有八個(gè)8位寄存器:W、A、B、C、D、E、H和L。這八個(gè)寄存器也可以作為16位寄存器成對(duì)使用:WA、BC、DE和HL。這些組合只適用于相鄰的寄存器,例如,B和E、H和E等不能組合。
通用寄存器(1)
此外,TLCS-870/C1還有兩個(gè)16位通用寄存器IX和IY。這些寄存器主要作為訪問(wèn)存儲(chǔ)器時(shí)的索引寄存器。TLCS-870/C1有兩組這樣的寄存器。
通用寄存器(2)

6 CPU整體配置:PSW(標(biāo)志)執(zhí)行指令后,會(huì)有一個(gè)標(biāo)志指示存儲(chǔ)器的內(nèi)容以及計(jì)算結(jié)果的狀態(tài)。PSW(*)收集這些標(biāo)志。* PSW:程序狀態(tài)字
PSW(*),儲(chǔ)存計(jì)算結(jié)果的狀態(tài)
下圖是A寄存器(00111110)和B寄存器(11100000)相加的例子。計(jì)算結(jié)果(100011110)儲(chǔ)存在A寄存器中。但是,由于A寄存器只能儲(chǔ)存8位,所以將進(jìn)位標(biāo)設(shè)置為“1”,并將進(jìn)位標(biāo)志保留為發(fā)生進(jìn)位的信息。在A寄存器中,存儲(chǔ)不包括最高有效位1的(00011110)作為計(jì)算結(jié)果。例如,如果計(jì)算結(jié)果是(100000000),則在進(jìn)位標(biāo)志中設(shè)置1,(00000000)儲(chǔ)存在A寄存器中,所以在零標(biāo)志中設(shè)置1。
計(jì)算結(jié)果的內(nèi)容寫(xiě)入PSW

7 CPU整體配置:堆棧和堆棧指針發(fā)生中斷請(qǐng)求時(shí),堆棧用于臨時(shí)保存在中斷發(fā)生之前正處于運(yùn)行狀態(tài)的程序的標(biāo)記以及PC值。中斷處理完成之后,將恢復(fù)堆棧中保存的標(biāo)志等信息,并繼續(xù)運(yùn)行暫停的程序。
中斷的發(fā)生
堆棧指針用于管理堆棧,并指示PC和標(biāo)志的保存地址。堆棧中要放入和取出的數(shù)據(jù)采用FILO(先進(jìn)后出)法管理,先儲(chǔ)存的數(shù)據(jù)后取出。在該堆棧中儲(chǔ)存數(shù)據(jù)稱為“Push”(壓棧),從該堆棧中讀取數(shù)據(jù)叫做“Pop”(出棧)。堆棧指針由“Push”前進(jìn),由“Pop”返回。
FILO法(先進(jìn)后出法)

8 中斷處理中斷處理是指當(dāng)微控制器接收到外部中斷請(qǐng)求,并處于可以接受中斷的狀態(tài)時(shí),暫停正在執(zhí)行的程序,并執(zhí)行另一個(gè)程序。當(dāng)外部設(shè)備的中斷請(qǐng)求信號(hào)輸入到CPU上的中斷專用端子時(shí),當(dāng)前正在執(zhí)行的程序暫停,微控制器切換到中斷時(shí)要執(zhí)行的程序,執(zhí)行該程序.當(dāng)中斷處理程序結(jié)束之后,返回原程序,從暫停處理的程序重新啟動(dòng)。
中斷發(fā)生時(shí)的操作

9 中斷處理:中斷類(lèi)型中斷有兩種:硬件中斷和軟件中斷。
硬件中斷通過(guò)外圍電路的中斷請(qǐng)求信號(hào)來(lái)發(fā)生中斷。另一方面,軟件中斷則通過(guò)執(zhí)行專用指令來(lái)發(fā)生中斷。
中斷類(lèi)型
硬件中斷分為外部中斷和內(nèi)部中斷。
當(dāng)指定的信號(hào)輸入到專門(mén)的外部中斷端子時(shí),就會(huì)發(fā)生外部中斷。內(nèi)部中斷則通過(guò)微控制器內(nèi)置的外圍電路發(fā)出中斷請(qǐng)求信號(hào)而發(fā)生。此外,根據(jù)中斷請(qǐng)求信號(hào)的接收方式,還分為可屏蔽中斷和不可屏蔽中斷。
發(fā)生中斷的各種因素

10 中斷處理:可屏蔽中斷這里的“可屏蔽”是指“被禁止”。當(dāng)發(fā)生中斷請(qǐng)求信號(hào)時(shí),如果CPU設(shè)置為啟用中斷,就可以執(zhí)行中斷處理。如果中斷設(shè)置為禁用,則將忽略中斷請(qǐng)求信號(hào),不執(zhí)行中斷處理。忽略的中斷請(qǐng)求信號(hào)會(huì)被保留,直到中斷請(qǐng)求變?yōu)閱⒂没蛘呙畋怀绦蛉∠_@樣,可屏蔽中斷可以自由地啟用或者禁用中斷處理。它通常由程序設(shè)置。當(dāng)CPU收到中斷請(qǐng)求信號(hào)之后,中斷控制電路將轉(zhuǎn)入中斷處理操作。
可屏蔽中斷

11 中斷處理:不可屏蔽中斷不可屏蔽中斷不能禁用。如果有中斷請(qǐng)求,CPU將無(wú)條件地執(zhí)行中斷處理。不可屏蔽中斷用于進(jìn)行緊急處理,例如斷電處理等數(shù)據(jù)備份處理。有一個(gè)看門(mén)狗定時(shí)器作為不可屏蔽中斷。看門(mén)狗定時(shí)器檢查微控制器是否正常工作。當(dāng)檢測(cè)到異常時(shí),產(chǎn)生看門(mén)狗定時(shí)器中斷,將錯(cuò)誤通知給CPU或使CPU復(fù)位。
不可屏蔽中斷
復(fù)位
微控制器通?稍诮油娫磿r(shí)復(fù)位。復(fù)位使微控制器的配置返回初始狀態(tài)。復(fù)位時(shí),程序?qū)念^開(kāi)始運(yùn)行。
復(fù)位
作者: 370008208 時(shí)間: 2022-9-10 06:40
學(xué)習(xí)完這一章,坐沙發(fā)
作者: thomson675843 時(shí)間: 2023-7-15 08:46
寫(xiě)的非常詳細(xì)樓主辛苦了
作者: KevinMCU 時(shí)間: 2024-10-24 16:04
謝謝,學(xué)習(xí)了,真好
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |