51單片機(jī)CPU的內(nèi)部結(jié)構(gòu)及工作原理
從上圖中我們可以看到,在虛線框內(nèi)的就是CPU的內(nèi)部結(jié)構(gòu)了,8位的MCS-51單片機(jī)的CPU內(nèi)部有數(shù)術(shù)邏輯單元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序狀態(tài)字PSW(8位)、程序計(jì)數(shù)器PC(有時(shí)也稱為指令指針,即IP,16位)、地址寄存器AR(16位)、數(shù)據(jù)寄存器DR(8位)、指令寄存器IR(8位)、指令譯碼器ID、控制器等部件組成。
1、運(yùn)算器(ALU)的主要功能
A)算術(shù)和邏輯運(yùn)算,可對(duì)半字節(jié)(一個(gè)字節(jié)是8位,半個(gè)字節(jié)就是4位)和單字節(jié)數(shù)據(jù)進(jìn)行操作。
B)加、減、乘、除、加1、減1、比較等算術(shù)運(yùn)算。
C)與、或、異或、求補(bǔ)、循環(huán)等邏輯運(yùn)算。
D)位處理功能(即布爾處理器)。
由于ALU內(nèi)部沒有寄存器,參加運(yùn)算的操作數(shù),必須放在累加器A中。累加器A也用于存放運(yùn)算結(jié)果。
例如:執(zhí)行指令 ADD A,B
執(zhí)行這條指令時(shí),累加器A中的內(nèi)容通過輸入口In_1輸入ALU,寄存器B通過內(nèi)部數(shù)據(jù)總線經(jīng)輸入口In_2輸入ALU,A+B的結(jié)果通過ALU的輸出口Out、內(nèi)部數(shù)據(jù)總線,送回到累加器A。
2、程序計(jì)數(shù)器PC
PC的作用是用來存放將要執(zhí)行的指令地址,共16位,可對(duì)64K ROM直接尋址,PC低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出。也就是說,程序執(zhí)行到什么地方,程序計(jì)數(shù)器PC就指到哪里,它始終是跟躥著程序的執(zhí)行。我們知道,用戶程序是存放在內(nèi)部的ROM中的,我們要執(zhí)行程序就要從ROM中一個(gè)個(gè)字節(jié)的讀出來,然后到CPU中去執(zhí)行,那么ROM具體執(zhí)行到哪一條呢?這就需要我們的程序計(jì)數(shù)器PC來指示。
程序計(jì)數(shù)器PC具有自動(dòng)加1的功能,即從存儲(chǔ)器中讀出一個(gè)字節(jié)的指令碼后,PC自動(dòng)加1(指向下一個(gè)存儲(chǔ)單元)。
3、指令寄存器IR
指令寄存器的作用就是用來存放即將執(zhí)行的指令代碼。
在這里我們先簡(jiǎn)單的了解下CPU執(zhí)行指令的過程,首先由程序存儲(chǔ)器(ROM)中讀取指令代碼送入到指令寄存器,經(jīng)譯碼器譯碼后再由定時(shí)與控制電路發(fā)出相應(yīng)的控制信號(hào),從而完成指令的功能。關(guān)于指令在單片機(jī)內(nèi)部的執(zhí)行過程,我們?cè)诤竺鎸?huì)以另一節(jié)課來進(jìn)行詳細(xì)的講解。
4、指令譯碼器ID
用于對(duì)送入指令寄存器中的指令進(jìn)行譯碼,所謂譯碼就是把指令轉(zhuǎn)變成執(zhí)行此指令所需要的電信號(hào)。當(dāng)指令送入譯碼器后,由譯碼器對(duì)該指令進(jìn)行譯碼,根據(jù)譯碼器輸出的信號(hào),CPU控制電路定時(shí)地產(chǎn)生執(zhí)行該指令所需的各種控制信號(hào),使單片機(jī)正確的執(zhí)行程序所需要的各種操作。
5、地址寄存器AR(16位)
AR的作用是用來存放將要尋址的外部存儲(chǔ)器單元的地址信息,指令碼所在存儲(chǔ)單元的地址編碼,由程序計(jì)數(shù)器PC產(chǎn)生,而指令中操作數(shù)所在的存儲(chǔ)單元地址碼,由指令的操作數(shù)給定。從上圖中我們可以看到,地址寄存器AR通過地址總線AB與外部存儲(chǔ)器相連。
6、數(shù)據(jù)寄存器DR
用于存放寫入外部存儲(chǔ)器或I/O端口的數(shù)據(jù)信息。可見,數(shù)據(jù)寄存器對(duì)輸出數(shù)據(jù)具有鎖存功能。數(shù)據(jù)寄存器與外部數(shù)據(jù)總線DB直接相連。
7、程序狀態(tài)字PSW
用于記錄運(yùn)算過程中的狀態(tài),如是否溢出、進(jìn)位等。
例如,累加器A的內(nèi)容83H,執(zhí)行:
ADD A,#8AH ;累加器A與立即數(shù)8AH相加,并把結(jié)果存放在A中。
指令后,將產(chǎn)生和的結(jié)果為[1]0DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放結(jié)果中的最高位B8。為些,在CPU內(nèi)設(shè)置一個(gè)進(jìn)位標(biāo)志位C,當(dāng)執(zhí)行加法運(yùn)算出現(xiàn)進(jìn)位時(shí),進(jìn)位標(biāo)志位C為1。
8、時(shí)序部件
由時(shí)鐘電路和脈沖分配器組成,用于產(chǎn)生微操作控制部件所需的定時(shí)脈沖信號(hào)。
編輯:admin 最后修改時(shí)間:2018-05-08