單片機(jī)基礎(chǔ)知識(shí)說課講解_第1頁
單片機(jī)基礎(chǔ)知識(shí)說課講解_第2頁
單片機(jī)基礎(chǔ)知識(shí)說課講解_第3頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第一講單片機(jī)基礎(chǔ)知識(shí)引言商用廣微機(jī) WI工控計(jì)算機(jī)弋 智能儀器儀表1單片機(jī) 集散控制家用電器X.cC語言嚴(yán)咼級(jí)語言pascalFORTRAN L計(jì)算機(jī)語言 V匯編語言(不同的CPU匯編語言不同)y ( 位(幾乎沒有具體使用)4位(早期的產(chǎn)品)單片機(jī) < 8位(當(dāng)前應(yīng)用最多,51系列)16位(部分使用,與8位相比較少,80196)I 32位(未來趨勢)所有計(jì)算機(jī)的三總線結(jié)構(gòu)相同;程序流程圖相同。學(xué)習(xí)計(jì)算機(jī)的基礎(chǔ)知識(shí)是數(shù)字電子技術(shù):觸發(fā)器、計(jì)數(shù)器、移位寄存器、譯碼器、編碼器1.1 MCS-51單片機(jī)的特點(diǎn)單片機(jī)(MICROCONTROLLER ,又稱微控制器)是在一塊硅片上集成了各種部件的微

2、型機(jī)算計(jì),這些部件包括中央處理器CPU、數(shù)據(jù)存貯器RAM、程序存貯器ROM、定時(shí)器/計(jì)數(shù)器和多種I/O接口電路。MCS-51單片機(jī)的基本結(jié)構(gòu)如圖1-1所示。PO Pl P2 F3 TXDR3 麗祁而T51系列單片機(jī)結(jié)構(gòu)特點(diǎn):8 位 CPU ;片內(nèi)振蕩器及時(shí)鐘電路;32根I/O線;外部存貯器尋址范圍 ROM、RAM各64K ;3個(gè)16位的定時(shí)器/計(jì)數(shù)器;5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí);全雙工串行口; 布爾處理器。1.2 MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)圖1-2是MCS-5I單片機(jī)片內(nèi)部結(jié)構(gòu)的總框圖,它可以劃分為CPU、存貯器、并行口、串行口、定時(shí)器/計(jì)數(shù)器、中斷邏輯幾部分。RST ALE EA PSEN

3、PO Pl P2 P3圖1-2 MCS-51的內(nèi)部結(jié)構(gòu)框圖1.2.1 中央處理器MCS-51的中央處理器 CPU由運(yùn)算器和控制邏輯構(gòu)成, 其中包括若干特殊功能 寄存器(SFR)。rCPU: 8位;ALU算術(shù)、邏輯運(yùn)算單元中處理器 '程序狀態(tài)字 PSW 8位寬度、FO、RS1和RS0I振蕩周期、機(jī)器周期一、以ALU為中心的運(yùn)算器算術(shù)邏輯單元 ALU能對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算;“與”、“或”、“異或”等邏輯運(yùn)算以及位操作運(yùn)算。PSW的格式如圖1-3所示,其各位的含義是:D7D6 D5D4 D3D2D1 DOCYACF0RS1RSOOVP圖1-3 PSW的格式CY :進(jìn)位標(biāo)志。有進(jìn)

4、位/借位時(shí)CY=1,否則CY=O ;AC :半進(jìn)位標(biāo)志。當(dāng) D3位向D4位產(chǎn)生進(jìn)位/借位時(shí) AC=1,常用于十進(jìn)制 調(diào)整運(yùn)算中;F0:用戶可設(shè)定的標(biāo)志位,可置位/復(fù)位,也可供測試。RS1、RS0:四個(gè)通用寄存器組的選擇位,該兩位的四種組合狀態(tài)用來選擇03寄存器組。見表1-2。表l-2 RS1 、RS0與工作寄存器組的關(guān)系RS1RS0工作寄存器組000 組(00-07)011 組(08-0F)102 組(10-17)113 組(18-1F)OV :溢出標(biāo)志。當(dāng)帶符號(hào)數(shù)運(yùn)算結(jié)果超出 -128+127范圍時(shí)0V=1,否則OV=0。 當(dāng)無符號(hào)數(shù)乘法結(jié)果超過 255時(shí),或當(dāng)無符號(hào)數(shù)除法的除數(shù)為0時(shí),0V

5、=1,否則OV=0。P:奇偶校驗(yàn)標(biāo)志。每條指令執(zhí)行完,若A中I的個(gè)數(shù)為奇數(shù)時(shí)P=1,否則P=0, 即奇偶校驗(yàn)方式。二、控制器、時(shí)鐘電路和基本時(shí)序周期控制邏輯主要包括定時(shí)和控制邏輯、指令寄存器、譯碼器以及地址指針DPTR和程序計(jì)數(shù)器 PC等。1 . MCS-51的時(shí)鐘時(shí)鐘是時(shí)序的基礎(chǔ), MCS-51片內(nèi)由一個(gè)反相放大器構(gòu)成振蕩器,可以由它產(chǎn) 生時(shí)鐘。外部時(shí)鐘XTAL1XTAL2Vss(b)圖I-4時(shí)鐘產(chǎn)生電路(1)內(nèi)部方式:圖1-4 (a)外部方式:圖1-4 (b)2. MCS-51的基本時(shí)序周期一條指令譯碼產(chǎn)生的一系列微操作信號(hào)在時(shí)間上有嚴(yán)格的先后次序,這種次序就是計(jì)算機(jī)的時(shí)序。MCS-51的

