版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
單晶片原理與程式設(shè)計
第一章
單晶片微電腦簡介
第二章
程式與編譯
第三章
8051單晶片程式指令
第四章
暫存器與資料記憶體
第五章
8051基本電路與輸出輸入實例
第六章
計時/計數(shù)器
第七章
中斷服務(wù)與中斷設(shè)定
第八章
串列埠
第一章單晶片微電腦簡介1.1 微電腦硬體結(jié)構(gòu) 微電腦硬體結(jié)構(gòu)包含中央處理單元、記憶體單元、輸入單元與輸出單元等四個主要單元,其結(jié)構(gòu)關(guān)係則如下圖所示。
其中,中央處理單元則是由運算單元與控制單元兩部分所組成的單元,即是一般所通稱的CPU(CenterProcessingUnit),此為微電腦最重要的部分。以下就微電腦中各單元的功能做簡單介紹:1.運算單元(ArithmeticLogicUnit,簡稱ALU)運算單元又稱為算數(shù)邏輯單元,在中央處理單元中可用於執(zhí)行算數(shù)運算,(如:加、減、乘、除等),以及邏輯運算(如:AND、OR、NOT等),能將記憶體單元或輸入單元送至中央處理單元的資料執(zhí)行各種運算。當(dāng)運算完成後再由控制單元將結(jié)果資料送至記憶體單元或輸出單元。2.控制單元(ControlUnit,簡稱CU)此單元在中央處理單元中,負(fù)責(zé)協(xié)調(diào)與指揮各單元間的資料傳送與運作,使得微電腦可依照指令的要求完成工作。在執(zhí)行一個指令時,控制單元先予以解碼(Decode),瞭解指令的動作意義後再執(zhí)行(Execute)該指令,因此控制單元將指令逐一執(zhí)行,直到做完整個程式的所有指令為止。3.輸入單元(InputUnit,簡稱IU)此單元是用以將外部的資訊傳送到CPU做運算處理或存入記憶體單元,一般在為電腦的輸入單元有鍵盤、磁碟機、光碟機、滑鼠、光筆、掃描器或讀卡機等週邊設(shè)備。4.輸出單元(OutputUnit,簡稱OU)此單元是用以將CPU處理過的資料輸出或儲存?zhèn)魉屯獠窟L邊設(shè)備,一般在為電腦的輸出單元有顯示器、印表機、繪圖機、燒錄機或磁碟機等週邊設(shè)備。5.記憶體單元(MemoryUnit,簡稱MU)記憶體單元是用來儲存輸入單元傳送來的資料,或儲存經(jīng)過中央處理單元處理完成的資料。記憶體單元之記憶體可分為主記憶體(MainMemory)與輔助記憶體(AuxiliaryMemory)兩種,而主記憶體依存取方式不同,又可分為唯讀記憶體(ReadOnlyMemory,簡稱ROM)與隨機存取記憶體(RandomAccessMemory,簡稱RAM)。ROM所儲存的資料,在微電腦中只能被讀出但不能被寫入,也不會因為關(guān)機斷電而使資料流失;至於RAM在微電腦中,則可被讀出或?qū)懭胭Y料,但在關(guān)機斷電後儲存於RAM中的資料將會流失。輔助記憶體則是指磁片、硬碟或磁帶等週邊硬體,一般亦為輸出入單元,主要用來彌補主記憶體的不足,其容量可無限制擴充。1-28051單片的內(nèi)部結(jié)構(gòu):8051為Intel公司所推出的MCS-51系列產(chǎn)品之一,其內(nèi)部結(jié)構(gòu)如下:
8051單片具有以下之特性:1.
專為控制使用所設(shè)計的8位元單晶片。2.
具有位元邏輯運算能力。3.
具有128位元的RAM,以及4K位元的ROM。4.
具有4個8位元I/O埠。5.
具有2個16位元的計時/計數(shù)器。6.
具有全雙工的UART。7.
具有5個中斷源及兩層中斷優(yōu)先權(quán)結(jié)構(gòu)。8.
具有時脈產(chǎn)生電路。
具有外部電路擴充64位元程式記憶體的能力。1-38051單晶片的接腳:8051為40支接腳之單晶片,其接腳圖與功能說明如下:1.
Vcc:+5電源供應(yīng)接腳。2.
GND:接地接腳。
3.P0.0~P0.7:埠0,為開洩極(OpenDrain)雙向I/O埠。在做為外部擴充記憶體時,可低八位元位址線
(A0~A7addressline)與資料匯流排(databus)雙重功能。在做為一般I/O埠時必須加上如下之外部提升電路。4.
P1.0~P1.7:埠1,為具有內(nèi)部提升電路的雙向I/O埠。5.
P2.0~P2.7:埠2,為具有內(nèi)部提升電路的雙向I/O埠。在做為外部擴充記憶體時,可為高八位元位址線(A8~A15addressline)。6.
P3.0~P3.7:埠3,為具有內(nèi)部提升電路的雙向I/O埠。此外,埠3的每支接腳都具有另一特殊功能,其功能如下:RXD(P3.0):串列傳輸?shù)慕邮斩恕XD(P3.1):串列傳輸?shù)妮敵龆恕?P3.2):外部中斷輸入端。(P3.3):外部中斷輸入端。T0(P3.4):計時/計數(shù)器外部輸入端。T1(P3.5):計時/計數(shù)器外部輸入端。(P3.6):外部資料記憶體寫入激發(fā)信號(Strobe)。(P3.7):外部資料記憶體讀取激發(fā)信號(Strobe)。7.
RST:重置信號(Reset)輸入端。在單晶片工作時,將此腳保持在“Hi”兩個機械週期,CPU將重置。8.
ALE:位址鎖住致能(AddressLatchEnable),在每個機械週期都會出現(xiàn),可做為外部電路的時脈源。9.
:程式激發(fā)致能(ProgramStrobeEnable),可輸入外部程式記憶體的讀取信號。10.
:外部存取致能(ExternalAccessEnable),當(dāng)EA接腳為“L0”時,則讀取外部程式記憶體執(zhí)行。11.
XTAL1:反相振盪放大器的輸入端。
12.XTAL2:反相振盪放大器的輸出端。其基本電路連接如下:基本電路圖12MHz8051XTAL1XTAL2RST193118912MHz8051XTAL1XTAL2RST1931189
第二章
程式與編譯§2-1程式編寫流程8051單晶片應(yīng)用於控制上時,整體系統(tǒng)的設(shè)計包括軟體程式及硬體電路兩方面。硬體電路設(shè)計是依受控系統(tǒng)之不同而異,雖然有時候系統(tǒng)的某些功能可以採用軟體或硬體來完成,但在考量硬體成本及8051單晶片運算能力所及程度,以軟體程式來完成為較佳方法。對於8051單晶片之編譯流程如下:
編譯流程圖
§2-28051組合語言程式的格式8051組合語言程式是由一列一列的敘述(statement)所組成,而程式的執(zhí)行則須先經(jīng)8051組譯器編譯後,並經(jīng)燒錄器燒錄至8051單晶片中方可執(zhí)行。而8051組合語言的格式則是由4個欄位所構(gòu)成,其格式如下:〔Label〕〔Mnemonic〕〔Operand〕〔Comment〕標(biāo)記欄
指令欄
運算元欄註解欄1.
標(biāo)記欄(Label)標(biāo)記的功用是用以替代繁複的記憶體位址計算,以方便程式的編寫、分析與維護。標(biāo)記的編寫必須從文書編輯軟體的第一格開始,標(biāo)記可以由英文字母、阿拉伯?dāng)?shù)字、問號及底線字元組合而成,長度最多可以達32個位元,最後必須以冒號來結(jié)束。2.
指令欄(Mnemonic)指令可分為兩種,一種是8051單片指令,另一種則是編譯程式的虛指令,用以通知編譯器對程式作某些特定的處理。如果一列指令開頭沒有標(biāo)記時,則指令前必須保留一個以上的空格。3.
運算元欄(Operand)運算元依指令決定需要與否,且其需要長度亦依指令而異。4.
註解欄(Comment)
註解欄是以分號起頭的一段說明文字,直到該行結(jié)束??商峁┏淌皆O(shè)計師註解說明。
第三章
8051單晶片程式指令8051單晶片程式指令依其功能,可分為以下5類:1.
算術(shù)指令2.
邏輯指令3.
資料轉(zhuǎn)移指令4.
布林(Boolean)運算指令5.
程式跳躍指令以下就上列指令;分別說明每個指令動作、佔用的位元數(shù)及執(zhí)行時間週期:指令表
指令符號定義符號說明Rn所選擇暫存器庫中之R0~R7,n=0~7。direct直接定址位址。@Ri間接定址位址,i=0或1。#data8位元資料常數(shù)。#data1616位元資料常數(shù)。addr1111位元位址常數(shù),使用於ACALL及AJMP指令。addr1616位元位址常數(shù),使用於LCALL及LJMP指令。rel8位元偏移位址常數(shù),使用於SJMP及相對跳躍指令中。bit位元定址位址?!杂曳劫Y料取代左方資料。(X)將X內(nèi)容取出。((X))以X內(nèi)容為位址,以間接定址方式取出資料。rrrn之2進制值。如n=6,rrr=110。符號定義算數(shù)運算指令指令說明位元組機械週期ADDA,Rn將暫存器內(nèi)容加入A累加器11ADDA,direct將直接位址內(nèi)容加入A累加器21ADDA,@Ri將間接位址內(nèi)容加入A累加器11ADDA,#data將8位元常數(shù)資料加入A累加器21ADDCA,Rn將暫存器與進位CF加入A累加器11ADDCA,direct直接位址內(nèi)容與進位CF加入累加器21ADDCA,@Ri間接位址內(nèi)容與進位CF加入累加器11ADDCA,#data將8位元常數(shù)資料與進位加入累加器21SUBBA,RnA累加器內(nèi)容減暫存器與借位CF11SUBBA,directA累加器內(nèi)容減直接位址內(nèi)容與借位21SUBBA,@RiA累加器內(nèi)容減間接位址內(nèi)容與借位11SUBBA,#data累加器內(nèi)容減8位元常數(shù)資料與借位21INCAA累加器內(nèi)容加111INCRn暫存器內(nèi)容加111INCdirect直接位址內(nèi)容加121INC@Ri間接位址內(nèi)容加111INCDPTR資料指標(biāo)DPTR內(nèi)容加112DECAA累加器內(nèi)容減111DECRn暫存器內(nèi)容減111DECdirect直接位址內(nèi)容減121DEC@Ri間接位址內(nèi)容減111MULABA累加器乘以暫存器B,相乘結(jié)果之高8位元存入B,低8位元存入A14DIVABA累加器除以暫存器B,相除結(jié)果之商存入A,餘數(shù)存入B14DAAA累加器內(nèi)容調(diào)整成10進制BCD數(shù)11算數(shù)運算指令
邏輯運算指令指令說明位元組機械週期ANLA,Rn暫存器AND至A累加器內(nèi)11ANLA,direct直接位址內(nèi)容AND至A累加器內(nèi)21ANLA,@Ri間接位址內(nèi)容AND至A累加器內(nèi)11ANLA,#data8位元資料AND至A累加器內(nèi)21ANLdirect,AA累加器內(nèi)容AND至直接位址內(nèi)21ANLdirect,#data8位元資料AND至直接位址內(nèi)32ORLA,Rn暫存器OR至A累加器內(nèi)11ORLA,direct直接位址內(nèi)容OR至A累加器內(nèi)21ORLA,@Ri間接位址內(nèi)容OR至A累加器內(nèi)11ORLA,#data8位元資料OR至A累加器內(nèi)21ORLdirect,AA累加器內(nèi)容OR至直接位址內(nèi)21ORLdirect,#data8位元資料OR至直接位址內(nèi)32XRLA,Rn暫存器XOR至A累加器內(nèi)11XRLA,direct直接位址內(nèi)容XOR至A累加器內(nèi)21XRLA,@Ri間接位址內(nèi)容XOR至A累加器內(nèi)11XRLA,#data8位元資料XOR至A累加器內(nèi)21XRLdirect,AA累加器內(nèi)容XOR至直接位址內(nèi)21XRLdirect,#data8位元資料XOR至直接位址內(nèi)32CLRA清除A累加器11CPLAA累加器內(nèi)容取補數(shù)11RLAA累加器內(nèi)容向左旋轉(zhuǎn)1位元11RLCAA累加器與進位CF一起左旋1位元11RRAA累加器內(nèi)容向右旋轉(zhuǎn)1位元11RRCAA累加器與進位CF一起右旋1位元11SWAPAA累加器的高低4位元互相交換11邏輯運算指令
資料轉(zhuǎn)移指令指令說明位元組機械週期MOVA,Rn將暫存器內(nèi)容移入A累加器11MOVA,direct將直接位址內(nèi)容移入A累加器21MOVA,@Ri暫存器間接位址內(nèi)容移入A累加器11MOVA,#data將8位元常數(shù)資料移入A累加器21MOVRn,A將A累加器內(nèi)容移入暫存器11MOVRn,direct將直接位址內(nèi)容移入暫存器22MOVRn,#data將8位元常數(shù)資料移入暫存器21MOVdirect,A將A累加器內(nèi)容移入直接位址內(nèi)21MOVdirect,Rn將暫存器內(nèi)容移入直接位址內(nèi)22MOVdirect,direct將直接位址內(nèi)容移入直接位址內(nèi)32MOVdirect,@Ri暫存器間接定址內(nèi)容移入直接位址內(nèi)22MOVdirect,#data將8位元常數(shù)資料移入直接位址內(nèi)32MOV@Ri,A將A累加器內(nèi)容移入間接位址內(nèi)11MOV@Ri,direct將直接位址內(nèi)容移入間接位址內(nèi)22MOV@Ri,#data將8位元常數(shù)資料移入間接位址內(nèi)21MOVDPTR,#data16將16位元常數(shù)資料移入資料指標(biāo)內(nèi)32MOVCA,@A+DPTR將程式記憶體內(nèi)容移入A累加器內(nèi)12MOVCA,@A+PC將程式記憶體內(nèi)容移入A累加器內(nèi)12MOVXA,@Ri將外部資料記憶體內(nèi)容移入A累加器12MOVXA,@DPTR將外部資料記憶體內(nèi)容移入A累加器12MOVX@Ri,A將A累加器內(nèi)容移入外部資料記憶體12MOVX@DPTR,A將A累加器內(nèi)容移入外部資料記憶體12PUSHdirect將直接位址內(nèi)容存入堆疊內(nèi)22POPdirect自堆疊頂端取出資料存入直接位址內(nèi)22XCHA,RnA累加器內(nèi)容與暫存器內(nèi)容互換11XCHA,directA累加器內(nèi)容與直接位址內(nèi)容互換21XCHA,@RiA累加器內(nèi)容與間接位址內(nèi)容互換11XCHDA,@Ri累加器與間接位址低4位元內(nèi)容互換11資料轉(zhuǎn)移指令布林運算指令指令說明位元組機械週期CLRC清除進位旗標(biāo)CF=011CLRbit清除位元位址內(nèi)容21SETBC設(shè)定進位旗標(biāo)CF=111SETBbit設(shè)定位元位址內(nèi)容21CPLC將進位旗標(biāo)CF內(nèi)容取補數(shù)11CPLbit將位元位址內(nèi)容取補數(shù)21ANLC,bit將位元位址內(nèi)容AND至CF內(nèi)21ANLC,/bit將位元位址內(nèi)容取補數(shù)AND至CF內(nèi)22ORLC,bit將位元位址內(nèi)容OR至CF內(nèi)22ORLC,/bit將位元位址內(nèi)容取補數(shù)OR至CF內(nèi)22MOVC,bit將位元位址內(nèi)容移入進位旗標(biāo)CF內(nèi)21MOVbit,C將進位旗標(biāo)CF移入位元位址內(nèi)22JCrel若CF=1,則跳至相對位址rel22JNCrel若CF=0,則跳至相對位址rel22JBbit,rel若(bit)=1,則跳至相對位址rel32JNBbit,rel若(bit)=0,則跳至相對位址rel32JBCbit,rel若(bit)=1,則跳至相對位址rel,同時清除位元位址bit內(nèi)容32布林運算指令程式分支指令指令說明位元組機械週期ACALLaddrl1副程式呼叫(可定址2KB範(fàn)圍)22ACALLaddrl6副程式呼叫(可定址64KB範(fàn)圍)32RET自副程式返回主程式12RETI自中斷副程式返回主程式12AJMPaddrl1絕對跳躍(2KB範(fàn)圍)32LJMPaddrl6遠程跳躍(64KB範(fàn)圍)32SJMPrel相對跳躍(-128byte~+127byte)22JMP@A+DPTR間接跳躍(64KB範(fàn)圍)12JZrel若A=0,則跳至rel位址範(fàn)圍-128byte~+127byte22JNZrel若A≠0,則跳至rel位址範(fàn)圍-128byte~+127byte22CJNEA,direct,rel若A累加器與直接位址內(nèi)容不相等,則跳至rel位址範(fàn)圍-128byte~+127byte32CJNEA,#data,rel若A≠data,則跳至rel位址,範(fàn)圍-128byte~+127byte32CJNERn,#data,rel若暫存器內(nèi)容≠data,則跳至rel位址範(fàn)圍-128byte~+127byte32CJNE@Ri,#data,rel若間接位址內(nèi)容≠data,則跳至rel位址,範(fàn)圍-128byte~+127byte32DJNZRn,rel暫存器內(nèi)容減1,若不等於0,則跳至rel位址22DJNZdirect,rel直接位址內(nèi)容減1,若不等於0,則跳至rel位址32NOP無動作11程式分支指令資料表示形式:以資料的轉(zhuǎn)移為例,來說明直接資料、直接定址位址、間接定址位址的差異:1.
假設(shè)Acc的值為0,執(zhí)行直接資料轉(zhuǎn)移。Mov A #FFH;十六進制值表示法(或 Mov A #255);十進制值表示法則Acc的值變?yōu)?552.
假設(shè)Acc的值為0,執(zhí)行直接定址位址之資料轉(zhuǎn)移。Mov A #40H(或 Mov A #64)則Acc的值變?yōu)?553.
假設(shè)Acc的值為0,且記憶體位址40H的內(nèi)容FFH與暫存器R0的內(nèi)容為40H。Mov A @R0則Acc的值變?yōu)?55以上三種資料轉(zhuǎn)移方式都會使Acc變?yōu)?55以圖示來說明其差異:直接資料
AccFFH(或255)Acc間接定址位址
(暫存器)(內(nèi)容)R0:40H(位址)(內(nèi)容)40H:FFH直接定址定址
Acc(位址)(內(nèi)容)40H:FFH
第四章暫存器與資料記憶體§4-1累加器累加器(Accumulator)一般以A或Acc簡稱,是使用頻率最高的暫存器,許多算數(shù)運算、邏輯運算及資料搬移等工作,都需要藉由累加器來完成。
§4-2工作暫存器在8051中共有8個8位元(bits)工作暫存器,分別為0、1、2、3、4、5、6及7。這些工作暫存器可用以輔助累加器在運算上的不足,如儲存即將被處理的資料,或已完成的結(jié)果及迴圈數(shù)值控制等。由於在撰寫較複雜程式尤其是呼叫副程式時,為了避免工作暫存器之內(nèi)容遭到破壞,在8051中提供四個暫存器庫,分別為RB、RB1、RB及RB3,每一個暫存器庫均有個8位元工作暫存器,並可經(jīng)由工作暫存器0~7來存取,但程式執(zhí)行中只能選擇四個暫存器庫中的一個暫存器來使用,而其選擇方法則可透過設(shè)定RS1與RS0此兩位元來選擇:
RS1RS0暫存器庫位址
00RB000H~07H
01RB108H~0FH
10RB210H~17H
11RB318H~1FH
當(dāng)8051選擇使用RB0時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址00H~07H的內(nèi)容;而使用RB1時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址08H~0FH的內(nèi)容;而使用RB2時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址10H~17H的內(nèi)容;而使用RB3時,程式中存取R0~R7暫存器的值,實際上是在存取資料記憶體位址18H~1FH的內(nèi)容。所以在複雜程式中,主程式與副程式可分配使用不同暫存器庫,即可避免暫存器的值被破壞?!?-3輸出/輸入埠暫存器8051具有4個8位元(bits)的輸出輸入埠,經(jīng)由這四個輸出輸入埠與外界進行資料交換因此在8051內(nèi)部用個暫存器來記錄輸出/輸入接腳的狀態(tài),分別為資料記憶體80H、90H、A0H、B0H等四個位元組(byte),並一輸出/輸入埠分別命名為P0、P1、P2及P3。當(dāng)軟體程式對輸出輸入埠P0~3作輸出/輸入的動作,即是對80H、90H、A0H及B0H等四個位元組作寫入/讀出的動作。§4-4資料記憶體8051的記憶體可分為兩大部份,一是程式記憶體,即是使用者撰寫軟體程式的存放記憶體區(qū)塊;另一是資料記憶體,是用以存放程式執(zhí)行結(jié)果所使用的記憶體。而在8051中暫存器與資料記憶體則是結(jié)合在一起,均存放在資料記憶體中,及結(jié)構(gòu)如下圖所示:SFR的內(nèi)部結(jié)構(gòu)F8
FFF0B
F7E8
EFE0ACC
E7D8
DFD0PSW
D7C8
CFC0
C7B8IP
BFB0P3
B7A8IE
AFA0P2
A798SCONSBUF
9F90P1
9788TCONTMODTLOTL1TH0TH1
8F80P0SPDPL
PCON87此行記憶體位元組可做位元定址。在SFR內(nèi)部結(jié)構(gòu)圖中可以發(fā)現(xiàn)累加器Acc、四個輸出/輸入暫存器0、1、2及P3。其他暫存器的功能簡介如下:B:用於乘、除法中所使用到之暫存器。PSW(ProgramStatusWord):程式狀態(tài)字元暫存器。IP(InterruptPriorityRegister):中斷優(yōu)先暫存器。IE(InterruptEnableRegister):中斷致能暫存器。SCON(SerialPortControlRegister):串列埠控制暫存器。SBUF(SerialPortBuffer):串列埠資料緩衝器。TCON(Timer/CounterControlRegister):計時/計數(shù)控制暫存器。TMOD(Timer/CounterModeControlRegister):計時/計數(shù)模式控制暫存器。TL0:Timer016位元計時/計數(shù)直之低8位元TL1:Timer116位元計時/計數(shù)直之低8位元TH0:Timer016位元計時/計數(shù)直之高8位元TH1:Timer116位元計時/計數(shù)直之高8位元SP(StackPointer):堆疊指標(biāo)暫存器。DPL:DPTR(DataPointer)資料指標(biāo)暫存器16位元值之低8位元值DPH:DPTR(DataPointer)資料指標(biāo)暫存器16位元值之高8位元值PCON(PowerControlRegister):電源控制暫存器。SFR內(nèi)各暫存器的值在8051重置(Reset)後,會自動設(shè)如下:暫存器二進位表示值*Acc00000000*B00000000*PSW00000000SP00000111DPTRDPHDPL
0000000000000000*P011111111*P111111111*P211111111*P311111111IPXXXX0000IE0XX00000TMOD00000000*TCOM00000000TH000000000TL000000000TH100000000TL100000000*SCON00000000SBUFXXXXXXXXPCONHMOS0XXXXXXXCHMOS0XXX0000X:未定*:可位元定址另外在資料記憶體中,亦可以位元定址00H~7共248個位元位址,其在記憶中之位址如下圖:F0H
F7F6F5F4F3F2F1F0BE0H
E7E6E5E4E3E2E1E0AccD0H
CYD7ACD6F0D5RS1D4RS0D30VD2D1PD0PSWB8H
---PSBCPT1BBPX1BAPT0B9PX0B8IPB0H
B7B6B5B4B3B2B1B0P3A8H
AF--ESACET1ABEX1AAET0A9EX0A8IEA0H
A7A6A5A4A3A2A1A0P298H
SM09FSM19ESM29DREN9CTB89BRB89ATI99RI98SCON90H
9796959493929190P188H
TF18FTR18ETF08DTR08CIE18BIT18AIE089IT088TCON80H
8786858483828180P07FH∫30H一般資料存放區(qū)或堆疊區(qū)
2FH
7F7E7D7C7B7A7978
2EH
|
|
2DH
|
|
2CH
|
|
2BH
|
|
2AH
|
|
29H
|
|
28H
|
|
27H
|
|
26H
|
|
25H
2F------28
24H
27------20
23H
1F1E1D1C1B1A1918
22H
17------10
21H
0F------08
20H
0706050403020100
RB3
RB2
RB1
RB0
在上圖表中,最左側(cè)為可位元定址記憶體的位址;中間數(shù)字代表可畏原定址的位元位址,其中位元位址上之文字即為該位元的名稱;最右側(cè)為暫存器的名稱。在位原定址使用上,8051提供具彈性的使用方法,例如:1.
將位址20H的第0Bit設(shè)定為1,可以寫成下面兩種方式:SETP00H;位元定址SETB20H.0;第20H位元組的第0位元2.
將P0的第3Bit清除為0,可以寫成下面三種方式:CLR83H;位元位址CLR80H.3;第80H位元組的第3位元CLRP0.3;P0暫存暫存器的第3位元3.
將IT0位元的值反相,可以寫成下面四種方式:CPL88H;位元位址CPL88H.0;第88位元組的第0位元CPLIT0;位元名稱CPLTCON.0;TCON暫存器的第0位元
第五章8051基本電路與輸出輸入實例§5-1基本電路8051單晶片是同步式的順序邏輯系統(tǒng),整個系統(tǒng)的工作完全是依賴系統(tǒng)內(nèi)部的時脈信號,用以來產(chǎn)生各種動作週期及同步信號。在8051單晶片中已內(nèi)建時脈產(chǎn)生器,在使用時只需接上石英振盪晶體及電容就可以讓系統(tǒng)產(chǎn)生正確的時脈信號。為方便說明及應(yīng)用,對於往後章節(jié)中之實例均利用下列之基本硬體時脈振盪電路?;居搀w時脈振盪電路圖§5-2資料的輸出實例下圖是本例的電路圖:電路圖程式1:以邏輯旋轉(zhuǎn)指令,輸出P0到P3之走馬燈。;
;
本程式以P0到P3為輸出
程式下載
;
;
應(yīng)用指令:
;
旋轉(zhuǎn)指令RL
;
互斥或指令XRL
;
包括進位旗標(biāo)之右旋轉(zhuǎn)指令RLC
;
邏輯相反指令CPL
;
;
動作:當(dāng)LED全亮?xí)r則逐點暗掉,當(dāng)LED全暗時則逐點亮起
;
說明:暫存器R0用以控制P0到P3為全亮或全暗,R1用以控制目前掃描的位置
;
ORG00H
JMPSTART
;規(guī)避00H至2FH間之中斷向量執(zhí)行位址
ORG30H
;
MOVSP,#30H
;將堆疊指標(biāo)重新指向
MOVA,#00H
MOVP3,A
;輸出資料至埠3
CALLDELAY
MOVP2,A
;輸出資料至埠2
CALLDELAY
MOVP1,A
;輸出資料至埠1
CALLDELAY
MOVP0,A
;輸出資料至埠0
CALLDELAY
START:
MOVA,#01H
RT0:
MOVR1,A
XRLA,P0
;與埠0執(zhí)行互斥或
MOVP0,A
;輸出資料至埠0
CALLDELAY
;呼叫0.2秒延遲副程式
MOVA,R1
CLRC
;清除進位旗標(biāo)
RLCA
;與進位旗標(biāo)一起向左旋轉(zhuǎn)
JNCRT0
;若進位旗標(biāo)不為0則跳回再次執(zhí)行
MOVA,#01H
RT1:
MOVR1,A
XRLA,P1
;與埠1執(zhí)行互斥或
MOVP1,A
;輸出資料至埠1
CALLDELAY
;呼叫0.2秒延遲副程式
MOVA,R1
CLRC
;清除進位旗標(biāo)
RLCA
;與進位旗標(biāo)一起向左旋轉(zhuǎn)
JNCRT1
;若進位旗標(biāo)不為0則跳回再次執(zhí)行
MOVA,#01H
RT2:
MOVR1,A
XRLA,P2
;與埠2執(zhí)行互斥或
MOVP2,A
;輸出資料至埠2
CALLDELAY
;呼叫0.2秒延遲副程式
MOVA,R1
CLRC
;清除進位旗標(biāo)
RLCA
;與進位旗標(biāo)一起向左旋轉(zhuǎn)
JNCRT2
;若進位旗標(biāo)不為0則跳回再次執(zhí)行
MOVA,#01H
RT3:
MOVR1,A
XRLA,P3
;與埠3執(zhí)行互斥或
MOVP3,A
;輸出資料至埠3
CALLDELAY
;呼叫0.2秒延遲副程式
MOVA,R1
CLRC
;清除進位旗標(biāo)
RLCA
;與進位旗標(biāo)一起向左旋轉(zhuǎn)
JNCRT3
;若進位旗標(biāo)不為0則跳回再次執(zhí)行
JMPSTART
DELAY:
MOVR5,#10
;延遲時間約為R5*20mS
D1:
MOVR6,#40
D2:
MOVR7,#249
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END程式2:以查表法,輸出P0到P3之走馬燈。;
;
本程式以P0到P3為輸出(查表法運用)
程式下載
;
;
應(yīng)用指令:
;
BD虛指令用以定義資料
;
間接資料指標(biāo)暫存器DPTR之設(shè)定與索引定指法應(yīng)用
;
比較是否相等指令CJNE,若不等則跳躍
;
暫存器累加1指令
;
;
動作:LED逐一亮起後再逐一滅掉
;
說明:利用間接資料指標(biāo)暫存器DPTR讀取資料庫之資料並顯示在各輸出埠上
;
ORG00H
JMP
START
;規(guī)避00H至2FH間之中斷向量執(zhí)行位址
ORG
30H
;
MOV
SP,#30H
;將堆疊指標(biāo)重新指向
START:
MOV
A,#00
MOV
P3,A
;輸出資料至埠3
CALL
DELAY
;呼叫0.2秒延遲副程式
MOV
P2,A
;輸出資料至埠2
CALL
DELAY
;呼叫0.2秒延遲副程式
MOV
P1,A
;輸出資料至埠1
CALL
DELAY
;呼叫0.2秒延遲副程式
MOV
P0,A
;輸出資料至埠0
CALL
DELAY
;呼叫0.2秒延遲副程式
LOOP:
MOV
DPTR,#DAT
;載入資料DAT之位址至資料指標(biāo)暫存器DPTR中
RT0:
MOV
A,#0
MOVC
A,@A+DPTR
;載入DPTR所指位址之資料至累積器A中
MOV
P0,A
;輸出資料至埠0
CALL
DELAY
;呼叫0.2秒延遲副程式
INC
DPTR
;將DPTR加1,即用於指向下一筆資料
CJNE
A,#FFH,RT0
;比較A是否為值FFH,若否則跳回RT0重新執(zhí)行
RT1:
MOV
A,#0
MOVC
A,@A+DPTR
;載入DPTR所指位址之資料至累積器A中
MOV
P1,A
CALL
DELAY
INC
DPTR
CJNE
A,#FFH,RT1
RT2:
MOV
A,#0
MOVC
A,@A+DPTR
;載入DPTR所指位址之資料至累積器A中
MOV
P2,A
CALL
DELAY
INC
DPTR
CJNE
A,#FFH,RT2
RT3:
MOV
A,#0
MOVC
A,@A+DPTR
;載入DPTR所指位址之資料至累積器A中
MOV
P3,A
CALL
DELAY
INC
DPTR
CJNE
A,#FFH,RT3
RT4:
MOV
A,#0
MOVC
A,@A+DPTR
;載入DPTR所指位址之資料至累積器A中
MOV
P3,A
;輸出資料至埠3
CALL
DELAY
;呼叫0.2秒延遲副程式
INC
DPTR
;將DPTR加1,即用於指向下一筆資料
CJNE
A,#0,RT4
;比較A是否為值0,若否則跳回RT4重新執(zhí)行
RT5:
MOV
A,#0
MOVC
A,@A+DPTR;載入DPTR所指位址之資料至累積器A中
MOV
P2,A
CALL
DELAY
INC
DPTR
CJNE
A,#0,RT5
RT6:
MOV
A,#0
MOVCA,@A+DPTR;載入DPTR所指位址之資料至累積器A中
MOV
P1,A
CALL
DELAY
INC
DPTR
CJNE
A,#0,RT6
RT7:
MOV
A,#0
MOVC
A,@A+DPTR;載入DPTR所指位址之資料至累積器A中
MOV
P0,A
CALL
DELAY
INC
DPTR
CJNE
A,#0,RT7
JMP
LOOP
DELAY:MOV
R5,#10
D1:
MOV
R6,#40
D2:
MOV
R7,#249
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
DAT:
DB
01H,03H,07H,0FH,1FH,3FH,7FH,FFH
DB
01H,03H,07H,0FH,1FH,3FH,7FH,FFH
DB
01H,03H,07H,0FH,1FH,3FH,7FH,FFH
DB
01H,03H,07H,0FH,1FH,3FH,7FH,FFH
DB
7FH,3FH,1FH,0FH,07H,03H,01H,00H
DB
7FH,3FH,1FH,0FH,07H,03H,01H,00H
DB
7FH,3FH,1FH,0FH,07H,03H,01H,00H
DB
7FH,3FH,1FH,0FH,07H,03H,01H,00H
END程式技巧說明:
在上列兩程式均將P0~P3做為輸出埠,程式中ORG為虛指令,用以告知編譯器將其下之程式,放置於程式記憶體中之位址。由於8051之中斷向量位址,如下圖,故程式撰寫時應(yīng)養(yǎng)成不使用這部分之記憶體。
中斷源中斷向量ResetTimer0 Timer1UART(TXD)UART(RXD)0000H0003H000BH0013H001BH0023H002BH首先,8051啟動後,須給予一Reset信號,則程式由0000H位址開始執(zhí)行,而程式中JMPSTART指令則是用以規(guī)避中斷向量,故ORG30H則指定另一程式記憶體放置起始點。
另外,CALLDELAY指令則是用以呼叫延遲副程式,而在副程式中是以RET做為結(jié)束,執(zhí)行到RET後則在跳回主程式中繼續(xù)執(zhí)行?!?-3資料的輸入實例:下圖示本例之電路圖:電路圖程式:以P3.7為切換開關(guān)設(shè)定不同顯示P0~P2之走馬燈模式,當(dāng)P3.7為0時P0到P2為全亮或全暗,當(dāng)全亮則逐點暗掉,若全暗則會逐點亮起。P3.0~P3.6則用以設(shè)定走馬燈執(zhí)行的速度。;
;
本程式以P0到P2為輸出,P3為輸入,
程式檔
;
;
應(yīng)用指令:
;
旋轉(zhuǎn)指令RL
;
互斥或指令XRL
;
堆疊PUSH和POP
;
;
動作:以P3.7為切換開關(guān)設(shè)定不同顯示方式,
;
當(dāng)P3.7為0時LED全亮?xí)r則逐點暗掉,當(dāng)LED全暗時則逐點亮起,
;
P3.0~6為延遲時間長短控制
;
;
說明:暫存器R0用以控制P0到P3為全亮或全暗,R1用以控制目前掃描的位置
;
暫存器R2用以儲存延遲時間之設(shè)定
;
ORG00H
JMPINIT
;規(guī)避00H至2FH間之中斷向量執(zhí)行位址
ORG30H
INIT:
MOVSP,#30H
;將堆疊指標(biāo)重新指向
MOVR2,#25
;暫存器R2設(shè)定初始延遲時間25*20mS
MOVA,#00H
;將埠2至埠0設(shè)定為全滅
MOVR3,A
MOVA,R3
MOVP2,A
CALLDELAY
MOVA,R3
MOVP1,A
CALLDELAY
MOVA,R3
MOVP0,A
CALLDELAY
START:
MOVR2,#25
;暫存器R5設(shè)定初始延遲時間25*20mS
MOVA,R3
CPLA
MOVR3,A
MOVP2,A
CALLDELAY
MOVA,R3
MOVP1,A
CALLDELAY
MOVA,R3
MOVP0,A
CALLDELAY
LOOP:
MOVA,P3
;讀入埠3之設(shè)定資料
CPLA
;將資料作反相邏輯運算
PUSHA
;將累積器A資料存入堆疊中
ANLA,#7FH
;將累積器A資料與值7FH做邏輯AND運算
MOVR2,A
;將累積器A資料存入R5中做為延遲時間之設(shè)定值
MOVA,#01H
RT0:
MOVR1,A
XRLA,P0
MOVP0,A
CALLDELAY
MOVA,R1
CLRC
RLCA
JNCRT0
MOVA,#01H
RT1:
MOVR1,A
XRLA,P1
MOVP1,A
CALLDELAY
MOVA,R1
CLRC
RLCA
JNCRT1
MOVA,#01H
RT2:
MOVR1,A
XRLA,P2
MOVP2,A
MOVR3,A
CALLDELAY
MOVA,R1
CLRC
RLCA
JNCRT2
POPA
;將之前堆疊中資料取出
JBA.7,LOOP
;若累積器A為1則跳回到LOOP重新執(zhí)行
JMPSTART
;若累積器A為0則跳回到START重新執(zhí)行
DELAY:
MOVA,R2
;載入R2之延遲時間設(shè)定
MOVR5,A
JNZD1
;若累積器A不為0則跳到D0執(zhí)行
MOVR5,#25
;當(dāng)R5為0時則重設(shè)延遲時間為25*20mS
D1:
MOVR6,#40
D2:
MOVR7,#249
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END
第六章計時/計數(shù)器
§6-1計時/計數(shù)器的功能在8051單晶片的內(nèi)部有2個計時/計數(shù)器,可接收外界輸入的驅(qū)動信號,而能產(chǎn)生一個輸出信號以供讀取外界輸入信號發(fā)生的次數(shù)。如果這個外界輸入信號代表某一事件發(fā)生的次數(shù),則計時/計數(shù)器即是在作事件的計數(shù);如果這個外界輸入信號是一個固定頻率的信號,則計時/計數(shù)器則可用以作計算時間的工作。因此,8051單晶片的計時/計數(shù)器為一體兩面,完全取決於驅(qū)動信號的特質(zhì)而定。
§6-2計時/計數(shù)器的驅(qū)動與使用Timer0與Timer1是8051單晶片的兩個16位元計時/計數(shù)器,其計數(shù)值是存放於兩個8位元暫存器中,Timer0的計數(shù)是由TH0(Highbyte)及TL0(Lowbyte)來執(zhí)行,Timer1的計數(shù)是由TH1(Highbyte)及TL1(Lowbyte)來執(zhí)行。其位址分別位於SFR內(nèi)部記憶體的8CH、8AH、8DH及8BH中,如第四章之SFR記憶體圖所示。在程式撰寫上,編輯器允許直接使用暫存器的名稱TH0、TL0、TH1及TL1,亦可直接使用其暫存器位址,來作直接定址。在使用8051單晶片計時/計數(shù)器前須先設(shè)定計時/計數(shù)器模式控制暫存器(Timer/counterModeControlRegister,簡稱TMOD)及計時/計數(shù)器控制暫存器(Timer/counterControlRegister,簡稱TCON)兩個暫存器,此二暫存器分別用來決定Timer0及Timer1的工作模式及中斷執(zhí)行的控制設(shè)定。
§6-3TMOD模式控制暫存器之設(shè)定Timer的計時時脈來源有兩種,一種是8051單晶片的內(nèi)部時脈,一種是從T0與T1接腳所輸入的外部時脈。在8051單晶片接收時脈計時/計數(shù)時,會在每個機械週期值由〝1〞變?yōu)楱?〞時,將Timer的值累加1。而8051單晶片對時脈來源的選擇是由TMOD暫存器中的C/T位元來決定。當(dāng)C/T設(shè)定為1時,Timer使用外部時脈;當(dāng)C/T設(shè)定為0時,Timer使用內(nèi)部時脈。TMOD的結(jié)構(gòu)如下:TMOD檔當(dāng)TCON暫存器中的TR0(或TR1)為1時,則Timer0(或Timer1)由TMOD暫存器的GATE位元與INT0(或INT1)接腳構(gòu)成Timer的軟體控制;當(dāng)TCON暫存器中的TR0(或TR1)為0時,則Timer0(或Timer1)將停止計時/計數(shù)。若以布林帶數(shù)表示則為Y=(GATE+INTx)。Timer0與Timer1一共有四種模式,是由TMOD暫存器中的M0與M1位元來設(shè)定。以下為四種工作模式:1.模式0:(M1=M0=0,13位元計時/計數(shù)器)將Timer設(shè)定為模式0時,會形成一個13位元計時/計數(shù)器,計時/計數(shù)暫存器是由THx的8位元與TLx的低5位元所組成。當(dāng)TR0(或TR1)設(shè)定為1時,計時/計數(shù)器開始作動,若13個位元由全部為〝1〞變?yōu)槿繛楱?〞時,則會將Timer溢位旗號TFx設(shè)定為1。結(jié)合IE暫存器(中斷致能暫存器,InterruptEnableRegister)致能Timer0(或Timer1),則8051單晶片會擷取TF0(或TF1)的資料,以偵測是否要產(chǎn)生中斷。當(dāng)8051單晶片執(zhí)行中斷副程式時會自動將TF0(或TF1)清除為0。將在下一章介紹8051單晶片中斷服務(wù)。Timer工作模式0時,13位元計時/計數(shù)值最大為8192(2的13次方),因此,THx的值應(yīng)為計時/計數(shù)值除以32的商,TLx的值則為計時/計數(shù)值除以32的餘數(shù)。若計時/計數(shù)值為5000時,即TL0=#(8192-5000)×MOD×32TH0=#(8192-5000)/32則程式可寫為:MOVTL0,#(8192-5000)×MOD×32MOVTH0,#(8192-5000)/322.模式1:(M1=0,M0=1,16位元計時/計數(shù)器)模式0與模式1的動作幾乎相同,兩者之間的差別在於Timer工作在模式1時是16位元的計時/計數(shù)器。模式1計時/計數(shù)最大值為65536(2的16次方),因此,THx的值應(yīng)為計時/計數(shù)值除以256的商,TLx的值則為計時/計數(shù)值除以256的餘數(shù)。若計時/計數(shù)值為5000時,即TH0=#(65536-5000)/256TL0=#(65536-5000)×MOD×256則程式可寫為:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)×MOD×256或?qū)懗桑篗OVTH0,#>(65536-5000)MOVTL0,#<(65536-5000)其中,〝<〞符號是通知編譯器將後面的值取16位元的低位元組,而〝>〞符號是通知編譯器將後面的值取16位元的高位元組。3.模式2:(M1=1,M0=0,8位元自動重新載入計時器)將Timer設(shè)定成模式2時,會形成一個8位元自動重新載入計時/計數(shù)器。當(dāng)計時/計數(shù)完畢後會產(chǎn)生TFx溢位旗號設(shè)定為1,並會將THx的值自動載入TLx中,因此,THx的值須事先由軟體設(shè)定。此模式適合用在需要固定時間的計時。模式2計時/計數(shù)最大值為256(2的8次方),因此計時/計數(shù)值須同時存放於THx與TLx中。若計時/計數(shù)值為200時,即TH0=#(256-200)TL0=#(256-200)則程式可寫成MOVTH0,#(256-200)MOVTL0,#(256-200)4.模式3:(M1=1,M0=1,兩個8位元的計時器)Timer在模式3時,會將TH0與TL0分成兩個獨立的8位元計時器。TL0的計時器使用Timer0的控制信號,即C/T、GATE、TR0、INT0與TF0。而TH0則為計數(shù)機械週期的計數(shù)器,且使用Timer1的TR1及TF1做控制信號,因此TH0是控制Timer1計時/計數(shù)器。若使用Timer0的TL0計時/計數(shù)值為200時,即TL0=#(256-200)則程式可寫成MOVTL0,#(256-200)
TMOD暫存器在各種情形下的設(shè)定值:1.Timer0做計時器模式功能內(nèi)部控制外部控制013位元計時器00000000B00001000B116位元計時器00000001B00001001B28位元自動重新載入00000010B00001010B3兩個8位元計時器00000011B00001011B
2.Timer0做計數(shù)器模式功能內(nèi)部控制外部控制013位元計數(shù)器00000100B00001100B116位元計數(shù)器00000101B00001101B28位元自動重新載入00000110B00001110B3一個8位元計數(shù)器00000111B00001111B
3.Timer1做計時器模式功能內(nèi)部控制外部控制013位元計時器00000000B10000000B116位元計時器00010000B10010000B28位元自動重新載入00100000B10100000B3(TH0計時器)00110000B10110000B
4.Timer1做計數(shù)器模式功能內(nèi)部控制外部控制013位元計數(shù)器01000000B11000000B116位元計數(shù)器01010000B11010000B28位元自動重新載入01100000B11100000B3無--------
§6-4TCON控制暫存器之設(shè)定TCON為Timer的計時控制暫存器,其結(jié)構(gòu)如下:
TCON之圖
§6-5計時/計數(shù)器實例1.利用模式1做為計時,其電路圖如下:
電路圖
計時模式1程式;
;
本程式以計時方式掃描驅(qū)動,以P0.0為0.05秒的閃爍,
;
P1到P3分別為秒分時的輸出
;
;
應(yīng)用指令:
;
位元設(shè)定指令SETB用以設(shè)定位元為1
;
比較跳躍指令CJNE若暫存器與參數(shù)值比較不相等實則跳躍
;
位元為1時清除並跳躍指令JBC若暫存器位元為1則清除並跳躍
;
;
動作:P0.0之LED閃爍20Hz,秒分時以十進制二進位法顯示
;
說明:利用Timer0做0.05秒計時,並為求執(zhí)行時間控制,進位累加.
;
顯示秒.顯示分與顯示時分四次迴路執(zhí)行,以求可分別在0.05秒內(nèi)
;
執(zhí)行完畢
;
ORG00H
JMPSTART
ORG30H
MOVSP,#30H
;將堆疊指標(biāo)重新指向
START:
MOVTMOD,#01
;設(shè)定16位元計時模式
MOVP0,#0
;將埠0設(shè)定為全滅
MOVR6,#0
;頻率記數(shù)初值設(shè)定為0
MOVR0,#0
;時R2分R1秒R0初值設(shè)定為0
MOVR1,#0
MOVR2,#0
LOOP:
MOVTL0,#<(65536-46079)
;儲存16位元之低8位元
MOVTH0,#>(65536-46079)
;儲存16位元之高8位元
SETBTR0
;啟動計時
CJNER6,#20,SHOW
MOVR6,#0
SECINCR0
CJNER0,#60,WAIT
MOVR0,#0
INCR1
CJNER1,#60,WAIT
MOVR1,#0
INCR2
CJNER2,#12,WAIT
MOVR2,#0
JMPWAIT
SHOW:
CJNER6,#10,SHOW1
MOVA,R0
CALLBCD
;呼叫轉(zhuǎn)換為二進位時進制副程式
MOVP1,A
SHOW1:
CJNER6,#11,SHOW2
MOVA,R1
CALLBCD
;呼叫轉(zhuǎn)換為二進位時進制副程式
MOVP2,A
SHOW2:
CJNER6,#12,WAIT
MOVA,R2
CALLBCD
;呼叫轉(zhuǎn)換為二進位時進制副程式
MOVP3,A
WAIT:
JBCTF0,OVERFLOW
;測試是否計時完畢產(chǎn)生溢位
JMPWAIT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國電信國際限公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025中國儲備糧管理集團限公司招聘700人高頻重點提升(共500題)附帶答案詳解
- 2025下半年貴州省六盤水市事業(yè)單位及國企業(yè)招聘應(yīng)征入伍大學(xué)畢業(yè)生164人高頻重點提升(共500題)附帶答案詳解
- 2025下半年湖南岳陽市城市建設(shè)投資集團限公司招聘15人高頻重點提升(共500題)附帶答案詳解
- 2025下半年浙江溫州市甌海區(qū)事業(yè)單位招聘工作人員23人高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川綿陽平武縣招聘事業(yè)單位專業(yè)技術(shù)人員6人歷年高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川省瀘州瀘縣事業(yè)單位招聘95人歷年高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川巴中南江縣事業(yè)單位考試招聘72人高頻重點提升(共500題)附帶答案詳解
- 2025上海煙草集團招聘高頻重點提升(共500題)附帶答案詳解
- 2025上半年福建泉州豐澤城市建設(shè)集團限公司南埔山片區(qū)項目招聘高頻重點提升(共500題)附帶答案詳解
- 最新營銷中心物業(yè)服務(wù)可視化操作指引說明詳解新實用手冊
- 食材配送投標(biāo)服務(wù)方案
- 醫(yī)療醫(yī)學(xué)醫(yī)生護士工作PPT模板
- 排污許可證守法承諾書(2篇)
- 矩形頂管施工方案28
- 液壓轉(zhuǎn)向器廠總平面布置課程設(shè)計
- 說明性語段的壓縮(課堂PPT)
- 造紙化學(xué)品及其應(yīng)用
- GB_T 13234-2018 用能單位節(jié)能量計算方法(高清正版)
- 裝配式鋼板筒倉安裝技術(shù)經(jīng)驗規(guī)程
- 拔除智齒病歷1頁
評論
0/150
提交評論