版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1C單片機(jī)的結(jié)構(gòu)及原理實(shí)用2.180C51單片機(jī)的結(jié)構(gòu)與原理
2.1.180C51單片機(jī)系列
Intel公司推出的80C51是MCS-51系列單片機(jī)中以CHMOS為生產(chǎn)工藝的一個(gè)典型產(chǎn)品;其它廠商以8051為基核開發(fā)出的CMOS工藝單片機(jī)產(chǎn)品統(tǒng)稱為80C51系列。當(dāng)前常用的80C51系列單片機(jī)主要產(chǎn)品有:
1、Intel公司的:80C31、80C51、87C51、80C32、80C52、87C52等。
2、ATMEL公司的:89C51、89C52、89C2051、89S51等。
3、Philips公司的80C51、80C550、80C552系列。
4、Motorola公司M68HC05系列。
5、華邦公司的W78C51、W77C51高速低價(jià)系列。
6、Maxim公司的DS89C420高速(50MIPS)系列。
7、Cygnal公司的C8051F系列高速SOC單片機(jī)。
8、ADI公司的ADμC8xx高精度ADC系列。
9、LG公司的GMS90/97低壓高速系列。
第1頁(yè)/共89頁(yè)2.1.280C51單片機(jī)的結(jié)構(gòu)
80C51單片機(jī)的結(jié)構(gòu)框圖如圖2-1所示,可以看出,在一塊芯片上集成了一個(gè)微型計(jì)算機(jī)的主要部件,它包括以下幾部分:
(1)8位CPU1個(gè)。(2)時(shí)鐘電路(振蕩電路和時(shí)序OSC)。(3)4KB程序存儲(chǔ)器(ROM/EPROM/Flsh),可外擴(kuò)展到64KB。(4)128B數(shù)據(jù)存儲(chǔ)器RAM,可外擴(kuò)展到64KB。(5)2個(gè)16位定時(shí)/計(jì)數(shù)器。(6)64KB總線擴(kuò)展控制電路。(7)4個(gè)8位并行I/O接口P0~P3。(8)1個(gè)全雙工異步串行I/O接口。(9)中斷系統(tǒng):5個(gè)中斷源,其中包括2個(gè)優(yōu)先級(jí)嵌套中斷。第2頁(yè)/共89頁(yè)第3頁(yè)/共89頁(yè)2.1.380C51單片機(jī)的內(nèi)部結(jié)構(gòu)
80C51單片機(jī)的內(nèi)部結(jié)構(gòu)如圖2-2所示,它由CPU、存儲(chǔ)器、I/O口及SFR(特殊功能寄存器)等組成。具體說(shuō)明如下:
1、80C51CPU80C51CPU即微處理器,是一8位CPU,是單片機(jī)的核心部件,是計(jì)算機(jī)的控制指揮中心。同微型計(jì)算機(jī)CPU類似,80C51內(nèi)部CPU由運(yùn)算器和控制器兩部分組成。
(1)運(yùn)算器組成:由算術(shù)運(yùn)算/邏輯運(yùn)算單元ALU(ArithmeticLogicUnit)為核心,由暫存器1、暫存器2、累加器ACC(Accumulator)、寄存器B及程序狀態(tài)寄存器PSW(ProgramStatusWord)組成。主要任務(wù):是完成算術(shù)運(yùn)算、邏輯運(yùn)算、位運(yùn)算和數(shù)據(jù)傳送等操作,運(yùn)算結(jié)果的狀態(tài)由程序狀態(tài)寄存器(PSW)保存。第4頁(yè)/共89頁(yè)圖2-280C51單片機(jī)的內(nèi)部結(jié)構(gòu)第5頁(yè)/共89頁(yè)
(2)控制器組成:由程序計(jì)數(shù)器(PC)、PC增1寄存器、指令寄存器(IR)、指令譯碼器(ID)、數(shù)據(jù)指針(DPTR)、堆棧指針(SP)、緩沖器及定時(shí)控制電路等組成。主要任務(wù):完成指揮控制工作,協(xié)調(diào)單片機(jī)各部分正常工作。
2、80C51的片內(nèi)存儲(chǔ)器
80C51的片內(nèi)存儲(chǔ)器與一般微機(jī)的存儲(chǔ)器的配置不同。一般微機(jī)的ROM和RAM安排在同一空間的不同范圍(稱為普林斯頓結(jié)構(gòu))。而80C51單片機(jī)的存儲(chǔ)器在物理上設(shè)計(jì)成程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)獨(dú)立的空間(稱為哈佛結(jié)構(gòu))。第6頁(yè)/共89頁(yè)2.1.480C51單片機(jī)的引腳及功能
80C51單片機(jī)的封裝是采用雙列直插式(DIP)封裝,引腳圖如圖2-3(a)所示。80C51的40個(gè)引腳及功能描述如下:
1、電源引腳(2根)
(1)VCC(40腳):電源端,接+5V電源。(2)VSS(20腳):接地端。
2、時(shí)鐘引腳(2根)
(1)XTAL1(19腳):晶體振蕩器接入的一個(gè)引腳。采用外部時(shí)鐘電路時(shí),此引腳應(yīng)接地。(2)XTAL2(18腳):晶體振蕩器接入的另一個(gè)引腳。使用外部時(shí)鐘時(shí),此引腳應(yīng)接外部時(shí)鐘的輸入端。
3、控制引腳(4根)
(1)RST/VPD(9腳):復(fù)位信號(hào)輸入引腳/備用電源輸入引腳。
說(shuō)明:當(dāng)RST引腳保持兩個(gè)機(jī)器周期的高電平后,就可以使80C51完成復(fù)位操作。該引腳的第二功能是VPD,即備用電源的輸入端,具有掉電保護(hù)功能。若在該引腳接+5V備用電源,在使用中若主電源VCC掉電,可保護(hù)片內(nèi)RAM中的信息不丟失。
第7頁(yè)/共89頁(yè)第8頁(yè)/共89頁(yè)
(2)ALE/PROG(30腳):地址鎖存允許信號(hào)輸出引腳/編程脈沖輸入引腳。
說(shuō)明:在系統(tǒng)擴(kuò)展時(shí),ALE用于控制把P0口輸出的低8位地址鎖存起來(lái),以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振fosc/6的固定頻率輸出的正脈沖(fosc代表振蕩器的頻率),因此,可作為外部時(shí)鐘或外部定時(shí)脈沖使用。該引腳的第二功能是對(duì)8751內(nèi)部4KBEPROM編程寫入時(shí),作為編程脈沖的輸入端。(3)EA/VPP(31腳):外部程序存儲(chǔ)器地址允許輸入信號(hào)引腳/編程電壓輸入信號(hào)引腳。
說(shuō)明:當(dāng)EA接高電平時(shí),CPU執(zhí)行片內(nèi)ROM指令,當(dāng)PC值超過(guò)0FFFH時(shí),將自動(dòng)轉(zhuǎn)去執(zhí)行片外ROM指令;當(dāng)EA接低電平時(shí),CPU只執(zhí)行片外ROM指令。該引腳的第二功能VPP是對(duì)8751片內(nèi)EPROM編程寫入時(shí),作為21V編程電壓的輸入端。(4)PSEN(29腳):片外ROM讀選通信號(hào)。
說(shuō)明:在讀片外ROM時(shí),為低電平(有效),以實(shí)現(xiàn)對(duì)片外ROM的讀操作。
第9頁(yè)/共89頁(yè)4、并行I/O引腳(32根,由4個(gè)8位口構(gòu)成)
其中:(1)P0.0~P0.7(39~32腳):一般的8位雙向I/O口引腳或數(shù)據(jù)/地址總線低8位復(fù)用引腳。
說(shuō)明:P0口即可作數(shù)據(jù)/地址總線使用,又可作一般的I/O口使用。當(dāng)CPU訪問(wèn)片外存儲(chǔ)器時(shí),P0口分時(shí)先作低8位地址總線,后作雙向數(shù)據(jù)總線,此時(shí),P0口就不能再作一般I/O口使用。(2)P1.0~P1.7(1~8腳):P1口作為一般的8位準(zhǔn)雙向I/O口使用。(3)P2.0~P2.7(21~28腳):一般8位準(zhǔn)雙向I/O口引腳或高8位地址總線引腳。
說(shuō)明:P2口即可作為一般的I/O口使用,也可作為片外存儲(chǔ)器的高8位地址總線,與P0口配合,組成16位片外存儲(chǔ)器單元地址,可訪問(wèn)64KB的存儲(chǔ)空間。(4)P3.0~P3.7(10~17腳):一般8位準(zhǔn)雙向I/O口引腳或第二功能引腳。
說(shuō)明:P3口除了作為一般的I/O口使用之外,每個(gè)引腳還具有第二功能,P3的8條口線都定義有第二功能,詳見(jiàn)表2-1(a)第10頁(yè)/共89頁(yè)表2-1P3口各引腳與第二功能表第11頁(yè)/共89頁(yè)2.280C51單片機(jī)的存儲(chǔ)器組織
80C51的存儲(chǔ)器在物理結(jié)構(gòu)為哈佛結(jié)構(gòu),它將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開,如圖2-4所示。從物理地址空間看,80C51單片機(jī)有四個(gè)存儲(chǔ)器地址空間,即片內(nèi)數(shù)據(jù)存儲(chǔ)器(簡(jiǎn)稱片內(nèi)RAM)、片內(nèi)程序存儲(chǔ)器(片內(nèi)ROM)、片外數(shù)據(jù)存儲(chǔ)器(片外RAM)和片外程序存儲(chǔ)器(片外ROM)。第12頁(yè)/共89頁(yè)
但從使用的角度來(lái)看,80C51的存儲(chǔ)器又分為三個(gè)邏輯空間,如圖2-5所示。
1、片內(nèi)外統(tǒng)一尋址的64KB程序存儲(chǔ)器空間,地址范圍為0000H~FFFFH(訪問(wèn)用指令MOVC)。
2、64KB的片外數(shù)據(jù)存儲(chǔ)器空間,地址范圍也為0000H~FFFFH(訪問(wèn)用指令MOVX)。
3、80C51的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM只有128B,地址范圍為00H~7FH;80C52的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM為256B,地址范圍為00H~FFH(訪問(wèn)用指令MOV)。第13頁(yè)/共89頁(yè)2.2.180C51單片機(jī)的程序存儲(chǔ)器ROM
80C51內(nèi)部有4KB的掩膜ROM。80C51的片外最多能擴(kuò)展64KB程序存儲(chǔ)器,片內(nèi)外的ROM是統(tǒng)一編址的。
80C51程序存儲(chǔ)器ROM空間地址分布圖如圖2-6(a)所示。
第14頁(yè)/共89頁(yè)
對(duì)圖2-6(a)ROM空間地址分布圖作如下說(shuō)明:
1、80C51片內(nèi)有4KB的ROM存儲(chǔ)單元,地址為0000H~0FFFH。
2、80C51片外最多可擴(kuò)60KB的ROM,地址為1000H~FFFFH。
第15頁(yè)/共89頁(yè)2.2.280C51ROM低地址特殊單元
80C51的程序存儲(chǔ)器低地址單元中有6個(gè)單元具有特殊功能,見(jiàn)圖2-6(b)所示,使用時(shí)應(yīng)予以注意其含義。
1、0000H~0002H:?jiǎn)纹瑱C(jī)復(fù)位后的程序入口地址
(3個(gè)單元)。
2、0003H~000AH:外部中斷0的中斷服務(wù)程序入口地址
(8個(gè)單元)。
3、000BH~0012H:定時(shí)器0的中斷服務(wù)程序入口地址
(8個(gè)單元)。
4、0013H~001AH:外部中斷1的中斷服務(wù)程序入口地址
(8個(gè)單元)。
5、001BH~0022H:定時(shí)器1的中斷服務(wù)程序入口地址
(8個(gè)單元)。
6、0023H~002AH:串行口的中斷服務(wù)程序入口地址
(8個(gè)單元)。第16頁(yè)/共89頁(yè)
具體應(yīng)用時(shí)注意:第一組特殊單元是0000H~0002H,3個(gè)單元不可能安排長(zhǎng)程序,因此,系統(tǒng)復(fù)位后(PC)=0000H,80C51單片機(jī)從0000H單元開始取指令執(zhí)行程序。如果程序不從0000H單元開始,應(yīng)在這3個(gè)單元中存放一條無(wú)條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)去執(zhí)行指定的程序。第二組特殊單元是0003H~002AH,共40個(gè)單元。這40個(gè)單元被均勻地分為5段,作為5個(gè)中斷源的中斷地址區(qū)。中斷響應(yīng)后,按中斷種類,自動(dòng)轉(zhuǎn)到各中斷區(qū)的首地址去執(zhí)行程序,因此在中斷地址區(qū)中應(yīng)存放中斷服務(wù)程序。但通常情況下,8個(gè)單元難以存下一個(gè)完整的中斷服務(wù)程序,因此通常也是從中斷地址區(qū)首地址開始存放一條無(wú)條件轉(zhuǎn)移指令,以便中斷響應(yīng)后,通過(guò)中斷地址區(qū),再轉(zhuǎn)到中斷服務(wù)程序的實(shí)際入口地址。
第17頁(yè)/共89頁(yè)2.2.380C51單片機(jī)的數(shù)據(jù)存儲(chǔ)器RAM80C51數(shù)據(jù)存儲(chǔ)器RAM主要用來(lái)存放運(yùn)算的中間結(jié)果和數(shù)據(jù)等。80C51單片機(jī)數(shù)據(jù)存儲(chǔ)器RAM分為片內(nèi)RAM和片外RAM兩大部分,如圖2.7所示。80C51的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM只有128B,地址范圍為00H~7FH;80C52的片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM為256B,地址范圍為00H~FFH。片外數(shù)據(jù)存儲(chǔ)器RAM最多可擴(kuò)至64KB存儲(chǔ)單元,地址范圍為0000H~FFFFH。說(shuō)明兩點(diǎn):①80C52的片內(nèi)RAM地址空間共有256B,又分為兩個(gè)部分:●低128B(00H~7FH)RAM區(qū)與80C51的RAM區(qū)相同(訪問(wèn)時(shí)采用直接或間接尋址方式均可)?!窀?28B(80H~FFH)RAM區(qū),在訪問(wèn)這個(gè)區(qū)只能用寄存器間接尋址。需要注意是該地址范圍與特殊功能寄存器(SFR)區(qū)相重疊,區(qū)別是訪問(wèn)特殊功能寄存器區(qū)采用直接尋址方式。②片內(nèi)RAM和片外RAM的低端地址0000H~007FH區(qū)是相重疊的,因此,就需要采用不同的尋址方式來(lái)解決。訪問(wèn)片內(nèi)RAM時(shí)用指令MOV,而訪問(wèn)片外RAM時(shí)用指令MOVX,另外片外RAM不能進(jìn)行堆棧操作。第18頁(yè)/共89頁(yè)
在80C51單片機(jī)中,盡管片內(nèi)RAM的容量不大,但它的功能多,使用靈活。下面分別對(duì)低128BRAM區(qū)和高128B特殊功能寄存器(SFR)區(qū)進(jìn)行討論。
一、內(nèi)部數(shù)據(jù)存儲(chǔ)器低128單元內(nèi)部數(shù)據(jù)存儲(chǔ)器低128單元是指地址為00H~7FH單元,如圖2-8所示。低128單元是單片機(jī)的真正RAM存儲(chǔ)器,按其用途劃分為工作寄存器區(qū)、位尋址區(qū)和用戶RAM區(qū)三個(gè)區(qū)域。
1、工作寄存器區(qū)
80C51單片機(jī)內(nèi)部RAM的00H~1FH地址單元,共32B,分成4組工作寄存器,每組8個(gè)工作寄存單元。
寄存器0組:地址00H~07H(R0~R7)寄存器1組:地址08H~0FH(R0~R7)寄存器2組:地址10H~17H(R0~R7)寄存器3組:地址18H~1FH(R0~R7)各組都以R0~R7作工作寄存單元編號(hào)。由于它們的功能及使用不作預(yù)先規(guī)定,因此稱之為通用寄存器。4組通用寄存器在任一時(shí)刻,CPU只能使用其中的一組工作寄存器,并且把正在使用的那組寄存器稱之為當(dāng)前寄存器組。到底是哪一組,由程序狀態(tài)字寄存器PSW中RS1、RS0位的狀態(tài)組合來(lái)決定。第19頁(yè)/共89頁(yè)30H~7FH數(shù)據(jù)緩沖區(qū)20H~2FH位尋址區(qū)(00H~7FH)18H~1FH工作寄存器3區(qū)(R0~R7)10H~17H工作寄存器2區(qū)(R0~R7)08H~0FH工作寄存器1區(qū)(R0~R7)00H~07H工作寄存器0區(qū)(R0~R7)圖2-880C51片內(nèi)RAM的配置第20頁(yè)/共89頁(yè)
2、位尋址區(qū)
內(nèi)部RAM的20H~2FH地址單元,既可作為一般RAM單元使用,進(jìn)行字節(jié)操作,也可以對(duì)單元中每一位進(jìn)行位操作,因此把該區(qū)稱之為位尋址區(qū)。位尋址區(qū)共有16個(gè)RAM單元,計(jì)128位,地址為00H~7FH,見(jiàn)表2-2。程序設(shè)計(jì)時(shí),常將程序狀態(tài)標(biāo)志、位控制變量設(shè)在位尋址區(qū)內(nèi)。這種位尋址能力是80C51的一個(gè)重要特點(diǎn)。
3、用戶RAM區(qū)
地址為30H~7FH,共計(jì)80個(gè)字節(jié),這就是供用戶使用的一般RAM區(qū)。這個(gè)區(qū)域的操作指令非常豐富,數(shù)據(jù)處理方便靈活。對(duì)用戶RAM區(qū)的使用沒(méi)有任何規(guī)定或限制,但在一般應(yīng)用中常把堆棧設(shè)置在此區(qū)中。
第21頁(yè)/共89頁(yè)表2-2片內(nèi)RAM及位尋址區(qū)的位地址表第22頁(yè)/共89頁(yè)二.內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM高128單元
在80C51內(nèi)部RAM的高128單元是供給專用寄存器使用的,它們分布在其單元地址為80H~FFH的空間。因這些寄存器的功能已作專門規(guī)定,故稱之為專用寄存器(SpecialFunctionRegister),也可稱為特殊功能寄存器(簡(jiǎn)稱為SFR寄存器)。訪問(wèn)SFR寄存器只允許使用直接尋址方式。
1、特殊功能寄存器(SFR)簡(jiǎn)介
80C51共有21個(gè)特殊功能寄存器(SFR),其中的11個(gè)SFR還具有位尋址功能,見(jiàn)表2-3用“*”表示的?,F(xiàn)把其中部分SFR簡(jiǎn)單介紹如下:
1)與運(yùn)算器有關(guān)的特殊功能寄存器有3個(gè)
(1)累加器ACC(Accumulator)。累加器為8位寄存器,是最常用的專用寄存器,用于向ALU提供操作,因此,功能較多,地位重要。它既可用于存放操作數(shù),也可用來(lái)存放運(yùn)算的中間結(jié)果。第23頁(yè)/共89頁(yè)表2-380C51SFR中位地址分布表第24頁(yè)/共89頁(yè)(2)B寄存器。B寄存器是一個(gè)8位寄存器,主要用于乘、除運(yùn)算。也可以作為RAM的一個(gè)單元使用。
(3)程序狀態(tài)字PSW(ProgramStatusWord)。程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行中的各種狀態(tài)信息,作為程序查詢或判斷的條件。PSW有些位的狀態(tài)是根據(jù)程序執(zhí)行結(jié)果,由硬件自動(dòng)設(shè)置的,而有些位的狀態(tài)則使用軟件方法設(shè)定。
PSW的各位定義見(jiàn)表2-4。各位的定義及使用作如下說(shuō)明:
CY(PSW.7)——進(jìn)位(借位)標(biāo)志位。其功能有二:一是存放算術(shù)運(yùn)算的進(jìn)位()時(shí),CY由硬件置“1”,否則清“0”;二是在進(jìn)行位操作時(shí),CY作為累加器借位)標(biāo)志,在作加法(減法)運(yùn)算時(shí),如果操作結(jié)果的最高位有進(jìn)位(借位C使用,可進(jìn)行位傳送、位與位的邏輯運(yùn)算等位操作,會(huì)影響該標(biāo)志位。
AC(PSW.6)——輔助進(jìn)位標(biāo)志位。在進(jìn)行加法(減法)運(yùn)算中,當(dāng)?shù)?位向高4位進(jìn)位(借位)時(shí),AC由硬件置“1”,否則AC位被清“0”。AC位常用于調(diào)整BCD碼運(yùn)算結(jié)果。PSW位地址PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位標(biāo)志
CYACF0RS1RS0OVF1P第25頁(yè)/共89頁(yè)
F0(PSW.5)——用戶標(biāo)志位。這是一個(gè)留給用戶自己定義的標(biāo)志位,可以根據(jù)自己的需要通過(guò)軟件方法置位或復(fù)位F0位,用以控制程序的轉(zhuǎn)向。
RS1和RS0(PSW.4,PSW.3)——工作寄存器組選擇位。工作寄存器共有4組,對(duì)應(yīng)關(guān)系見(jiàn)表2-5。RS1和RS0這兩位的狀態(tài)是由軟件置“1”或清“0”來(lái)設(shè)置的,被選中的工作寄存器組即為當(dāng)前工作寄存器組。注意:當(dāng)單片機(jī)上電或復(fù)位后,RS1RS0=00,選中第0組。
OV(PSW.2)——溢出標(biāo)志位。在帶符號(hào)數(shù)的算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出了8位二進(jìn)制數(shù)所能表示的符號(hào)數(shù)有效范圍(-128~+127),這產(chǎn)生了溢出OV=1,表示運(yùn)算結(jié)果是錯(cuò)誤的;否則,OV=0即無(wú)溢出產(chǎn)生,表示運(yùn)算結(jié)果正確。
PSW.1位——保留未用。
P(PSW.0)——奇偶標(biāo)志位。表明運(yùn)算結(jié)果累加器A中內(nèi)容的奇偶性。如果A中有奇數(shù)個(gè)“1”,則P置“1”,否則置“0”。凡是改變累加器A中內(nèi)容的指令均會(huì)影響P標(biāo)志位。注意:P標(biāo)志位對(duì)串行通信中的數(shù)據(jù)傳輸有重要的意義。在串行通信中常采用奇偶校驗(yàn)的辦法來(lái)校驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
RS1RS0寄存器組片內(nèi)RAM地址00第0組00H~07H01第1組08H~0FH10第2組10H~17H11第3組18H~1FH第26頁(yè)/共89頁(yè)2)與指針有關(guān)的特殊功能寄存器有3個(gè)
(1)數(shù)據(jù)指針DPTR。數(shù)據(jù)指針為16位寄存器,用來(lái)存放16位地址。DPTR既可以按16位寄存器使用,也可以按兩個(gè)8位寄存器分開使用,即:
DPH——DPTR高8位字節(jié)
DPL——DPTR低8位字節(jié)
DPTR通常在訪問(wèn)片外RAM或ROM存儲(chǔ)器時(shí)作地址指針使用,用間接尋址或變址尋址可對(duì)片外的64KB范圍的RAM或ROM數(shù)據(jù)進(jìn)行操作。
(2)堆棧指針SP(StackPointer)。SP是一個(gè)8位寄存器,它總是指向棧頂。80C51單片機(jī)在編程序時(shí)常將堆棧設(shè)在內(nèi)部RAM30H~7FH中。80C51單片機(jī)系統(tǒng)復(fù)位后,SP的內(nèi)容為07H,從而復(fù)位后堆棧實(shí)際上是從08H單元開始的。但08H~1FH單元分別屬于工作寄存器1~3組,如程序要用到這些區(qū),最好把SP值改為1FH或更大的值。
(3)程序計(jì)數(shù)器PC(ProgramCounter)。PC是一個(gè)16位的計(jì)數(shù)器,它的作用是控制程序的執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令的地址,尋址范圍達(dá)64KB。PC有自動(dòng)加1功能,從而實(shí)現(xiàn)程序的順序執(zhí)行。第27頁(yè)/共89頁(yè)3)與接口有關(guān)的特殊功能寄存器有7個(gè)(1)并行I/O口P0、P1、P2、P3(4個(gè)),均為8位;可實(shí)現(xiàn)數(shù)據(jù)在接口輸入/輸出。(2)串行口數(shù)據(jù)緩沖器SBUF(詳見(jiàn)串行口章節(jié))。(3)串行口控制寄存器SCON(詳見(jiàn)串行口章節(jié))。(4)串行通訊波特率倍增寄存器PCON(詳見(jiàn)串行口章節(jié))4)與中斷相關(guān)的寄存器(2個(gè))(1)中斷允許控制寄存器IE(詳見(jiàn)中斷章節(jié))。(2)中斷優(yōu)先級(jí)控制寄存器IP(詳見(jiàn)中斷章節(jié))。5)與定時(shí)器/計(jì)數(shù)器相關(guān)的寄存器(6個(gè))(1)定時(shí)/計(jì)數(shù)器T0的兩個(gè)8位計(jì)數(shù)初值寄存器TH0、TL0,它們可以構(gòu)成16位的計(jì)數(shù)器,TH0存放高8位,TL0存放低8位(詳見(jiàn)定時(shí)/計(jì)數(shù)器章節(jié))。(2)定時(shí)/計(jì)數(shù)器T1的兩個(gè)8位計(jì)數(shù)初值寄存器TH1、TL1,它們可以構(gòu)成16位的計(jì)數(shù)器,TH1存放高8位,TL1存放低8位(詳見(jiàn)定時(shí)/計(jì)數(shù)器章節(jié))。第28頁(yè)/共89頁(yè)
(3)定時(shí)/計(jì)數(shù)器的工作方式寄存器TMOD(詳見(jiàn)定時(shí)/計(jì)數(shù)器章節(jié))。(4)定時(shí)/計(jì)數(shù)器的控制寄存器TCON(詳見(jiàn)定時(shí)/計(jì)數(shù)器章節(jié))。注意:在80C52子系列中,高128字節(jié)RAM和SFR的地址是重疊的,究竟訪問(wèn)哪一塊可通過(guò)不同的尋址方式加以區(qū)分,訪問(wèn)高128字節(jié)RAM采用寄存器間址,訪問(wèn)SFR則只能采用直接尋址,訪問(wèn)低128字節(jié)RAM時(shí),兩種尋址均可采用。
第29頁(yè)/共89頁(yè)2.380C51的并行輸入/輸出端口結(jié)構(gòu)與操作
80C51單片機(jī)有4個(gè)8位并行I/O端口,稱為P0、P1、P2和P3口,每個(gè)端口都各有8條I/O口線,每條I/O口線都能獨(dú)立地用作輸入或輸出。每個(gè)口都包含一個(gè)鎖存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。實(shí)際上,它們已被歸入專用寄存器之列,并且具有字節(jié)尋址和位尋址功能。
2.3.180C51P0~P3接口功能簡(jiǎn)見(jiàn)大多數(shù)口線都有雙重功能,介紹如下:
1、P0口具有雙重功能:(1)作為通用I/O,外接I/O設(shè)備。(2)作為地址/數(shù)據(jù)總線。在有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,低8位地址和數(shù)據(jù)由P0口分時(shí)傳送。
2、P1口是唯一的單功能口:作為輸入/輸出口,P1口的每一位都可作為輸入/輸出口。
3、P2口具有雙重功能:(1)作為輸入/輸出口。(2)作為高8位地址總線。在有片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,高8位地址由P2口傳送。
4、P3口具有雙重功能:
(1)作第一功能使用時(shí),其功能為輸入/輸出口。(2)作第二功能使用時(shí),每一位功能定義如表2.1所示。
80C51單片機(jī)的4個(gè)I/O口都是8位雙向口,這些口在結(jié)構(gòu)和特性上是基本相同的,但又各具特點(diǎn),以下將分別介紹之。第30頁(yè)/共89頁(yè)2.3.2P0口
P0口某一位的結(jié)構(gòu)圖如圖2-9所示,由圖可見(jiàn),電路是由一個(gè)輸出鎖存器(D觸發(fā)器)、兩個(gè)三態(tài)輸入緩沖器(1和2)、一個(gè)轉(zhuǎn)換開關(guān)MUX、一個(gè)輸出驅(qū)動(dòng)電路(T1和T2)、一個(gè)與門及一個(gè)反向器組成。
1、P0口用作通用I/O口當(dāng)系統(tǒng)不擴(kuò)展片外的ROM和不擴(kuò)展片外RAM時(shí),P0用作通用I/O口。CPU發(fā)控制電平“0”封鎖與門,使上拉場(chǎng)效應(yīng)管T1處于截止?fàn)顟B(tài)。因此,輸出驅(qū)動(dòng)級(jí)工作在需外接上拉電阻的漏極開路方式。同時(shí)使MUX開關(guān)同下面的觸點(diǎn)接通,使鎖存器的端與T2柵極接通。(1)P0口用作輸出口時(shí)
CPU在執(zhí)行輸出指令時(shí),內(nèi)部數(shù)據(jù)總線的數(shù)據(jù)在“寫鎖存器”信號(hào)的作用下,由D端進(jìn)入鎖存器,經(jīng)鎖存器的端送至場(chǎng)效應(yīng)管T2,再經(jīng)T2反向,在P0.X引腳出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。由于輸出驅(qū)動(dòng)級(jí)是漏極開路電路(因T1截止),在作I/O口使用時(shí)應(yīng)外接10K的上拉電阻。第31頁(yè)/共89頁(yè)圖2-9P0口某位的結(jié)構(gòu)第32頁(yè)/共89頁(yè)(2)P0口用作輸入口時(shí)數(shù)據(jù)可以讀自端口的鎖存器,也可以讀自端口的引腳,這要看輸入操作執(zhí)行的是“讀鎖存器”指令還是“讀引腳”指令。①讀引腳:CPU在執(zhí)行“MOV”類輸入指令時(shí)(如:MOVA,P0),內(nèi)部產(chǎn)生的操作信號(hào)是“讀引腳”。P0.X引腳上的數(shù)據(jù)經(jīng)過(guò)三態(tài)輸入緩沖器2讀入到內(nèi)部總線。注意:在讀引腳時(shí),必須先向電路中的鎖存器寫入1,使場(chǎng)效應(yīng)管T2截止,P0.X引腳處于懸浮狀態(tài),可作為高阻抗輸入。否則,在作為輸入方式之前若向鎖存器輸出過(guò)“0”,則T2導(dǎo)通會(huì)使引腳箝位在“0”電平,使輸入高電平“1”無(wú)法讀入。所以,P0口在作為通用I/O口時(shí),屬于準(zhǔn)雙向口。②讀鎖存器:CPU在執(zhí)行“讀—修改—寫”類輸入指令時(shí)(如:ANLP0,A),內(nèi)部產(chǎn)生的操作信號(hào)是“讀鎖存器”,鎖存器中的數(shù)據(jù)經(jīng)過(guò)三態(tài)輸入緩沖器1送到內(nèi)部總線,然后與A的內(nèi)容進(jìn)行邏輯“與”,結(jié)果送回P0的端口鎖存器并出現(xiàn)在引腳。除了MOV類指令外,其他的讀口操作指令都屬于這種情況。第33頁(yè)/共89頁(yè)(3)P0口用作地址/數(shù)據(jù)總線
當(dāng)系統(tǒng)需要擴(kuò)展片外的ROM或擴(kuò)展片外RAM時(shí),P0口就作地址/數(shù)據(jù)總線用。
CPU及內(nèi)部控制信號(hào)為“1”,使轉(zhuǎn)換開關(guān)MUX打向上面的觸點(diǎn),使反相器的輸出端和T2管柵極接通。若地址/數(shù)據(jù)線為1,則T1導(dǎo)通,T2截止,P0口輸出為1;反之T1截止,T2導(dǎo)通,P0口輸出為0。當(dāng)數(shù)據(jù)從P0口輸入時(shí),讀引腳使三態(tài)緩沖器2打開,端口上的數(shù)據(jù)經(jīng)緩沖器2送到內(nèi)部總線。
P0口作為地址/數(shù)據(jù)總線使用時(shí)是一個(gè)真正的雙向口。(4)P0口小結(jié)
①P0口既可作地址/數(shù)據(jù)總線使用,也可作通用I/O口使用。當(dāng)P0口作地址/數(shù)據(jù)總線使用時(shí),就不能再作通用I/O口使用了。②P0口作輸出口使用時(shí),輸出級(jí)屬漏極開路,必須外接上拉10K電阻,才有高電平輸出。③P0口作輸入口讀引腳時(shí),應(yīng)先向鎖存器寫1,使V2截止,不影響輸入電平。第34頁(yè)/共89頁(yè)P(yáng)1口某一位的結(jié)構(gòu)圖如圖2-10所示,由圖可見(jiàn),電路是由一個(gè)輸出鎖存器(D觸發(fā)器)、兩個(gè)三態(tài)輸入緩沖器(1和2)、一個(gè)輸出驅(qū)動(dòng)電路(T和上拉電阻)組成。
P1口作為通用I/O口使用。由于在其輸出端接有上拉電阻,故可以直接輸出而無(wú)需外接上拉電阻。
當(dāng)P1口作輸入口時(shí),必須先向鎖存器寫“1”,使場(chǎng)效應(yīng)管T截止。圖2-10P1口某位的結(jié)構(gòu)2.3.3P1口第35頁(yè)/共89頁(yè)2.3.4P2口
P2口某一位的結(jié)構(gòu)圖如圖2-11所示,由圖可見(jiàn),電路是由一個(gè)輸出鎖存器(D觸發(fā)器)、兩個(gè)三態(tài)輸入緩沖器(1和2)、一個(gè)轉(zhuǎn)換開關(guān)MUX、一個(gè)反向器、一個(gè)輸出驅(qū)動(dòng)電路(T和上拉電阻)組成。
1、P2用作通用I/O口當(dāng)系統(tǒng)不在片外擴(kuò)展程序存儲(chǔ)器ROM時(shí),只擴(kuò)展256B的片外RAM時(shí),僅用到了地址線的低8位,P2口仍可以作為通用I/O口使用。圖2.11中的控制信號(hào)C決定轉(zhuǎn)換開關(guān)MUX的位置:當(dāng)C=0時(shí),MUX撥向下方,P0口為通用I/O口。
P2口在作為通用I/O口時(shí),屬于準(zhǔn)雙向口。
2、P2用作地址總線
當(dāng)系統(tǒng)需要在片外擴(kuò)展程序存儲(chǔ)器ROM或擴(kuò)展RAM的容量超過(guò)256字節(jié)時(shí),單片機(jī)內(nèi)硬件自動(dòng)使控制C=1,MUX開關(guān)接向地址線,這時(shí)P2.X引腳的狀態(tài)正好與地址線的信息相同。在實(shí)際應(yīng)用中,P2口通常作為高8位地址總線使用。第36頁(yè)/共89頁(yè)圖2-11P2口某位的結(jié)構(gòu)第37頁(yè)/共89頁(yè)2.3.5P3口
P3口某一位的結(jié)構(gòu)圖如圖2-12所示,由圖可見(jiàn),電路是由一個(gè)輸出鎖存器(D觸發(fā)器)、3個(gè)三態(tài)輸入緩沖器(1、2和3)、一個(gè)與非門和一個(gè)輸出驅(qū)動(dòng)電路(T和上拉電阻)組成。
1、P3用作第一功能(通用I/O口)
P3口用作通用I/O口時(shí),第二輸出功能信號(hào)W=1,P3口的每一位都可定義為輸入或輸出,其工作原理同P1口類似。
P3口作為通用I/O口時(shí),屬于準(zhǔn)雙向口。
2、P3用作第二功能使用
當(dāng)CPU不對(duì)P3口進(jìn)行字節(jié)或位尋址時(shí),內(nèi)部硬件自動(dòng)將口鎖存器的Q端置1。這時(shí),P3口作為第二功能使用。在真正的應(yīng)用電路中,P3口的第二功能顯得更為重要。第38頁(yè)/共89頁(yè)圖2-12P3口某位的結(jié)構(gòu)第39頁(yè)/共89頁(yè)2.3.6P0~P3口使用時(shí)應(yīng)注意事項(xiàng)
1、如果80C51單片機(jī)內(nèi)部程序存貯器ROM夠用,不需要擴(kuò)展外部存貯器和I/O接口,80C51的四個(gè)口均可作I/O口使用。
2、四個(gè)口在作輸入口使用時(shí),均應(yīng)先對(duì)其寫“1”,以避免誤讀。
3、P0口作I/O口使用時(shí)應(yīng)外接10K的上拉電阻,其它口則可不必。
4、P2可某幾根線作地址使用時(shí),剩下的線不能作I/O口線使用。5、P3口的某些口線作第二功能時(shí),剩下的口線可以單獨(dú)作I/O口線使用。
第40頁(yè)/共89頁(yè)2.3.7I/O端口帶負(fù)載能力1、P0、P1、P2、P3口的電平與CMOS和TTL電平兼容。2、P0口的每一位能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。在作為通用I/O口使用時(shí),輸出驅(qū)動(dòng)電路是開漏的,所以,驅(qū)動(dòng)集電極開路(OC門)電路或漏級(jí)開路電路需外接上拉電阻。當(dāng)作為地址/數(shù)據(jù)總線使用時(shí)(T1可以提供上拉電平),口線不是開漏的,無(wú)需外接上拉電阻。3、P1~P3口的每一位能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。它們的輸出驅(qū)動(dòng)電路有上拉電阻,所以可以方便地由集電極開路(OC門)電路或漏級(jí)開路電路所驅(qū)動(dòng),而無(wú)需外接上拉電阻。4、對(duì)于80C51單片機(jī)(CHMOS),端口只能提供幾毫安的輸出電流,故當(dāng)作輸出口去驅(qū)動(dòng)一個(gè)普通晶體管的基極時(shí),應(yīng)在端口與晶體管基極間串聯(lián)一個(gè)電阻,以限制高電平輸出時(shí)的電流。第41頁(yè)/共89頁(yè)80C51單片機(jī)帶負(fù)載能力1、最大灌電流每個(gè)P口平均10mA。P0口26mA;P1、P2、P3口15mA。2、拉電流80μA。第42頁(yè)/共89頁(yè)2.3.8P口應(yīng)用實(shí)例【例1】點(diǎn)亮LED0燈。用C語(yǔ)言實(shí)現(xiàn)方法1:#include<reg51.h>//包含51單片機(jī)寄存器定義的頭文件voidmain(void){P1=0xfe;//P1=11111110B,即P1.0輸出低電平
}方法2:用位操作#include<reg51.h>//包含51單片機(jī)寄存器定義的頭文件SbitD1=P1^0;//位操作voidmain(void){D1=0;//P1.0=0,即P1.0輸出低電平
}第43頁(yè)/共89頁(yè)第44頁(yè)/共89頁(yè)【例2】點(diǎn)亮LED0燈。
用匯編語(yǔ)言實(shí)現(xiàn)方法1:ORG0000HMOVP1,#0FEH;即P1.0輸出低電平END方法2:用位操作ORG0000HSETBP1.0;即P1.0輸出低電平END第45頁(yè)/共89頁(yè)【例3】點(diǎn)亮LED0~LED7燈。用C語(yǔ)言實(shí)現(xiàn)#include<reg51.h>//包含51單片機(jī)寄存器定義的頭文件voidmain(void)//兩個(gè)void意思分別為無(wú)需返回值,沒(méi)有參數(shù)傳遞
{P1=0x00;//P1=00000000B,即P1口輸出低電平
}用匯編語(yǔ)言實(shí)現(xiàn)ORG0000HMOVP1,#00H;即P1口輸出低電平END第46頁(yè)/共89頁(yè)//實(shí)例4:用單片機(jī)控制一個(gè)燈LED0閃爍:認(rèn)識(shí)單片機(jī)的工作頻率#include<reg51.h>//包含單片機(jī)寄存器的頭文件/****************************************函數(shù)功能:延時(shí)一段時(shí)間*****************************************/voiddelay(void)//兩個(gè)void意思分別為無(wú)需返回值,沒(méi)有參數(shù)傳遞{unsignedinti;//定義無(wú)符號(hào)整數(shù),最大取值范圍65535for(i=0;i<20000;i++)//做20000次空循環(huán)
;//什么也不做,等待一個(gè)機(jī)器周期}/*******************************************************函數(shù)功能:主函數(shù)(C語(yǔ)言規(guī)定必須有也只能有1個(gè)主函數(shù))********************************************************/voidmain(void){while(1)//無(wú)限循環(huán)
{ P1=0xfe;//P1=11111110B,P1.0輸出低電平
delay();//延時(shí)一段時(shí)間
P1=0xff;//P1=11111111B,P1.0輸出高電平
delay();//延時(shí)一段時(shí)間
}}第47頁(yè)/共89頁(yè)//實(shí)例5:將P1口狀態(tài)分別送入P0、P2、P3口:認(rèn)識(shí)I/O口的引腳功能
#include<reg51.h>//包含單片機(jī)寄存器的頭文件/*******************************************************函數(shù)功能:主函數(shù)(C語(yǔ)言規(guī)定必須有也只能有1個(gè)主函數(shù))********************************************************/voidmain(void){while(1) //無(wú)限循環(huán)
{ P1=0xf7; //P1=11110111B,燈亮LED3其余熄滅
P0=P1; //將P1口狀態(tài)送入P0口
P2=P1; //將P1口狀態(tài)送入P2口
P3=P1; //將P1口狀態(tài)送入P3口
}}第48頁(yè)/共89頁(yè)//實(shí)例6:使用P3口流水點(diǎn)亮8位LED#include<reg51.h>//包含單片機(jī)寄存器的頭文件/****************************************函數(shù)功能:延時(shí)一段時(shí)間*****************************************/voiddelay(void){ unsignedchari,j;定義無(wú)符號(hào)字符型變量,單字節(jié)數(shù)據(jù),值域0~255 for(i=0;i<250;i++) for(j=0;j<250;j++) ;}/*******************************************************第49頁(yè)/共89頁(yè)函數(shù)功能:主函數(shù)********************************************************/voidmain(void){while(1) { P3=0xfe;//第一個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xfd;//第二個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xfb;//第三個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xf7;//第四個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xef;//第五個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xdf;//第六個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0xbf;//第七個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
P3=0x7f;//第八個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
}}第50頁(yè)/共89頁(yè)/實(shí)例7:通過(guò)對(duì)P3口地址的操作流水點(diǎn)亮8位LED#include<reg51.h>//包含單片機(jī)寄存器的頭文件sfrx=0xb0;//P3口在存儲(chǔ)器中的地址是b0H,通過(guò)sfr可定義8051內(nèi)核單片機(jī)
//的所有內(nèi)部8位特殊功能寄存器,對(duì)地址x的操作也就是對(duì)P1口的操作/****************************************函數(shù)功能:延時(shí)一段時(shí)間*****************************************/voiddelay(void){ unsignedchari,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ;//利用循環(huán)等待若干機(jī)器周期,從而延時(shí)一段時(shí)間
}第51頁(yè)/共89頁(yè)/*****************************************函數(shù)功能:主函數(shù)******************************************/voidmain(void){while(1) {x=0xfe;//第一個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xfd;//第二個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xfb;//第三個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xf7;//第四個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xef;//第五個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xdf;//第六個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0xbf;//第七個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
x=0x7f;//第八個(gè)燈亮
delay();//調(diào)用延時(shí)函數(shù)
}}第52頁(yè)/共89頁(yè)【例】設(shè)計(jì)一電路,監(jiān)視某開關(guān)K,用發(fā)光二極管LED顯示開關(guān)狀態(tài),如果開關(guān)合上,LED亮、開關(guān)打開,LED熄滅。
分析:根據(jù)題意設(shè)計(jì)電路如圖2-13如示。開關(guān)接在P1.1口線,LED接P1.0口線,當(dāng)開關(guān)斷開時(shí),P1.1為+5V,對(duì)應(yīng)數(shù)字量為“1”,開關(guān)合上時(shí)P1.1電平為0V,對(duì)應(yīng)數(shù)字量為“0”,這樣就可以用JB指令對(duì)開關(guān)狀態(tài)進(jìn)行檢測(cè)。
LED正偏時(shí)才能發(fā)亮,按電路接法,當(dāng)P1.0輸出“1”,LED正偏而發(fā)亮,當(dāng)P1.0輸出“0”,LED的兩端電壓為0而熄滅。
第53頁(yè)/共89頁(yè)LED+5VVcc--EARST10uF1KP1.089S51P1.11K30P30PXTAL1XTAL2GND89C51+5VVcc--EARST10uF
1KP1.089S51+5VP1.11K30P30PXTAL1XTAL2GND89C51K圖2-13仿真鏈接第54頁(yè)/共89頁(yè)編程如下:
ORG0000H
LJMPMAIN
ORG1000H
MAIN:CLRP1.0;使發(fā)光二極管滅
LOOP:SETBP1.1;先對(duì)P1口寫入“1”
JBP1.1,L1;開關(guān)開,轉(zhuǎn)LIG
SETBP1.0;開關(guān)合上,二極管亮
SJMPAGA
L1:CLRP1.0;開關(guān)開,二極管滅
SJMPLOOP
END
注意:在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅(qū)動(dòng)能力,二極管更亮些。第55頁(yè)/共89頁(yè)+5VP1.0LEDDP1.0+5VLED11、接成灌電流形式:2、加驅(qū)動(dòng)電路:第56頁(yè)/共89頁(yè)2.480C51時(shí)鐘電路與時(shí)序
2.4.1時(shí)鐘電路
80C51單片機(jī)的時(shí)鐘信號(hào)用來(lái)提供單片機(jī)內(nèi)各種微操作時(shí)間基準(zhǔn)。80C51單片機(jī)的時(shí)鐘信號(hào)通常有兩種電路形式:內(nèi)部振蕩方式和外部振蕩方式。
1、內(nèi)部振蕩方式在引腳XTAL1和XTAL2外接晶體振蕩器(簡(jiǎn)稱晶振)如圖2-14所示。
電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用。電容值一般為5~30PF(常用30PF)。晶振的振蕩頻率范圍在1.2MHZ~12MHZ(一般取12MHZ或6MHZ)。由于單片機(jī)內(nèi)部有一個(gè)高增益運(yùn)算放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。XTAL1XTAL2GND80C51C1C2圖2.14內(nèi)部振蕩方式第57頁(yè)/共89頁(yè)2、外部振蕩方式
是把已有的時(shí)鐘信號(hào)引入單片機(jī)。這種方式適宜用于使單片機(jī)的時(shí)鐘與外部信號(hào)保持一致。外部振蕩方式如圖2-15所示。對(duì)HMOS的單片機(jī)(8051)外部時(shí)鐘信號(hào)由XTAL2引入,對(duì)于CHMOS的單片機(jī)(80C51),外部時(shí)鐘由XTAL1引入。外部時(shí)鐘信號(hào)為高電平持續(xù)時(shí)間要大于20ns,且頻率低于12MHz的方波。外部時(shí)鐘XTAL1XTAL2GND80C51懸空外部時(shí)鐘XTAL1XTAL2GND懸空CHMOSHMOS8051圖2.15外部振蕩方式第58頁(yè)/共89頁(yè)2.4.2時(shí)序
80C51的時(shí)序就是80C51在執(zhí)行指令時(shí)所需控制信號(hào)的時(shí)間順序。80C51單片機(jī)的時(shí)序定時(shí)單位從小到大依次為:時(shí)鐘周期、狀態(tài)周期、機(jī)器周期和指令周期。
1、時(shí)鐘周期把晶振周期定義為節(jié)拍(用P表示)。晶振脈沖經(jīng)過(guò)二分頻后,就是單片機(jī)的時(shí)鐘周期(即一個(gè)時(shí)鐘周期是晶振周期的2倍),時(shí)鐘周期也稱為狀態(tài)(用S表示)。這樣,一個(gè)狀態(tài)就包含兩個(gè)節(jié)拍,具前半周期對(duì)應(yīng)的拍節(jié)叫節(jié)拍1(P1),后半周期對(duì)應(yīng)的節(jié)拍叫節(jié)拍2(P2)。
2、狀態(tài)周期狀態(tài)周期(或狀態(tài)S)是晶振周期的兩倍,它分為P1節(jié)拍和P2節(jié)拍。第59頁(yè)/共89頁(yè)3、機(jī)器周期
80C51采用定時(shí)控制方式,因此它有固定的機(jī)器周期。規(guī)定一個(gè)機(jī)器周期的寬度為6個(gè)狀態(tài),并依次表示為S1~S6。由于一個(gè)狀態(tài)又包括兩個(gè)節(jié)拍,因此,一個(gè)機(jī)器周期總共有12個(gè)節(jié)拍,分別記作S1P1、S1P2、…、S6P2。由于一個(gè)機(jī)器周期共有12個(gè)晶振周期,因此機(jī)器周期就是晶振脈沖的十二分頻。當(dāng)晶振脈沖頻率為12MHz時(shí),一個(gè)機(jī)器周期為1μs;當(dāng)晶振脈沖頻率為6MHz時(shí),一個(gè)機(jī)器周期為2μs。4、指令周期
指令周期是最大的時(shí)序定時(shí)單位,執(zhí)行一條指令所需要的時(shí)間稱為指令周期。它一般由若干個(gè)機(jī)器周期組成。不同的指令,所需要的機(jī)器周期數(shù)也不相同。通常,包含一個(gè)機(jī)器周期的指令稱為單周期指令,包含兩個(gè)機(jī)器周期的指令稱為雙周期指令。指令的運(yùn)算速度與指令所包含的機(jī)器周期有關(guān),機(jī)器周期數(shù)越少的指令執(zhí)行速度越快。80C51單片機(jī)通常可以分為單周期指令、雙周期指令和四周期指令等三種。四周期指令只有乘法和除法指令兩條,其余均為單周期和雙周期指令。第60頁(yè)/共89頁(yè)
單片機(jī)執(zhí)行任何一條指令時(shí)都可以分為取指令階段和執(zhí)行指令階段。80C51的取指/執(zhí)行時(shí)序如圖2-16所示。由圖2.16可見(jiàn),ALE引腳上出現(xiàn)的信號(hào)是周期性的,在每個(gè)機(jī)器周期內(nèi)出現(xiàn)兩次高電平。第一次出現(xiàn)在S1P2和S2P1期間,第二次出現(xiàn)在S4P2和S5P1期間。ALE信號(hào)每出現(xiàn)一次,CPU就進(jìn)行一次取指操作,但由于不同指令的字節(jié)數(shù)和機(jī)器周期數(shù)不同,因此取指令操作也隨指令不同而有小的差異。按照指令字節(jié)數(shù)和機(jī)器周期數(shù),80C51的111條指令可分為6類,分別是:?jiǎn)巫止?jié)單周期指令、單字節(jié)雙周期指令、單字節(jié)四周期指令、雙字節(jié)單周期指令、雙字節(jié)雙周期指令、三字節(jié)雙周期指令,可以參見(jiàn)附錄A。圖2-16(a),(b)所示分別給出了單字節(jié)單周期和雙字節(jié)單周期指令的時(shí)序。單周期指令的執(zhí)行始于S1P2,這時(shí)操作碼被鎖存到指令寄存器內(nèi)。若是雙字節(jié),則在同一機(jī)器周期的S4讀第二字節(jié)。若是單字節(jié)指令,則在S4仍有讀操作,但被讀入的字節(jié)無(wú)效,且程序計(jì)數(shù)器PC并不增量。圖2-16(c)給出了單字節(jié)雙周期指令的時(shí)序,兩個(gè)機(jī)器周期內(nèi)進(jìn)行4次讀操作碼操作。因?yàn)槭菃巫止?jié)指令,所以,后三次讀操作都是無(wú)效的。第61頁(yè)/共89頁(yè)圖2-1680C51的典型時(shí)序第62頁(yè)/共89頁(yè)5、80C51單片機(jī)的時(shí)序小結(jié)晶振周期:晶振的振蕩周期,又稱時(shí)鐘周期,為最小的時(shí)序單位。狀態(tài)周期:振蕩頻率經(jīng)單片機(jī)內(nèi)的二分頻器分頻后提供給片內(nèi)CPU的時(shí)鐘周期。因此,一個(gè)狀態(tài)周期包含2個(gè)晶振周期。機(jī)器周期(MC):1個(gè)機(jī)器周期由6個(gè)狀態(tài)周期及12個(gè)晶振周期組成。是計(jì)算機(jī)執(zhí)行一種基本操作的時(shí)間單位。指令周期:執(zhí)行一條指令所需的時(shí)間。一個(gè)指令周期由1~4個(gè)機(jī)器周期組成,依據(jù)指令不同而不同。
4種時(shí)序單位中,晶振周期和機(jī)器周期是單片機(jī)內(nèi)計(jì)算其他時(shí)間值(例如,波特率、定時(shí)器的定時(shí)時(shí)間等)的基本時(shí)序單位。例:?jiǎn)纹瑱C(jī)外接晶振頻率12MHZ時(shí)的各種時(shí)序換算:晶振周期=1/fosc=1/12MHZ=0.0833us
狀態(tài)周期=2/fosc=2/12MHZ=0.167us
機(jī)器周期=12/fosc=12/12MHZ=1us
指令周期=(1~4)機(jī)器周期=1~4us。第63頁(yè)/共89頁(yè)2.580C51復(fù)位電路
2.5.180C51復(fù)位電路
80C51單片機(jī)復(fù)位的目的是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第一個(gè)單元取指令。
80C51單片機(jī)復(fù)位的條件是:必須使RST端(9腳)加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)晶振周期)的高電平。例如,若時(shí)鐘頻率為12MHz,每機(jī)器周期為1?μs,則只需2μs以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個(gè)機(jī)器周期執(zhí)行復(fù)位。單片機(jī)常見(jiàn)的復(fù)位電路如圖2-17(a)、(b)所示。圖2-17(a)為上電復(fù)位電路,它是利用電容充電來(lái)實(shí)現(xiàn)的。在接電瞬間,RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。只要保證RST為高電平的時(shí)間大于兩個(gè)機(jī)器周期,便能正常復(fù)位。第64頁(yè)/共89頁(yè)
圖2-17(b)為按鍵復(fù)位電路。該電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖2-17(b)中的RESET鍵,此時(shí)電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個(gè)復(fù)位高電平。
電路中通常選擇:C=10f,R=10K。圖2-17復(fù)位電路(a)上電自動(dòng)復(fù)位(b)按鍵手動(dòng)復(fù)位第65頁(yè)/共89頁(yè)2.5.280C51單片機(jī)復(fù)位后的狀態(tài)
80C51單片機(jī)的復(fù)位功能是把PC初始化為0000H,使CPU從0000H單元開始執(zhí)行程序;復(fù)位操作同時(shí)使SFR寄存器進(jìn)入初始化,但內(nèi)部RAM的數(shù)據(jù)是不變的。幾個(gè)主要特殊功能寄存器復(fù)位狀態(tài)歸納如表2-6。對(duì)個(gè)別特殊功能寄存器作如下說(shuō)明:
PC=0000H:
程序計(jì)數(shù)器為零表明單片機(jī)復(fù)位后程序從0000H地址單元開始執(zhí)行。
A=00H:
表明累加器已被清零。
PSW=00H:
表明選寄存器0組為工作寄存器組。
SP=07H:
表明堆棧指針指向片內(nèi)RAM07H單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的數(shù)據(jù)被寫入08H單元中,一般需重新設(shè)置SP值。
P0~P3=FFH:P0~P3口用作輸入口時(shí),必須先寫入“1”。單片機(jī)在復(fù)位后,已使P0~P3口每一端線為“1”,為這些端線用作輸入口做好了準(zhǔn)備。
第66頁(yè)/共89頁(yè)
其中,×表示無(wú)關(guān)位。
記住一些特殊功能寄存器復(fù)位后的主要狀態(tài),對(duì)于熟悉單片機(jī)操作,減短應(yīng)用程序中的初始化部分是十分必要的。表2-6主要特殊功能寄存器復(fù)位狀態(tài)第67頁(yè)/共89頁(yè)2.6常用8位單片機(jī)系列介紹
2.6.1AT系列單片機(jī)
Atmel公司是美國(guó)著名的高性能,低功耗,非易失性存儲(chǔ)器和數(shù)字集成電路的一流半導(dǎo)體制造公司。AT系列單片機(jī)主要有AT89、AT90、AT91和智能IC卡等四種產(chǎn)品系列。產(chǎn)品主要特點(diǎn)是:E2PROM存儲(chǔ)技術(shù)和Flash閃速存儲(chǔ)器技術(shù)世界領(lǐng)先。
一、AT89系列單片機(jī)
AT89系列8位單片機(jī)可分為標(biāo)準(zhǔn)型、低檔型和高檔型三類。低檔型單片機(jī)有AT89C51和AT89C2051兩種型號(hào);標(biāo)準(zhǔn)型單片機(jī)有AT89C51、AT89LV51、AT89C52、AT89LV52、AT89C55、AT89LV55六種型號(hào);高檔型單片機(jī)有AT89S53、AT89S8252和AT89S4D12等型號(hào)。其中,數(shù)字9表示內(nèi)含F(xiàn)lash存儲(chǔ)器,C表示CMOS工藝,LV表示低電壓,S表示含有串行下載Flash存儲(chǔ)器,51、52和8252等表示型號(hào)。
AT89系列的主要單片機(jī)性能指標(biāo)見(jiàn)表2-7所示。第68頁(yè)/共89頁(yè)表2-7AT89系列的主要單片機(jī)性能指標(biāo)第69頁(yè)/共89頁(yè)
二、AT90系列單片機(jī)
AT90系列單片機(jī)是Atmel公司1997年推出的RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))8位單片機(jī),也稱為AVR系列單片機(jī)。
AVR片機(jī)的I/O接口具有很強(qiáng)的驅(qū)動(dòng)能力,灌電流可直接驅(qū)動(dòng)繼電器、LED等器件,從而省去驅(qū)動(dòng)電路,節(jié)約系統(tǒng)成本。
AVR單片機(jī)除具有低功耗、高密度的特點(diǎn)外,還支持低電壓的聯(lián)機(jī)Flash,EEPROM寫入功能。
AVR單片機(jī)還支持Basic、C等高級(jí)語(yǔ)言編程。
AVR單片機(jī)系列齊全,可適用于各種不同場(chǎng)合的要求。
AT90S系列:主要有AT90S1200/2313/4414/8515/8535等。
見(jiàn)表2-8所示。
第70頁(yè)/共89頁(yè)表2-8AT90系列單片機(jī)特性表第71頁(yè)/共89頁(yè)2.6.2Motorola公司的8位單片機(jī)
一、Motorola公司的8位單片機(jī)
Motorola公司于1979年推出真正的單片機(jī)M6801,采用NMOS工藝,內(nèi)含2.5萬(wàn)只晶體管。
Motorola的M6805系列,M68HC05系列和M68HC11系列單片機(jī)是國(guó)際上應(yīng)用最廣泛的8位主流機(jī)型之一,約占8位市場(chǎng)的30%份額。
M68HC05系列單片機(jī)的基本結(jié)構(gòu)和M6805相似,但功能更為強(qiáng)大。M68HC05比M6805增加了乘法和低功耗控制制指令,指令執(zhí)行速度比M6805要快3~4倍。
M68HC11系列單片機(jī)是Motorola公司的8位高性能單片機(jī),1984年推出,采用HCMOS工藝制造,具有靈活的CPU、大量面向控制的外圍接口以及更加復(fù)雜的I/O功能,工作溫度范圍廣、可靠性高、抗干擾能力強(qiáng),內(nèi)部資源豐富。第72頁(yè)/共89頁(yè)其主要特點(diǎn)為:(1)CPU有兩個(gè)8位或一個(gè)16位累加器和兩個(gè)16位變址寄存器,新增了可用于16位變址運(yùn)算、16位乘除運(yùn)算、位操作和功耗操作等指令,共有指令91條,總線速度高達(dá)4MHZ。(2)片內(nèi)ROM存儲(chǔ)器為0~32KB,片內(nèi)RAM存儲(chǔ)器為192~1250B,EPROM容量為4~32KB,E2PROM為0~2KB。(3)片內(nèi)I/O功能豐富而且靈活。(4)片內(nèi)定時(shí)器具有輸入捕捉和輸出比較功能,Watchdog功能。(5)4路DMA可以加速存儲(chǔ)器和外部設(shè)備間的數(shù)據(jù)傳送,一個(gè)MMU可以使原來(lái)尋址64KB的物理空間擴(kuò)展到1MB。第73頁(yè)/共89頁(yè)二、Motorola公司單片機(jī)命名的方法第74頁(yè)/共89頁(yè)2.6.3Microchip(微芯)PIC系列單片機(jī)
PIC是由美國(guó)Microchip(微芯)公司推出的8位高性能單片機(jī),該系列單片機(jī)是業(yè)內(nèi)首先采用RISC結(jié)構(gòu)的單片機(jī)系列,其總線結(jié)構(gòu)采用指令線和數(shù)據(jù)線分離的哈佛(Harvard)結(jié)構(gòu),使之具有很高的流水處理速度。
PIC8位系列單片機(jī)的主要特點(diǎn):精簡(jiǎn)了指令集,使得指令少,執(zhí)行速度快,內(nèi)部采用雙總線的哈佛結(jié)構(gòu),便于實(shí)現(xiàn)雙流水線或多流水線以提高處理速度。同時(shí)PIC系列單片機(jī)的功耗低,驅(qū)動(dòng)能力強(qiáng),有的型號(hào)單片機(jī)還具有I2C和SPI串行總線端口,有利于用單片機(jī)串行總線來(lái)擴(kuò)充外圍器件。PIC系列單片機(jī)的產(chǎn)品分高、中、基本三個(gè)檔次。PIC系列單片機(jī)的特性見(jiàn)表2-9所示。第75頁(yè)/共89頁(yè)表2-9PIC系列單片機(jī)的特性第76頁(yè)/共89頁(yè)2.6.4臺(tái)灣Winbond(華邦)公司W(wǎng)78E51系列單片機(jī)
W78E系列單片機(jī)是臺(tái)灣Winbond(華邦)公司推出的CMOS型單片機(jī)系列,它具有較好的性價(jià)比、功能強(qiáng)、型號(hào)多等可滿足不同的應(yīng)用場(chǎng)合的需求。華邦的系列單片機(jī)分為標(biāo)準(zhǔn)系列型、寬工作電壓系列型、渦輪-51系列型和工作級(jí)別系列型四個(gè)檔次。
1、標(biāo)準(zhǔn)型系列單片機(jī)片內(nèi)程序存儲(chǔ)器采用閃存EPROM,容量從4KB~64KB不等;片內(nèi)數(shù)據(jù)存儲(chǔ)器容量從128B~1KB;I/O口線有32位、36位及40位;2~3個(gè)定時(shí)計(jì)數(shù)器,中斷源5~8個(gè);具有CMOS通用功能、可多次編程、可在線編程、4流水線功能、具有特殊的I/O端口、外部中斷增加了個(gè),;外部存儲(chǔ)器可從64KB~1MB。
2、寬工作電壓系列型,其工作電壓可從1.8V~5.5V范圍內(nèi)工作。渦輪-51系列型工作電壓從2.7V~5.5V范圍,4時(shí)鐘/機(jī)器周期,提供了兩個(gè)UART接口和兩個(gè)DPTR寄存器,提供了等待狀態(tài)信號(hào)WDT等特殊功能。
3、工作級(jí)別系列型有3個(gè)定時(shí)計(jì)數(shù)器和看門狗等多種功能。
4、標(biāo)準(zhǔn)型系列單片機(jī)的性能參數(shù)見(jiàn)表2-10
第77頁(yè)/共89頁(yè)表2-10華邦W78標(biāo)準(zhǔn)型系列單片機(jī)性能指標(biāo)第78頁(yè)/共89頁(yè)2.716位單片機(jī)介紹
16位單片機(jī)內(nèi)部的CPU是16位的,它對(duì)數(shù)據(jù)處理的能力通常比8位單片機(jī)強(qiáng)。下面介紹Intel和Motorola兩家公司的16位單片機(jī)。
2.7.1Intel公司的16位單片機(jī)
Intel公司于1984年推出16位高性能MCS-96系列單片機(jī),該系列包括8096BH、8096和8098三個(gè)子系列。主要性能有:①一個(gè)16位CPU可以直接面向256字節(jié)寄存器空間;②16位乘16位和32位除以16位的乘除操作速度為6.25微秒;③8路10位A/D轉(zhuǎn)換器;④9個(gè)中斷源和5個(gè)8位I/O口;⑤一個(gè)8KB和ROM存儲(chǔ)器;⑥一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國(guó)民航大學(xué)《建筑概論B》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)學(xué)校微信公眾號(hào)管理細(xì)則
- 浙江財(cái)經(jīng)大學(xué)《現(xiàn)代商務(wù)管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 缺陷管理與環(huán)境影響評(píng)估報(bào)告
- 新蘇教版一年級(jí)數(shù)學(xué)下冊(cè)第六單元《簡(jiǎn)單的數(shù)量關(guān)系(一)》教案(共2課時(shí))
- 大學(xué)生學(xué)生會(huì)主席離職工作總結(jié)報(bào)告演講稿王召鵬的
- 二零二五版建筑工程防水工程質(zhì)量檢測(cè)協(xié)議2篇
- 重慶市西南大學(xué)附屬中學(xué)2024-2025學(xué)年高一上學(xué)期定時(shí)檢測(cè)(二)物理試題(含答案)
- 2025屆湖南省衡陽(yáng)縣第四中學(xué)高三上學(xué)期期末考試歷史試題(含答案)
- 二位數(shù)乘二位數(shù)600道
- 病例討論-病毒性肝炎
- 動(dòng)環(huán)監(jiān)控系統(tǒng)介紹文檔
- 獸藥經(jīng)營(yíng)管理制度
- 第一單元 史前時(shí)期 原始社會(huì)與中華文明的起源 單元檢測(cè)試題 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史上冊(cè)
- 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024中國(guó)華電集團(tuán)限公司校園招聘高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024年國(guó)家公務(wù)員考試行測(cè)真題及答案(完整版)
- 污水處理設(shè)施設(shè)備升級(jí)改造項(xiàng)目資金申請(qǐng)報(bào)告-超長(zhǎng)期特別國(guó)債投資專項(xiàng)
- 五年級(jí)上冊(cè)小數(shù)乘除豎式計(jì)算題200道及答案
- 2024年?yáng)|南亞工業(yè)氣瓶市場(chǎng)深度研究及預(yù)測(cè)報(bào)告
評(píng)論
0/150
提交評(píng)論