6、主要時(shí)序?qū)⒃诖尜A器擴(kuò)展時(shí)討論,這里先介紹它的基本時(shí)序周期。S1S1S3SiscS651P1IMPLfl PlP2 PlP2PlP2| n km伉rdruriruhju圖1-5基本時(shí)序周期振蕩周期:指振蕩源的周 期,若為內(nèi)部產(chǎn)生方式時(shí), 為石英晶體的振蕩周期。機(jī)器周期:一個(gè)機(jī)器周期 含6個(gè)時(shí)鐘周期(S周期),12個(gè)震蕩周期。指令周期:完成一條指令占用的全部時(shí)間。MCS-51的指令周期含1-4個(gè)機(jī)器周期,其中多數(shù)為單周期指令,還有2周期和4周期指令。存貯器結(jié)構(gòu)計(jì)算機(jī)的存貯器的管理模式,大致可分為兩類。第一類是將程序存貯器和數(shù)據(jù)存貯器分開,并有各自的尋址機(jī)構(gòu)和尋址方式,這種結(jié)構(gòu)形式稱為哈佛型結(jié)構(gòu)。另

7、一類是存貯器邏輯空間統(tǒng)一管理,可隨意安排ROM或RAM,訪問時(shí)用同一種指令,這種結(jié)構(gòu)形式稱為普林斯頓型。MCS-51單片機(jī)的存貯器結(jié)構(gòu)屬于前者,一般微機(jī)屬于后者。程序:OOOO-OFFFFHf內(nèi)部彳 00-7F:工作寄存區(qū)、通用數(shù)據(jù)區(qū)I數(shù)據(jù):*存貯器結(jié)構(gòu)80-FF I:特殊功能寄存器、通用數(shù)據(jù)區(qū)r 程序:1000-FFFFH (或 OOOO-FFFF)1外部*L 數(shù)據(jù):0000-FFFFH存貯器組織結(jié)構(gòu):FFFF外部1000 ROMFF803020SFRItAMFFFF位尋址區(qū)OEEF內(nèi)部ROM0000EA1ROMeS=c工作寄存器組外部RAM000000圖1-5 MCS-51存貯器組織結(jié)構(gòu)數(shù)

8、據(jù)存貯器 RAM也有64KB尋址區(qū),在地址上是和 ROM重疊的。MCS-51 通過不同的信號(hào)來選通 ROM或RAM :當(dāng)從外部ROM取指令時(shí)用選通信號(hào) PSEN 而從外部RAM讀寫數(shù)據(jù)時(shí)采用讀寫信號(hào) RD或WF來選通。因此不會(huì)因地址重疊而出現(xiàn)混亂。第二講MCS-51單片機(jī)的內(nèi)部結(jié)構(gòu)片內(nèi)并行接口P3P0單片機(jī)(8051)常用功能(數(shù)據(jù)/低8位地址)常用并行端口常用于地址高 8位(A8-A15)常用第二功能(RXD TXD INTO、INT1、TO、T1、WR RD)1.2.4 MCS-51 的內(nèi)部資源串行口內(nèi)部資源定時(shí)器/計(jì)數(shù)器-中斷系統(tǒng):5個(gè)中斷源(INTO、TO、INT1、T1和串口)1.2

9、.5 MCS-51的芯片引腳 XTAL1、XTAL1:晶體、電容; ALE (地鎖存信號(hào)):鎖存P0 口的地址低8位,頻率=f soC6 ;PSEN(讀指令信號(hào)):接程序存貯器的允許輸端子;WR RD分別與外部數(shù)據(jù)存貯器的讀、端子相連接EA:接高電平(或接低電平)(T2) P1.0friE)口 Pi.iP1.2Pl.3ri 4Pl.51叫6Pl.7IST/VPI)(RXD) P3.0麗詢P3.2(mTT| P33C) P3. I(Tl) F35P3.6 念功P3.7 XTAL2TCTAI 47£910lll2l3gl5l6l7l8舊鈾VCC PO.DPO+1P0.2P(OP0.1P0

10、.5P0.6P0.7i 1T- AyjWUADIAD2AD3ADIA 05AD6AD7AL5二1陀5A14P2.5Al 3Al 2All二A10ZZh*2.iA9二lP£.廿AS-JPSFN圖1-8 MCS-51引腳圖單片機(jī)的工作方式單片機(jī)的工作方式包括:復(fù)位方式、程序執(zhí)行方式、單步執(zhí)行方式、低功耗操 作方式以及EPROM編程和校驗(yàn)方式。1. 復(fù)位方式:經(jīng)典的上電復(fù)位電路2. 程序執(zhí)行方式:(1 )執(zhí)行內(nèi)部程序;(2)執(zhí)行外部程序3. 單步執(zhí)行方式:用于調(diào)試程序和系統(tǒng)4. 低功耗操作方式5. 編程和校驗(yàn)第三講定時(shí)器/計(jì)數(shù)器MCS-51子系列單片機(jī)有 2個(gè)定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)

11、器0和1, 52子 系列單片機(jī)(8032/8052)除了有上述2個(gè)定時(shí)器/計(jì)數(shù)器外,還有一個(gè)定時(shí)器 /計(jì)數(shù) 器2,后者的功能比前兩者強(qiáng)。1.3.1 定時(shí)器/計(jì)數(shù)器 0和1在專用寄存器TMOD定時(shí)器方式)中,有一個(gè)控制位(C/T),分別用于控制定時(shí) 器/計(jì)數(shù)器0和1是工作在定時(shí)器方式還是計(jì)數(shù)器方式。1. 輸入信號(hào)基本要求:24個(gè)振蕩周期,即兩個(gè)機(jī)器周期;2. 作為定時(shí)器時(shí),計(jì)數(shù)速率是振蕩頻率/12 ;3. 由定時(shí)器/計(jì)數(shù)器模式控制寄存器設(shè)置工作方式。模式0: 13位寬度,主要保持與 48系列兼容; 模式1: 16位寬度,最大計(jì)數(shù) 65535;模式2: 8位自動(dòng)重裝載,用于周期性的作某件事; 模式

12、3:定時(shí)器/計(jì)數(shù)器0和1不同,適合于額外定時(shí)器。1.3.2 定時(shí)器/計(jì)數(shù)器2 (自己閱讀)定時(shí)器/計(jì)數(shù)器2是一個(gè)具有16位自動(dòng)重裝載或捕獲能力的定時(shí)器/計(jì)數(shù)器。 專用寄存器T2CON是它的控制寄存器。可用作波特率發(fā)生器定時(shí)/計(jì)數(shù)方式1.3.3 定時(shí)器/計(jì)數(shù)器的控制和狀態(tài)寄存器專用寄存器TMODTCOF和 T2CON用于控制和確定各定時(shí)器/計(jì)數(shù)器的功能和操 作模式。這些寄存器的內(nèi)容靠軟件設(shè)置。系統(tǒng)復(fù)位時(shí),寄存器的所有位都被清零。1. 模式控制寄存器TMOD8位寬度,高四位和低四位分別控制定時(shí)器/計(jì)數(shù)器1和0,參閱圖1-11、圖 1-12、圖 1-13。MOVTOMD #0010 0001B;定時(shí)

13、器1, 8位自動(dòng)重裝載MOVTH1, #56;時(shí)間常數(shù)MOVTL1, #56;時(shí)間常數(shù)SETBTR1;啟動(dòng)定時(shí)器開始工作定時(shí)器1圖1-16定時(shí)器/計(jì)數(shù)器控制寄存器 TMOD定時(shí)器0D7D6D5D4D3D2D1D0GATEc/TM1M0GATEc/TM1M0(MSB)(LSB)例表1-5操作模式控制位M1 MO操作模式0 0模式0。TLx中低5位與THx中8位構(gòu)成13位計(jì)數(shù)器,TLx相當(dāng)一 個(gè)5位定標(biāo)器(見圖1-11)。0 1模式10 TLx與了 Hx構(gòu)成全16位計(jì)數(shù)器,操作模式同上,但無定標(biāo)尹1 0模式2o 8位自動(dòng)重裝載的定時(shí)器/計(jì)數(shù)器,每當(dāng)計(jì)數(shù)露TLx溢岀時(shí),THx中的內(nèi)容重新裝載到TLx

14、(見圖1-12) o1 1模式3。對(duì)于定時(shí)器0,分成2個(gè)8位計(jì)數(shù)器(見圖1-13)。對(duì)于定時(shí) 器1,停止計(jì)數(shù)。2. 控制寄存器TCON(MSB)(LSB)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0圖1-17定時(shí)器/計(jì)數(shù)器控制寄存器 TCONTF0、TR0:定時(shí)器/計(jì)數(shù)器0TF1、TR1:定時(shí)器/計(jì)數(shù)器1IE0、IT0 :外部中斷0IE1、IT1 :外部中斷1例如可用以下語句:SETBIT0/外部中斷0下降沿觸發(fā)CLRIT1/外部中斷1低電平觸發(fā)3. 定時(shí)器/計(jì)數(shù)器2控制寄存器T2C0N(MSB( LSB)D7D6D5D4D3D2D1D0TF2EXF2RCL

15、KTCLKEXEN2TR2C/T2CP/ RL 2圖1-18 T2C0N定時(shí)器/計(jì)數(shù)器2控制寄存器作為波特率發(fā)生器:RCLK=TCLK=1(參考圖 1-15)C/T2=0TR2=1第四講串行口MCS-51中的串行接口使它增色不少。此串行接口是一個(gè)全雙工通信接口,即 能同時(shí)進(jìn)行發(fā)送和接收。它可以作UART通用異步接收和發(fā)送器)用,也可以作同步移位寄存器用。1.4.1 數(shù)據(jù)緩沖寄存器 SBUFSBUF輸入、輸出寄存器,可同時(shí)發(fā)送、接收。實(shí)際上,這兩個(gè)寄存器共 用了物理地址。1.4.2 串行口控制寄存器 SCONSCON用于控制和監(jiān)視串行口的工作狀態(tài)。它的各位定義,見圖1-19,并說明如下:(MSB

16、( LSB)D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI圖1-19串行控制寄存器SCONSM0 SM1工作模式,共 4種;SM2模式2和模式3方式時(shí)使用;REN允許接收;TB8:發(fā)送數(shù)據(jù)的第8位;RB8接收數(shù)據(jù)的第8位;TI :發(fā)送完成(軟件清除);RI :接收數(shù)據(jù)就緒(軟件清除);表1-6串行口操作模式選擇SM1 SM0模式功能波特率0 00同步移位寄存器fosc/120 118 位 UART可變1 029 位 UARTfosc / 64 或 fosc/321 l39 位 UART可變1.4.3 模式0在操作模式0下,串行口作同步移位寄存器用, 其波特率是固定

17、的,為fosc/12, 其中fosc是振蕩器頻率。這時(shí)數(shù)據(jù)由RXD(P3.0)端出入,同步移位時(shí)鐘由TXD(P3.1) 端輸出。發(fā)送或接收的是 8位數(shù)據(jù),低位在先(參見圖1-20 )。匯編語言程序:C語言程序:ORG8000HMOVSCON, #00010000BMOVSBUF, #88HJNBTI,$;查詢方式CLRTIEND#in elude <reg52.h>包含文件#i nclude <stdio.h>包含文件main ()SCON=0X10;/初始化串行控制寄存器SBUF=0X88;/輸出數(shù)據(jù)while(!TI);/查詢方式TI=0;時(shí)器1或2的溢出速率(參見

18、圖1-22 )。MOVSCON,#01010000B;通訊模式(11.0592MHz)MOVTMOD,#00100000B;定時(shí)模式(注意定時(shí)器0)MOVTL1,#0E8H;時(shí)間常數(shù)(RS232:1200)MOVTH1,#0E8H;時(shí)間常數(shù)SETBTR1啟動(dòng)定時(shí)器時(shí),傳輸?shù)氖?0位:1位起始位(0),8位寬度的數(shù)據(jù)(低144 模式1串行口工作于模式位在先),1位停止位(1)。由TXD發(fā)送,由RXD接收。波特率是可變的,取決于定(TH1) =256fosc32 12波特率,fosc=11.0592MHz,SMOD=0定時(shí)器1作為波特率發(fā)生器時(shí),常用時(shí)間常數(shù)及誤差對(duì)照表誤差15040H300A0H

19、600D0H1200E8H2400F4H4800FAH9600FDH0%波特率(Hz)TH10%0%0%0%0%0%1.4.5 模式2和3操作模式2和3中,發(fā)送(通過TXD)和接收(通過RXD)的都是11位:1位起始 位(0),8位數(shù)據(jù)(低位在先),1位可編程位(第9數(shù)據(jù)位)和1位停止位(1)。發(fā)送 時(shí),可編程位(TB8可賦予0或1。接收時(shí)可編程位進(jìn)入 SCON中的RB8模式2和模式3的工作原理類同,唯一的差別是:模式 2的波特率為fosc/32 或fosc/64,而模式3的波特率是可變的,利用定時(shí)器 1或定時(shí)器2作波特率發(fā)生 器(參見圖1-22和圖1-23 )。定時(shí)器1作為波特率發(fā)生器:定時(shí)

20、器1的計(jì)數(shù)速率=fosc/12SMpD=0 時(shí),n=32波特率=定時(shí)器1的計(jì)數(shù)速率/n PCON寄存器-SMOD=1時(shí),n=16SMOD波特率=-(定時(shí)器/計(jì)數(shù)器1溢出速率)322SMODosc3212 256 (TH 1)定時(shí)器2作為波特率發(fā)生器:波特率fosc2 16 65536 (RCAP2H,RCAP 2L)第五講中斷系統(tǒng)MCS-51系列中,有5個(gè)中斷源(或6個(gè)中斷源),可分為2個(gè)優(yōu)先級(jí),其中每 一個(gè)中斷源的優(yōu)先級(jí)都可以由程序排定(圖1-26 )。1.5.1 允許中斷寄存器IE (物理地址:A8,可按位尋址)圖1-27示出允許中斷寄存器各位的定義?,F(xiàn)說明如下:(MSB)(LSB)D7D

21、6D5D4D3D2D1DOEAXET2ESET1EX1ETOEXO圖1-27 IE 允許中斷寄存器1.5.2 中斷優(yōu)先級(jí)寄存器IP (物理地址:D8,可按位尋址)MCS-51的中斷分為2個(gè)優(yōu)先級(jí)。每個(gè)中斷源的優(yōu)先級(jí)都可以通過中斷優(yōu)先級(jí) 寄存器IP中的相應(yīng)位來設(shè)定。圖 1-28示出IP的,各位定義,其中:(MSB)(LSB)D7D6D5D4D3D2D1D0XXPT2PSPT1PX1PT0PX0圖1-28 IP 允許中斷優(yōu)先級(jí)寄存器例如SETBPX0;外部中斷0為高優(yōu)先級(jí)SETBES;串行中斷SETBEA;開總中斷1.5.3 優(yōu)先級(jí)結(jié)構(gòu)靠IP寄存器把各中斷源的優(yōu)先級(jí)分為高低2級(jí)。它們遵循這樣2條基

22、本規(guī)則:1. 低優(yōu)先級(jí)中斷可被高優(yōu)先級(jí)中斷所中斷,反之不能;2. 一種中斷(不管是什么優(yōu)先級(jí))一旦得到響應(yīng),與它同級(jí)的中斷不能再中斷它。中斷源同級(jí)內(nèi)的優(yōu)先權(quán)外部中斷0最高定時(shí)器/計(jì)數(shù)器0溢出外部中斷1定時(shí)器/計(jì)數(shù)器1溢出串行口1f定時(shí)器/計(jì)數(shù)器2溢出最低1.5.4 中斷響應(yīng)協(xié)議當(dāng)某中斷源提出中斷請(qǐng)求后,作為應(yīng)答,CPU首先使相應(yīng)的“優(yōu)先級(jí)激活”觸發(fā)器置位,以阻斷同級(jí)和低級(jí)的中斷。硬件中斷服務(wù)子程序調(diào)用時(shí), 把當(dāng)時(shí)程序計(jì)數(shù)器 PC的內(nèi)容壓入堆棧(在MCS-51 中,PC是16位的,占用了 2個(gè)字節(jié),沒有自動(dòng)保存程序狀態(tài)字 PSW的內(nèi)容),同 時(shí)還根據(jù)中斷的來源,把相應(yīng)的矢量單元地址裝入PC中。這

23、些矢量地址是:中斷源矢量單元外部中斷00003H最咼定時(shí)器0溢出000BH外部中斷10013H定時(shí)器1溢出001BH串行口0023H定時(shí)器2溢出或T2EX端出現(xiàn)負(fù)跳變002BH最低注意:仿真器常常將中斷入口地址映射到別的地址空間。夕卜部中斷外部中斷的激活方式分為兩種:一種是電平激活,另一種是邊沿激活。這兩種 方式可以靠TCON寄存器中的中斷方式位 ITI或ITO來控制。(MSB)(LSB)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT01.5.6 中斷請(qǐng)求的撤除CPU響應(yīng)某中斷請(qǐng)求后,在中斷返回(RETI)前,該中斷請(qǐng)求應(yīng)該撤除,否則會(huì)引起另一次中斷。定時(shí)器/計(jì)

24、數(shù)器0和1:進(jìn)入中斷服務(wù)后自動(dòng)清除中斷申請(qǐng)標(biāo)志位TF0或TFI ;邊沿激活:自動(dòng)清除IE0、IE1 ;外部中斷0和1: q、電平激活:采取措施,例如對(duì)信號(hào)進(jìn)行整形等。1.5.7 中斷響應(yīng)時(shí)間從外部中斷請(qǐng)求有效到開始執(zhí)行服務(wù)程序的第一條指令,中間要隔3個(gè)機(jī)器周期,這是最短的響應(yīng)時(shí)間。當(dāng)對(duì) IE,IP寄存器進(jìn)行操作或執(zhí)行 RETI指令時(shí),不會(huì) 立即相應(yīng)中斷源的申請(qǐng)。第六講MCS-51單片機(jī)系統(tǒng)擴(kuò)展在很多應(yīng)用場合,MCS-51自身的存貯器和I/O資源不能滿足要求,這時(shí)就要 進(jìn)行系統(tǒng)擴(kuò)展。外部總線的擴(kuò)展以8051單片機(jī)最小系統(tǒng)為例,介紹數(shù)據(jù)總線、地址總線和控制總線?;疽螅菏炀氄莆兆钚∠到y(tǒng)的結(jié)構(gòu)及三

25、組總線。P0ALEPSENWRRD鎖存器-D0-D7-A0A7DEUSABUSCBUS圖1-29 MCS-51外部三總線示意圖162外部程序存貯器的擴(kuò)展介紹簡明取指令時(shí)序;在最小系統(tǒng)的基礎(chǔ)上,以擴(kuò)展2764 為程序存貯器為例,介紹擴(kuò)展方法?;疽螅菏炀氄莆粘绦虼尜A器的擴(kuò)展方法及取指時(shí)序。PSEN 廠竺嘆地址有效數(shù)據(jù)有效圖1-32外部程序存貯器的簡明操作時(shí)序rm ra111K£i皿!UITTIEi iTpKj|H3丁TE-EFMMlUlM|iHPnFa応uri-1圖1-33外部程序存貯器的連接11JM1!41Ofl'l' 4 /外部數(shù)據(jù)存貯器的擴(kuò)展 介紹簡明數(shù)據(jù)存貯時(shí)

26、序; 在最小系統(tǒng)的基礎(chǔ)上,以擴(kuò) 展6264為程序存貯器為例, 介紹擴(kuò)展方法?;疽螅菏炀氄莆諗?shù)據(jù)存貯器 的擴(kuò)展方法及讀寫時(shí)序。坐嘆地址有效_數(shù)據(jù)有效Il v!r:土亠亠-H土土:圖 1-381* 叩川 4圖1-36外部數(shù)據(jù)存貯器操作的簡明時(shí)序圖11馴凡袒尼和山春ArN'3 mALLhl-i遊応ME口 .'擴(kuò)展6264靜態(tài)RAM第七講MCS-51單片機(jī)的指令系統(tǒng)1.7.1 尋址方式尋址方式就是根據(jù)指令中給出的地址尋找真實(shí)操作數(shù)地址的方式。MCS-51單片機(jī)的尋址方式有種:寄存器尋址、直接尋址、立即尋址、變址尋址、相對(duì)尋址、間接尋址和位尋址。寄存器尋址:MOVA,R0;A (RO

27、)直接尋址:MOVA,4FH;A4 (4FH)立即尋址:MOVA, #6FH;A 6FH間接尋址:MOVA,R1;A (R1)相對(duì)尋址:SJMPrel;PC (PC)+ 2+ rel變址尋址:MOVCA,A 十 DPTR;A4 (A)十(DPTR)位尋址:SETBEA;EA=1指令說明MCS-51指令系統(tǒng)按其功能可分為:數(shù)據(jù)傳送指令、轉(zhuǎn)移指令、算術(shù)運(yùn)算指令、 邏輯運(yùn)算指令和十進(jìn)制指令。1.7.3 偽指令匯編語言必須通過匯編器的處理,才能轉(zhuǎn)換為計(jì)算機(jī)能識(shí)別和執(zhí)行的機(jī)器語言。偽指令是匯編器用的指令。 MCS-51 匯編器常用的偽指令有以下幾種:一、ORG偽指令(Origin)ORG 0000H二、

28、DB 偽指令 (Define Byte)DB40H,56H,' A'三、DW偽指令(Define Word)DW1234H,5678,0AF0H四、EQU或=偽指令(Equal)COUNT=100SPACE EQU50H五、DATA 偽指令 (Data)ERROR DATA80H六、XDATA偽指令(External Data)ADCXDATA4000H七、BIT 偽指令LEDBIT30H八、END 偽指令1.7.4 匯編語言編程6400 16 ?ORG0000H; 定義程序首地址SJMPMAIN; 跳轉(zhuǎn)到主程序ORG0040H; 主程序地址MAIN:MOVDPTR,#6400

29、; 省去人工轉(zhuǎn)換MOVR2,#00H; 被除數(shù)MOVR3,#00HJMOVR4,DPHJMOVR5,DPLJMOVDPTR,#16; 除數(shù)MOVR6,DPHJMOVR7,DPLJLCALLDIVD; 調(diào)用出除法子程序MOVDPH,R3; 商的高 8 位 ?MOVDPL,R4; 商的低 8 位 ?NOPSJMP $;標(biāo)號(hào):DIVD; 功能:雙字節(jié)二進(jìn)制無符號(hào)數(shù)除法時(shí)溢出。; 入口條件:被除數(shù)在 R4 、 R5 中,除數(shù)在 R6 、 R7 中。 ; 出口信息: OV=0 時(shí),雙字節(jié)商在 R2 、 R3 中, OV=1;影響資源:PSW、A、B、R1R7;堆棧需求:2字節(jié)JDIVD:CLRC; 比較

30、被除數(shù)和除數(shù)MOVA, R3SUBBA, R7MOVA, R2SUBBA, R6JCDVD1SETBOV; 溢出RETDVD1:MOVB, #10H; 計(jì)算雙字節(jié)商DVD2:CLRC; 部分商和余數(shù)同時(shí)左移一位MOVA, R5RLCAMOVR5, AMOVA, R4RLCAMOVR4, AMOVA, R3RLCAMOVR3, AXCHA, R2RLCAXCHA, R2MOVF0, C; 保存溢出位CLRCSUBBA, R7; 計(jì)算( R2R3 R6R7 )MOVR1, AMOVA, R2SUBBA, R6ANLC, /F0JCDVD3MOVR2, AMOVA, R1MOVR3, AINCR5D

31、VD3: DJNZB, DVD2MOVA, R4MOVR2, AMOVA, R5MOVR3, ACLROVRETEND; 結(jié)果判斷; 夠減,存放新的余數(shù); 商的低位置一計(jì)算完十六位商( R4R5 ); 將商移到 R2R3 中; 設(shè)立成功標(biāo)志1.7.4 C 語言編程#include <reg52.h> #include <stdio.h>void main(void)unsigned long int x; unsigned int y,z; x=6400;y=16;z=x/y;/ 包含文件/ 包含文件/ 主函數(shù)/ 長整型變量/ 整型變量/ 賦初值(被除數(shù))/ 除數(shù)/ 計(jì)

32、算while(1);第八講 keil 51 應(yīng)用入門KEIL51 軟件是眾多單片機(jī)應(yīng)用軟件開發(fā)的優(yōu)秀軟件之一,它集編輯、編譯、 仿真于一體,支持匯編、 PLM 語言和 C 語言的程序設(shè)計(jì);界面友好,易學(xué)易用。2.1 KEIL51 的集成環(huán)境2.2 簡單的程調(diào)試2.3 建立一個(gè)項(xiàng)目2.4 項(xiàng)目中含有多個(gè)文件2.5 匯編語言2.6 機(jī)器代碼的效率比較(在實(shí)驗(yàn)室進(jìn)行)第九講 keil 51 軟件調(diào)試技巧這一章我們將簡單地向讀者介紹調(diào)試用戶應(yīng)用程序的調(diào)試技巧, 并給出相應(yīng)的 程序清單, 必要時(shí)還給出與之相應(yīng)的操作方法及執(zhí)行程序時(shí)的主要屏幕畫面, 以方 便讀者的學(xué)習(xí)。(在實(shí)驗(yàn)室進(jìn)行)3.1 P1 口作為

33、輸入端口3.2 P1 口作為輸出端口3.3 外部中斷3.4 定時(shí)/ 計(jì)數(shù)器 0作為定時(shí)器3.5 定時(shí)/ 計(jì)數(shù)器 0作為計(jì)數(shù)器3.6 調(diào)試函數(shù)第十講 MCS-51 單片機(jī)系統(tǒng)擴(kuò)展這一章將向讀者介紹一些 MCS-51 單片機(jī)系統(tǒng)擴(kuò)展的常用電路設(shè)計(jì), 其中有并 行口、串并轉(zhuǎn)換、靜態(tài)數(shù)碼管顯示、動(dòng)態(tài)數(shù)碼管顯示、A/D 轉(zhuǎn)換、 D/A 轉(zhuǎn)換、時(shí)鐘日歷、 IC 卡等,舉例中,均以 C 語言編程(為了兼顧初學(xué)者,部分地給出對(duì)應(yīng)的 匯編程序),不熟悉的讀者,可參閱本書的第五、六、七、八、九章。4.1 擴(kuò)展并行口( 1)用閑置不用的口線作為選通信號(hào)此種方式連線簡單,編程方便靈活。如果使用74LS573 ( 74

34、LS373)且不對(duì)P1 口進(jìn)行驅(qū)動(dòng)處理, 則最多可擴(kuò)展四個(gè)同樣類型的并行輸出端口,當(dāng)然還需要與之對(duì)應(yīng)4 個(gè)選通信號(hào)。ORG8000HCLRP3.3;選通信號(hào)無效MOVP1, #00H; P1 口設(shè)定為輸出口MOVP1, #80H;欲輸出的數(shù)據(jù)為 80SETBP3.3;選通信號(hào)有效CLRP3.3;鎖定數(shù)據(jù),選通信號(hào)無效END下邊是用 C 語言編寫的同樣功能的程序:#include <reg52.h>/包含文件#include <stdio.h>/包含文件sbit CLK =P3A3;main()CLK=0;/選通信號(hào)無效P1=0X00;/P1 口設(shè)定為輸出口P1=0X80

35、;/ 欲輸出的數(shù)據(jù)為 80CLK=1;/選通信號(hào)有效CLK=0;/鎖定數(shù)據(jù),選通信號(hào)無效(2)部分地址譯碼法擴(kuò)展并行輸出端口 利用地址譯碼法擴(kuò)展并行輸出端口需要占用單片機(jī)的數(shù)據(jù)存貯器空間, 其優(yōu)點(diǎn) 是可擴(kuò)展的端口數(shù)幾乎不受限制, 編程并不比前一種方法復(fù)雜, 缺點(diǎn)是需要一些組 合邏輯電路與之配合。圖 4-2 就是基于這一種方法而實(shí)現(xiàn)的硬件電路。從圖中可以 看到所擴(kuò)展的并行輸出端口地址是0000H1FFFH ,下邊分別給出操作該端口的匯編語言和 C 語言源程序:ORG 0000HMOVDPTR ,#0000HMOVA , #80HMOVX DPTR ,AEND C 語言源程序如下:#include

36、 <reg52.h>#include <stdio.h> #include <absacc.h> #define our_port XBYTE0x0000main()our_port=0x80;圖中 74HC138 使用了地址總線的高三位, 即 A 15A 14A 13,把 64K 地址空間分為 8 等份,其中新擴(kuò)展的 8 位并行端口占用了 0000H1FFFH 地址空間,可見地址空 間的浪費(fèi)還是比較嚴(yán)重的, 但在大多數(shù)情況下還是可以接受的。 如果需要充分利用 地址空間,可以使用全地址譯碼法。( 3)全地址譯碼法擴(kuò)展并行輸出端口這一種方法需要借助于數(shù)字電子學(xué)

37、中的一些門電路來實(shí)現(xiàn),此處我們不再詳述,而是采用大家已經(jīng)比較熟悉的可編程邏輯器件來實(shí)現(xiàn)這一設(shè)計(jì)要求。 首先設(shè)計(jì)一個(gè)全譯碼器,如下是實(shí)現(xiàn)這一要求的subdesign encoder(A15,A14,A13,A12,A11,A10,A9,A8A7,A6,A5,A4,A3,A2,A1,A0,WRENABLE)BEGINPLD 設(shè)計(jì)文件(圖 4-3 原理圖)::INPUT;:INPUT;:OUTPUT;ENABLE=A15 & A14 & A13 & A12 & A11 &A10 & A9 & A8 & A7 & A6 &

38、A5 & A4 & A3 & A2 & A1 &A0 & !WR;END;4.2 串并轉(zhuǎn)換在 8051 系列單片機(jī)系統(tǒng)中,如果串行口閑置不用,則利用它來擴(kuò)展并行輸出 或輸入端口。 這種擴(kuò)展方法不占用外部數(shù)據(jù)存貯器的地址空間, 而且也節(jié)省單片機(jī) 的硬件資源,但操作速度較慢,級(jí)連的越多,速度越慢。(1) 74HC164擴(kuò)展并行輸出端口(圖4-4)擴(kuò)展方法如圖 4-4 所示,下邊分別給出匯編語言和 C 語言程序。匯編語言程序:ORG 0000HMOVSCON, #00000000BMOVSBUF , #88HENDC 語言程序:#include <

39、;reg52.h>#include <stdio.h>/包含文件/包含文件main()SCON=0X00;SBUF=0X88;/初始化串行控制寄存器/輸出數(shù)據(jù)(2)用74HC165擴(kuò)展并行輸入端口擴(kuò)展方法如圖 4-5 所示,下邊分別給出匯編語言和 C 語言程序。 匯編語言程序:ORG0000HSETBP1.0;數(shù)據(jù)鎖入無效CLRP1.0;鎖入數(shù)據(jù)SETBP1.0;數(shù)據(jù)鎖入無效MOVSCON,#00010000B;模式 0 工作方式,啟動(dòng)一次接收過程JNBRI,$;等待接收結(jié)束MOVA , SBUF;讀取已接收的數(shù)據(jù)CLRRI;清除接收就緒標(biāo)志ENDC 語言程序:#includ

40、e <reg52.h>/包含文件#include <stdio.h>/包含文件sbit load = P1A0;main()unsigned char x;load=1;/并行數(shù)據(jù)鎖入無效load=0;/并行數(shù)據(jù)鎖入使能load=1;/并行數(shù)據(jù)鎖入無效SCON=0X10;/模式 0 工作方式,啟動(dòng)一次接收過程while(!RI);/等待數(shù)據(jù)移入x=SBUF;/讀取已接收的數(shù)據(jù)RI=0;/清除接收就緒標(biāo)志第十一講 數(shù)碼管顯示4.3 靜態(tài)數(shù)碼管顯示數(shù)碼管顯示器, 是各種儀器設(shè)備所不可缺少的重要組成部分, 是儀器設(shè)備與人 對(duì)話的一種重要形式, 它告訴人們機(jī)器的運(yùn)行狀態(tài)、數(shù)據(jù)的

41、處理結(jié)果、 提示操作人 員下一步要進(jìn)行的操作等。 按照顯示方法的不同, 可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種, 這一節(jié)討論靜態(tài)數(shù)碼管顯示的設(shè)計(jì)方法。匯編語言源程序:ORG0000HMOVSCON,#00H;初始化串行控制寄存器CLRTI;清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志MOVSBUF,#01H;輸出數(shù)據(jù)“ 8”JNBTI,$;等待數(shù)據(jù)發(fā)送結(jié)束CLR TIMOV SBUF,#9FH JNBTI, $CLR TIENDC 語言源程序:;清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志;輸出數(shù)據(jù)“ 1” ;等待數(shù)據(jù)發(fā)送結(jié)束 ;清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志#include <reg52.h>#include <stdio.h>/包含

42、文件/包含文件main()SCON=0X00;TI=0;SBUF=0X01; while(!TI);TI=0;SBUF=0X9F; while(!TI);TI=0;/初始化串行控制寄存器 /清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志 / 輸出數(shù)據(jù)“ 8” /等待數(shù)據(jù)發(fā)送結(jié)束/清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志 / 輸出數(shù)據(jù)“ 1” /等待數(shù)據(jù)發(fā)送結(jié)束 /清除數(shù)據(jù)發(fā)送結(jié)束標(biāo)志對(duì)于圖 4-6 來講,編寫程序相對(duì)比較簡單,一旦將欲顯示的數(shù)據(jù)發(fā)送出去,只要當(dāng)前顯示的數(shù)據(jù)沒有變化,就無須理睬數(shù)碼管顯示器, 這就是靜態(tài)數(shù)碼管顯示的好處。但是,如果顯示的位數(shù)比較多,硬件的開銷、電源的功耗等問題,將變得更 加突出。4.4 動(dòng)態(tài)數(shù)碼管顯示動(dòng)態(tài)數(shù)碼

43、管顯示, 可以大幅度地降低硬件成本和電源的功耗, 因?yàn)槟骋粫r(shí)刻只 有一個(gè)數(shù)碼管工作, 也就是所謂的分時(shí)顯示, 故顯示所需要的硬件電路可分時(shí)復(fù)用。 圖 4-7 基于這種思想的 8 位動(dòng)態(tài)顯示電路。 圖中使用了兩片 74LS373 作為 7 段碼和 位碼驅(qū)動(dòng)鎖存器, 8 個(gè)數(shù)碼管是共陰極數(shù)碼管,一片 ULN2803 作為位增強(qiáng)驅(qū)動(dòng)器。ULN2803 是 8 反相驅(qū)動(dòng)器,其最大驅(qū)動(dòng)電流為 500mA ,假如數(shù)碼管的 8 個(gè)二 極管都點(diǎn)亮,則共有 80mA 電流從陰極流出, ULN2803 完全有能力 80mA 的灌入 電流。若 S0 和 S1 選通信號(hào)的地址分別為 7F80H 、7F90H ,定時(shí)器

44、 1 作為定時(shí)刷新定 時(shí)器,定時(shí)時(shí)間常數(shù)為 2.5mS,C 語言源程序如下:#include <at89x52.h>#include <stdio.h>#include <absacc.h>#define SEGMENT XBYTE0x8000#define BIT_LED#define fosc#define time0XBYTE0x800111.05922500/段碼寄存器地址 /位碼寄存器地 /晶振頻率 /定時(shí) 2500uSunsigned char data display_bit,display_buffer8;unsigned char data

45、 time0_h,time0_l;unsigned int idata time0_times;unsigned char get_code(unsigned char i); void display(void);main()BIT_LED=0;TMOD=0x21; time0_times=65536-time0*fosc/12; time0_h =(time0_times/256 ); time0_l =(time0_times%256); TH0=time0_h;TL0=time0_l;TR0=1;EA=ET0=1; display_bit=0x01; display_buffer7=8

46、; display_buffer6=7; display_buffer5=6; display_buffer4=5; display_buffer3=4; display_buffer2=3; display_buffer1=2; display_buffer0=1; while(1);/定時(shí)器 /計(jì)數(shù)器 0 定時(shí)方式 1/ 高 8 位和低 8 位時(shí)間常數(shù)/ 啟動(dòng)定時(shí)器 0/允許中斷 /從第一個(gè)數(shù)碼管開始顯示void time0_int(void) interrupt 1 TH0=time0_h;TL0=time0_l;/中斷服務(wù)子程序display();/共需 40m 秒unsigned c

47、har get_code(unsigned char i) unsigned char p;switch (i)case0:p=0x3F;break;/*0*/case1:p=0x06;break;/*1*/case2:p=0x5B;break;/*2*/case3:p=0x4F;break;/*3*/case4:p=0x66;break;/*4*/case5:p=0x6D;break;/*5*/case6:p=0x7D;break;/*6*/case7:p=0x07;break;/*7*/case8:p=0x7F;break;/*8*/case9:p=0x67;break;/*9*/case

48、10:p=0x77;break;/*A*/case11:p=0x7C;break;/*B*/case12:p=0x39;break;/*C*/case13:p=0x5E;break;/*D*/case14:p=0x79;break;/*E*/case15:p=0x71;break;/*F*/default:break;return (p);void display(void)unsigned char i; switch (display_bit) case 1: i=0;break;case 2: i=1;break;case 4: i=2;break;case 8: i=3;break;c

49、ase 16: i=4;break; case 32: i=5;break; case 64: i=6;break; case 128: i=7;break; default : break;BIT_LED=0;/ 關(guān)閉顯示SEGMENT=get_code(display_bufferi);/ 送段碼BIT_LED=display_bit;/ 送位碼if (display_bit<0x64) display_bit=display_bit*2;else display_bit=0x01;第十二講 A/D 轉(zhuǎn)換( ADC0809)ADC0809是8通道8位逐次逼近型 A/D轉(zhuǎn)換器,典型時(shí)鐘頻率為 640KHz,每一通 道轉(zhuǎn)換時(shí)間約為100卩S,即64個(gè)脈沖轉(zhuǎn)換一次。一、等待連接方式電路如圖4-10所示。圖中,將 ALE信號(hào)二分頻作為時(shí)鐘信號(hào)。如果單片機(jī)晶振6MHz,則ALE信號(hào)的頻率為1MHz故分頻后送給 ADC0809的時(shí)鐘信號(hào)為500KHZ。IN0-IN7接模擬信號(hào),8通道輪流采集一次數(shù)據(jù),并存貯與內(nèi)部RAM中。A/D轉(zhuǎn)喚起的地址為 7FFFH。此種方式編程簡單, 但單片機(jī)的有效利用率不高, 常常在只有單一任務(wù)時(shí)使用 這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論