




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)原理及應(yīng)用技術(shù)項(xiàng)目一單片機(jī)入門
——信號(hào)燈閃爍系統(tǒng)設(shè)計(jì)任務(wù)一單片機(jī)簡(jiǎn)介任務(wù)二單片機(jī)中的數(shù)制與編碼任務(wù)三數(shù)字電路入門任務(wù)四單片機(jī)應(yīng)用系統(tǒng)開發(fā)
——信號(hào)燈閃爍系統(tǒng)軟硬件設(shè)計(jì)項(xiàng)目總結(jié)
任務(wù)一單片機(jī)簡(jiǎn)介一、 什么是單片機(jī)二、 單片機(jī)的發(fā)展歷史與常見產(chǎn)品三、 單片機(jī)的應(yīng)用領(lǐng)域與未來發(fā)展趨勢(shì)四、 MCS-51系列單片機(jī)的特點(diǎn)
一、什么是單片機(jī)鼠標(biāo)中的單片機(jī)鍵盤中的單片機(jī)單片機(jī)(SingleChipMicrocomputer,SCM)是芯片級(jí)的計(jì)算機(jī)系統(tǒng),常被嵌入各種現(xiàn)代設(shè)備中作為控制器件
。二、 單片機(jī)的發(fā)展歷史與常見產(chǎn)品(一)單片機(jī)的發(fā)展階段:1971~1976年為單片機(jī)的萌芽發(fā)展時(shí)期。
1976~1979年為8位單片機(jī)的初始發(fā)展階段。
1979~1983年為8位單片機(jī)的完善發(fā)展階段。
1983~1990年為單片機(jī)向微控制器(MCU)發(fā)展的階段。1990年至今,單片機(jī)的發(fā)展趨向多元化。
1.Intel公司
MCS-51系列單片機(jī):8031、8051、8751、8032、8052和8752等
2.Motorola公司
8位單片機(jī)代表:M6805、M68HC05、M68HC11、M68HC12
3.ATMEL公司
8位單片機(jī)代表:AT89、AT90兩個(gè)系列4.Microchip公司
8位PIC系列單片機(jī):PIC16C5X、PIC12C6XX、PIC17CXX(二)常見產(chǎn)品5.EMC公司
8位EM78系列單片機(jī)
Intel公司的4004
Intel公司的8008
ATMEL公司AT系列
Microchip公司的PIC系列
三、單片機(jī)的應(yīng)用領(lǐng)域與未來發(fā)展趨勢(shì)
(一)應(yīng)用領(lǐng)域1.工業(yè)控制2.儀表測(cè)控3.機(jī)電一體化產(chǎn)品4.計(jì)算機(jī)外部設(shè)備5.智能化家電
(二)未來發(fā)展趨勢(shì)1.低、中、高不同檔次的單片機(jī)都有自己的應(yīng)用市場(chǎng)。2.朝著小容量、低價(jià)格和大容量、高性能兩個(gè)方向發(fā)展。3.系統(tǒng)級(jí)芯片(SystemonaChip,SoC)是單片機(jī)發(fā)展的一個(gè)熱點(diǎn)。四、MCS-51系列單片機(jī)的特點(diǎn)
只讀存儲(chǔ)器
可擦除可編程存儲(chǔ)器
電可擦除可編程只讀存儲(chǔ)器
任務(wù)二單片機(jī)中的數(shù)制與編碼
一、單片機(jī)中的數(shù)制二、數(shù)制間的轉(zhuǎn)換三、信息編碼
一、單片機(jī)中的數(shù)制
1.?dāng)?shù)制的概念
數(shù)制是人們按進(jìn)位的原則進(jìn)行計(jì)數(shù)的一種科學(xué)方法。一種記數(shù)制所使用的數(shù)字符號(hào)的個(gè)數(shù)稱為基數(shù),某個(gè)固定位置上的計(jì)數(shù)單位稱為位權(quán)。 十進(jìn)制數(shù)123.45用位權(quán)可以表示成:(123.45)10=1×102+2×101+1×100+4×10-1+5×10-2
在單片機(jī)中,所有信息(包括數(shù)值、字符、漢字、指令等)的存儲(chǔ)、處理與傳送都是采用二進(jìn)制的形式。二進(jìn)制數(shù)中只有“0”和“1”兩個(gè)數(shù)字符號(hào),運(yùn)算規(guī)則如下表所示。2.常用數(shù)制介紹單片機(jī)常用數(shù)制的特點(diǎn)、基數(shù)、位權(quán)和所用數(shù)字符號(hào)如下表所示。
為了區(qū)別不同數(shù)制的數(shù)據(jù),表示時(shí)通常在數(shù)字后面使用一個(gè)英文字母作為后綴。 十進(jìn)制使用D,二進(jìn)制使用B,八進(jìn)制使用O或Q,十六進(jìn)制使用H。 例如123D,10110010B,27O,3FH。也可以使用下標(biāo)標(biāo)注,如(123)10,(10110010)2,(27)8,(3F)16。
注:沒有加下標(biāo)和后綴字母的數(shù)值默認(rèn)為十進(jìn)制。
二、數(shù)制間的轉(zhuǎn)換
1.非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)
二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),方法是:按位權(quán)展開后求和。
(1011.11)2=1×23+0×22+1×21+1×20+1×2-1+1×2-2=(11.75)10 (1CB.D)16=1×162+12×161+11×160+13×16-1=(459.8125)10
2.十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)
方法:將整數(shù)部分和小數(shù)部分分別進(jìn)行轉(zhuǎn)換,然后把轉(zhuǎn)換的結(jié)果合在一起。
(1)整數(shù)部分的轉(zhuǎn)換 “除基取余法”:將十進(jìn)制數(shù)的整數(shù)部分反復(fù)除以基數(shù)R,將每次得到的商作為被除數(shù),并取得相應(yīng)的余數(shù),直到商為0。將每次得到的余數(shù)按逆序排列,即為轉(zhuǎn)換后的R進(jìn)制整數(shù)。
(2)小數(shù)部分的轉(zhuǎn)換
“乘基取整法”:將十進(jìn)制數(shù)的小數(shù)部分反復(fù)乘以基數(shù)R,將每次乘積的小數(shù)部分作為被乘數(shù),并取得相應(yīng)的整數(shù)部分,直到乘積的小數(shù)部分為0。將每次得到的整數(shù)部分順序排列在小數(shù)點(diǎn)后,即為轉(zhuǎn)換后的R進(jìn)制小數(shù)。
3.二進(jìn)制數(shù)與八進(jìn)制數(shù)、十六進(jìn)制數(shù)之間的轉(zhuǎn)換
(1)二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù) 從小數(shù)點(diǎn)開始向左右兩邊每三位并為一組,對(duì)應(yīng)一位八進(jìn)制數(shù),不足三位時(shí)補(bǔ)0即可。(2)二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù) 從小數(shù)點(diǎn)開始向左右兩邊每四位并為一組,對(duì)應(yīng)一位十六進(jìn)制數(shù),不足四位時(shí)補(bǔ)0即可。(3)八進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 把每一位八進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的三位二進(jìn)制數(shù)。(4)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 把每一位十六進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的四位二進(jìn)制數(shù)。
三、信息編碼
1.BCD碼
最常用的方法是8421BCD碼,即從高到低4位二進(jìn)制數(shù)的權(quán)值分別是8、4、2、1。
2.字符編碼
ASCII碼:每一個(gè)字符對(duì)應(yīng)一個(gè)7位的二進(jìn)制代碼,用一個(gè)字節(jié)的低7位來表示字符編碼,最高位補(bǔ)0或用作奇偶校驗(yàn)位,見附錄一。
任務(wù)三數(shù)字電路入門
一、邏輯門電路
二、傳送門電路三、譯碼器四、觸發(fā)器五、寄存器和鎖存器
一、邏輯門電路 邏輯門電路是實(shí)現(xiàn)常用邏輯運(yùn)算的電子電路。輸入信號(hào)通過邏輯門后會(huì)產(chǎn)生相應(yīng)的電平變化。高、低電平可以分別代表邏輯上的“真”與“假”或二進(jìn)制當(dāng)中的1和0,從而實(shí)現(xiàn)邏輯運(yùn)算。
基本邏輯門包括與門、或門和非門,利用基本邏輯門電路可以組合成復(fù)合門電路,常見的有與非門、或非門和異或門。1.與門
ABY&ABY與門常用邏輯符號(hào)只有當(dāng)A、B端同時(shí)為1時(shí),Y端輸出為1;A、B端至少一個(gè)為0時(shí),Y端輸出為0。
與門邏輯表達(dá)式為:Y=A·B。ABY2.或門只有當(dāng)A、B端同時(shí)為0時(shí),Y端輸出為0;A、B端至少一個(gè)為1時(shí),Y端輸出為1。
ABY≥1ABY或門常用邏輯符號(hào)
ABY或門邏輯表達(dá)式為:Y=A+B。真值表波形圖3.非門當(dāng)A為0時(shí),Y端輸出為1;當(dāng)A為1時(shí),Y端輸出為0。
AY1AY非門常用邏輯符號(hào)
AY非門邏輯表達(dá)式為:Y=A,真值表和波形圖如下所示。4.與非門只有當(dāng)A、B端同時(shí)為1時(shí),Y端輸出為0;A、B端至少一個(gè)為0時(shí),Y端輸出為1。ABY&ABY與非門常用邏輯符號(hào)
ABY真值表波形圖與非門邏輯表達(dá)式為:Y=A·B。Y=A·B
5.或非門ABY≥1ABY只有當(dāng)A、B端同時(shí)為0時(shí),Y端輸出為1;A、B端至少一個(gè)為1時(shí),Y端輸出為0?;蚍情T常用邏輯符號(hào)
ABY或非門邏輯表達(dá)式為:Y=A+B。真值表波形圖6.異或門
A、B端同時(shí)為0或同時(shí)為1時(shí),Y端輸出為0;A、B端狀態(tài)不同時(shí),Y端輸出為1。
ABY=1ABY異或門常用邏輯符號(hào)
ABY異或門邏輯表達(dá)式為:Y=A·B+A·B=A⊕B。真值表波形圖二、傳送門電路 1.三態(tài)門
三態(tài)門具有高、低電平和高阻(相當(dāng)于斷開狀態(tài)),三種狀態(tài),常用于單片機(jī)系統(tǒng)中對(duì)總線的控制。AEYAYE真值表2種常用邏輯符號(hào)2.單向數(shù)據(jù)傳送門
多個(gè)三態(tài)門并列排列,并將它們的使能端連接在一起,就可以構(gòu)成一個(gè)單項(xiàng)數(shù)據(jù)傳送門,如左圖所示,真值表如下所示。
3.雙向數(shù)據(jù)傳送門 8個(gè)三態(tài)門組合成一個(gè)四位的雙向數(shù)據(jù)傳送門,如下所示。
當(dāng)控制端G為低電平時(shí),此時(shí)各三態(tài)門的使能端為高電平,輸出端A0~A3和B0~B3均成高阻狀態(tài);當(dāng)控制端G為高電平時(shí),DS端為低電平時(shí),AB方向的門被打開,A0~A3的數(shù)據(jù)將分別傳送到B0~B3;當(dāng)控制端G為高電平時(shí),DS端為高電平時(shí),BA方向的門被打開,B0~B3的數(shù)據(jù)將分別傳送到A0~A3。
雙向數(shù)據(jù)門的真值表如下表所示:三、譯碼器
譯碼器的功能是將具有特定含義的二進(jìn)制碼進(jìn)行辨別,并轉(zhuǎn)換成控制信號(hào)。從功能上可以分為兩種類型,一種是地址譯碼器,另一種是代碼變換器。邏輯電路如下圖所示。譯碼器功能表如下表所示。四、觸發(fā)器
觸發(fā)器能存儲(chǔ)一位二進(jìn)制數(shù)碼或一個(gè)邏輯狀態(tài)信號(hào),是構(gòu)成寄存器、計(jì)數(shù)器、脈沖信號(hào)發(fā)生器、存儲(chǔ)器等時(shí)序邏輯電路的基本單元電路。根據(jù)邏輯功能的不同,可以分為RS觸發(fā)器、D觸發(fā)器和JK觸發(fā)器等。
RS觸發(fā)器的邏輯結(jié)構(gòu)RS觸發(fā)器的邏輯符號(hào)基本RS觸發(fā)器的邏輯表達(dá)式:Q=S·Q,Q=R·Q。功能如下表所示:五、寄存器和鎖存器1.寄存器(1)緩沖寄存器由4個(gè)D觸發(fā)器組成的4位緩沖寄存器如下圖所示。
啟動(dòng)時(shí),先在清零端加清零脈沖,把各觸發(fā)器置0,然后將數(shù)據(jù)加到觸發(fā)器的D輸入端,在時(shí)鐘信號(hào)作用下,輸入端的信息會(huì)保存在各觸發(fā)器中。
輸出端與輸入端信息相同D觸發(fā)器實(shí)現(xiàn)的功能(2)移位寄存器 4個(gè)D觸發(fā)器組成的4位移位寄存器。它能將所儲(chǔ)存的數(shù)據(jù)逐位向左或向右移動(dòng),以達(dá)到單片機(jī)運(yùn)行過程中所需的功能,移位寄存器的邏輯結(jié)構(gòu)如下圖所示。
2.鎖存器下圖所示為一個(gè)由D觸發(fā)器構(gòu)成的4位鎖存器。當(dāng)輸出控制信號(hào)為低電平,且使能信號(hào)G為高電平時(shí),數(shù)據(jù)可輸出。若G信號(hào)為低電平,輸出端的狀態(tài)被鎖存起來,使其不隨輸入端的變化而變化,直到下一個(gè)G信號(hào)有效時(shí)才會(huì)發(fā)生改變
鎖存器的功能如下表所示。任務(wù)四單片機(jī)應(yīng)用系統(tǒng)開發(fā)
——信號(hào)燈閃爍系統(tǒng)軟硬件設(shè)計(jì)一、單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程二、信號(hào)燈閃爍系統(tǒng)設(shè)計(jì)三、利用KeilC51集成開發(fā)軟件編輯、編譯和鏈接程序四、利用Proteus系統(tǒng)仿真軟件調(diào)試系統(tǒng)和程序一、單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程二、信號(hào)燈閃爍系統(tǒng)設(shè)計(jì) 1.整體設(shè)計(jì) 在單片機(jī)的P0.0端口上接一個(gè)發(fā)光二極管(LED)L1,編制匯編程序使L1不停地一亮一滅,時(shí)間間隔為0.2秒。
2.硬件設(shè)計(jì)
系統(tǒng)采用的單片機(jī)為MCS-51系列,包括電源電路、時(shí)鐘電路、復(fù)位電路和LED信號(hào)燈電路。
硬件原理圖3.軟件設(shè)計(jì)ORG 0000HSTART:CLR P0.0 ;P1.0輸出低電平,使LED1點(diǎn)亮LCALL DELAY ;調(diào)用延時(shí)子程序SETB P0.0 ;P1.0輸出高電平,使LED1熄滅LCALL DELAY ;調(diào)用延時(shí)子程序LJMP STARTDELAY: ;延時(shí)子程序MOV R5,#20 ;將20送R5寄存器LOOP1:MOV R6,#20 ;將20送R6寄存器LOOP2:MOV R7,#230 ;將230送R7寄存器DJNZ R7,$ ;循環(huán)執(zhí)行本指令,每次R7減1DJNZ R6,LOOP2 ;R6-1,如果R6不等于0,則轉(zhuǎn)至LOOP2DJNZ R5,LOOP1 ;R5-1,如果R5不等于0,則轉(zhuǎn)至LOOP1RETEND
三、利用KeilC51集成開發(fā)軟件編輯、編譯和鏈接程序
步驟1打開μVision2,開發(fā)界面如下所示,包括文件工具欄、編譯工具欄、工程窗口以及輸出窗口等。步驟2首先新建一個(gè)工程,如左圖所示,選擇“Project”>“NewProject”菜單,在彈出的保存窗口中選擇工程文件的保存位置,填寫文件名,如右圖所示,單擊“保存”按鈕。步驟3在彈出的CPU選擇對(duì)話框中選擇80C51系列芯片,如下所示,然后單擊“確定”按鈕。步驟4單擊文件工具欄中的新建文件按鈕,在編輯區(qū)域編輯匯編源程序,如左圖所示;編輯完成后,單擊文件工具欄中的保存文件按鈕,將匯編源程序保存為“.asm”形式的文件,如右圖所示。步驟5接下來,在工程窗口的“SourceGroup1”文件夾上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddFilesto...”選項(xiàng),在打開的對(duì)話框中選擇匯編源文件,并單擊“Add”按鈕,將其加入,整個(gè)過程如下所示。步驟6如左圖所示,選擇“Project”>“OptionsforTarget‘Target1’”菜單,在彈出的對(duì)話框中打開“output”選項(xiàng)卡,參照右圖所示設(shè)置輸出選項(xiàng),然后單擊“確定”按鈕。步驟7單擊編譯工具欄的按鈕,對(duì)匯編源文件進(jìn)行編譯、鏈接,如左圖所示,在輸出窗口將看到信息提示,在保存工程的文件夾中將生成“.hex”文件,如右圖所示。四、利用Proteus系統(tǒng)仿真軟件調(diào)試系統(tǒng)和程序
Proteus是英國(guó)LabcenterElectronics公司開發(fā)的一款優(yōu)秀的EDA(ElectronicDesignAutomation,電子設(shè)計(jì)自動(dòng)化)軟件。利用它可以繪制電路原理圖、PCB圖和進(jìn)行交互式電路仿真。針對(duì)微處理器應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程(或直接導(dǎo)入外部源碼文件),并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試。另外,配合系統(tǒng)配置的虛擬儀器,如示波器、邏輯分析儀等,用戶可以獲得一個(gè)完備的電子設(shè)計(jì)開發(fā)環(huán)境!步驟1打開ProteusISIS,開發(fā)界面如下圖所示,除了常見的菜單欄和工具欄外,還包括預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口、預(yù)覽對(duì)象方位控制按鈕以及仿真進(jìn)程控制按鈕等。圖形編輯窗口預(yù)覽對(duì)象方位控制按鈕仿真進(jìn)程控制按鈕預(yù)覽窗口對(duì)象選擇器窗口步驟2單擊對(duì)象選擇器窗口上方的按鈕,彈出如下所示的設(shè)備選擇對(duì)話框,在“keywords”文本編輯框中輸入芯片型號(hào)的關(guān)鍵字,在右側(cè)出現(xiàn)的結(jié)果中選中需要的芯片,然后單擊“OK”按鈕。步驟3回到開發(fā)主界面,鼠標(biāo)移入圖形編輯窗口中會(huì)變成筆狀,選擇合適位置并雙擊鼠標(biāo),芯片就出現(xiàn)了,如下所示。步驟4參照添加芯片的方法添加發(fā)光二級(jí)管和電阻,器件添加完成后的效果如下所示。步驟5在電阻元件上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“RotateClockwise”選項(xiàng),將電阻進(jìn)行順時(shí)針旋轉(zhuǎn),如下所示。步驟6選擇左側(cè)工具欄中的元件圖標(biāo),將鼠標(biāo)移到圖形編輯窗口中單片機(jī)的P0.0引腳處,當(dāng)引腳處出現(xiàn)高亮小方塊時(shí)單擊鼠標(biāo),將引出的綠色連線指向LED并點(diǎn)擊確認(rèn),如下所示。使用同樣的方法將LED和電阻相連。步驟7單擊左側(cè)工具欄中的元件圖標(biāo),在對(duì)象選擇器窗口中選擇“POWER”,將電源符號(hào)放到電阻符號(hào)的上方與電阻相連(系統(tǒng)默認(rèn)電壓為5V),如下所示。步驟8在電阻R1上單擊鼠標(biāo)右鍵,彈出左圖所示的快捷菜單,選擇“EditProperties”選項(xiàng),打開右圖所示編輯元件對(duì)話框,在“Resistance:”右側(cè)的編輯欄中將阻值更改為“330”,然后單擊“OK”按鈕。步驟9在單片機(jī)上單擊鼠標(biāo)右鍵,彈出左圖所示快捷菜單,選擇“EditProperties”選項(xiàng),打開右圖所示編輯元件對(duì)話框,單擊“ProgramFile:”右側(cè)的按鈕,選擇在KeilC51中編譯好的hex文件,然后單擊“OK”按鈕。步驟10至此系統(tǒng)硬件和軟件已經(jīng)設(shè)置完畢,現(xiàn)在可以運(yùn)行我們的信號(hào)燈閃爍系統(tǒng)了。單擊仿真進(jìn)程控制按鈕中的開始按鈕,此時(shí)可以看到LED開始以一定的時(shí)間間隔一亮一滅,如下所示。項(xiàng)目總結(jié) 在本項(xiàng)目中,我們首先介紹了單片機(jī)的特點(diǎn)、發(fā)展歷史、常見產(chǎn)品和應(yīng)用領(lǐng)域,并重點(diǎn)介紹了MCS-51系列單片機(jī)的特點(diǎn);任務(wù)二和任務(wù)三簡(jiǎn)要介紹了數(shù)制、編碼和數(shù)字電路等基礎(chǔ)知識(shí),這主要是為后面要學(xué)習(xí)的單片機(jī)程序設(shè)計(jì)和硬件系統(tǒng)設(shè)計(jì)打基礎(chǔ)的;最后,我們通過設(shè)計(jì)一個(gè)簡(jiǎn)單的信號(hào)燈閃爍實(shí)例,向讀者介紹了利用KeilC51編制、匯編、連接匯編程序,生成HEX源碼文件,以及利用Proteus軟件設(shè)計(jì)硬件系統(tǒng)并進(jìn)行系統(tǒng)仿真的方法。單片機(jī)原理及應(yīng)用技術(shù)項(xiàng)目二MCS-51單片機(jī)入門
——流水燈模擬系統(tǒng)設(shè)計(jì)任務(wù)一MCS-51系列單片機(jī)的基本結(jié)構(gòu)任務(wù)二MCS-51系列單片機(jī)的存儲(chǔ)器配置任務(wù)三MCS-51I/O端口的使用任務(wù)四時(shí)鐘電路與時(shí)序任務(wù)五MCS-51系列單片機(jī)的工作方式任務(wù)六典型應(yīng)用——流水燈模擬系統(tǒng)設(shè)計(jì)項(xiàng)目總結(jié)
任務(wù)一MCS-51系列單片機(jī)的基本結(jié)構(gòu)一、MCS-51的外部引腳
二、MCS-51的內(nèi)部結(jié)構(gòu)一、MCS-51的外部引腳
8051采用40引腳DIP封裝形式(雙列直插式封裝),引腳如下圖所示。
1.電源與時(shí)鐘引腳Vcc(40腳):電源端,接+5V直流電源。Vss(20腳):接地端。XTAL1(19腳)/XTAL2(18腳):內(nèi)部振蕩器的輸入端,接外部晶振;如果采用外部時(shí)鐘,XTAL2引腳連外部時(shí)鐘,XTAL1引腳要懸空。ALE/PROG(AddressLatchEnable/Programming,30腳):地址鎖存允許信號(hào)。PSEN(ProgramStoreEnable,29腳):外部程序存儲(chǔ)允許輸出端,片外程序存儲(chǔ)器讀選通信號(hào),低電平有效。EA/VPP(EnableAddress/VoltagePulseofProgramming,31腳):外部程序存儲(chǔ)器地址允許輸入端。RST/VPD(9腳):復(fù)位信號(hào)輸入端。晶振工作時(shí),在此引腳上保持兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。
2.控制引腳I/O引腳的功能特性將在任務(wù)三中進(jìn)行講述。3.I/O引腳二、MCS-51的內(nèi)部結(jié)構(gòu)
(1)8位中央處理單元CPU。(2)4K字節(jié)的程序存儲(chǔ)器ROM。(3)128字節(jié)的數(shù)據(jù)存儲(chǔ)器RAM。(4)21個(gè)特殊功能寄存器SFR。(5)4個(gè)8位并行I/O口P0~P3。(6)2個(gè)16位可編程定時(shí)/計(jì)數(shù)器T0、T1。(7)5個(gè)中斷源,具體包括2個(gè)外部中斷源INT0和INT1,3個(gè)內(nèi)部中斷源。(8)1個(gè)全雙工的異步串行接口。(9)內(nèi)部時(shí)鐘產(chǎn)生電路。1.基本結(jié)構(gòu)與硬件組成
2.中央處理器CPU
中央處理器CPU是單片機(jī)的核心組成部分,從功能上可以分為控制器和運(yùn)算器兩個(gè)部分。
控制器產(chǎn)生各種控制信號(hào)以協(xié)調(diào)各部件之間的數(shù)據(jù)傳送、運(yùn)算等操作運(yùn)算器主要執(zhí)行算術(shù)運(yùn)算、邏輯運(yùn)算和位操作等(1)控制器
控制器主要包括: 16位程序計(jì)數(shù)器PC(ProgramCounter) 數(shù)據(jù)指針DPTR(DataPointer) 堆棧指針SP(StackPointer) 指令寄存器IR(InstructionRegister) 指令譯碼器 控制邏輯電路
PC是一個(gè)16位的專用寄存器,可尋址范圍是0000H~FFFFH,共64K,它的作用是存放CPU下一條要執(zhí)行的指令代碼所在存儲(chǔ)單元的16位地址DPTR是一個(gè)16位的專用地址指針寄存器,由兩個(gè)8位寄存器DPH(高8位)和DPL(低8位)組成。當(dāng)8051外接存儲(chǔ)器或I/O口時(shí),用DPTR作為地址指針,存放外部存儲(chǔ)器或外設(shè)端口的地址SP指針長(zhǎng)8位,用于指示堆棧棧頂?shù)刂?。堆棧用于在調(diào)用子程序或進(jìn)入中斷程序前保存一些重要數(shù)據(jù)及程序返回地址IR字長(zhǎng)8位,用于暫存待執(zhí)行的指令,等待譯碼指令譯碼器對(duì)指令寄存器中的指令進(jìn)行譯碼,將指令轉(zhuǎn)變?yōu)檎_的電信號(hào)控制邏輯電路根據(jù)譯碼器輸出的電信號(hào),產(chǎn)生執(zhí)行指令所需的各種控制信號(hào)
運(yùn)算器主要包括: 算術(shù)邏輯單元ALU(ArithmeticalLogicUnit) 累加器A(Accumulator) 通用寄存器B(GeneralPurposeRegister) 程序狀態(tài)字PSW(ProgramStatusWord)暫存器 十進(jìn)制調(diào)整電路 布爾處理器
(2)運(yùn)算器
ALU是一個(gè)運(yùn)算器,主要對(duì)8位二進(jìn)制數(shù)進(jìn)行算術(shù)與邏輯運(yùn)算,包括加、減、乘、除四則運(yùn)算,與、或、非、異或等邏輯操作。另外還具有置位、移位、測(cè)試轉(zhuǎn)移等功能累加器A又記作ACC,是一個(gè)8位寄存器。在算術(shù)與邏輯運(yùn)算中,用來存放一個(gè)操作數(shù)或運(yùn)算結(jié)果。另外,在與外部存儲(chǔ)器或I/O端口進(jìn)行數(shù)據(jù)傳送也要經(jīng)過A完成通用寄存器B是一個(gè)8位寄存器,執(zhí)行乘法或除法指令時(shí),B與A配合使用。執(zhí)行指令前B用于存放乘數(shù)或除數(shù),在完成后存放乘積的高8位或除法的余數(shù)。在其他指令中,B可作為一般寄存器使用程序狀態(tài)字PSW是一個(gè)8位寄存器,用于存放指令執(zhí)行后的狀態(tài)信息,以供程序查詢和判斷進(jìn)位標(biāo)志位輔助進(jìn)位位用戶標(biāo)志位寄存器組選擇位RS0和RS1溢出標(biāo)志位奇偶標(biāo)志位一、程序存儲(chǔ)器二、數(shù)據(jù)存儲(chǔ)器任務(wù)二MCS-51系列單片機(jī)的存儲(chǔ)器配置
MCS-51系列單片機(jī)在物理結(jié)構(gòu)上有4個(gè)存儲(chǔ)空間,即片內(nèi)、片外程序存儲(chǔ)器和片內(nèi)、片外數(shù)據(jù)存儲(chǔ)器。程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開編址,具有各自獨(dú)立的尋址空間和尋址方式。
一、程序存儲(chǔ)器
片內(nèi)和片外程序存儲(chǔ)器采用16位統(tǒng)一編址方式,地址范圍是:0000H~FFFFH端口P0和P2分別提供地址的低8位和高8位。程序存儲(chǔ)器結(jié)構(gòu)如左圖所示二、數(shù)據(jù)存儲(chǔ)器
數(shù)據(jù)存儲(chǔ)器由片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器兩部分構(gòu)成,用來存放運(yùn)算的中間結(jié)果。片內(nèi)數(shù)據(jù)存儲(chǔ)器與片外數(shù)據(jù)存儲(chǔ)器采用分開編址方式。片內(nèi)數(shù)據(jù)存儲(chǔ)器采用8位地址,共256個(gè)字節(jié);片外數(shù)據(jù)存儲(chǔ)器采用16位地址,共64K,如左圖所示1.片內(nèi)數(shù)據(jù)存儲(chǔ)器
片內(nèi)數(shù)據(jù)存儲(chǔ)器共256字節(jié),內(nèi)部數(shù)據(jù)存儲(chǔ)器的結(jié)構(gòu)圖如左圖所示。00H~1FH單元分別對(duì)應(yīng)4個(gè)工作寄存器組。20H~2FH這16個(gè)字節(jié)(128位)作為8051的位尋址區(qū)。CPU通過指令對(duì)其中的某一位進(jìn)行操作,在邏輯運(yùn)算、實(shí)時(shí)處理、開關(guān)控制等方面有重要作用2.特殊功能寄存器SFR
(SpecialFunctionRegisters)
MCS-51系列單片機(jī)有21個(gè)特殊功能寄存器,離散地分布在片內(nèi)地址80~FFH的RAM空間中。CPU可以直接使用寄存器的名字或者通過直接尋址方式對(duì)其進(jìn)行訪問。CPU:包括6個(gè)SFR,分別是A、B、PSW、SP、DPL和DPH。其中2個(gè)8位寄存器DPL和DPH組成16位的DPTR。中斷控制:包括2個(gè)SFR,分別是IE和IP。定時(shí)器:包括6個(gè)SFR,分別是TCON、TMON、TL0、TL1、TH0和TH1。其中8位寄存器TL0和TH0組成T0,TL1和TH1組成T1。并行接口:包括4個(gè)SFR,分別是P0、P1、P2和P3。串行接口:包括3個(gè)SFR,分別是PCON、SCON和SBUF。
3.片外數(shù)據(jù)存儲(chǔ)器
片外數(shù)據(jù)存儲(chǔ)器的地址范圍是0000H~FFFFH,共64K。在實(shí)際應(yīng)用中,用戶可以根據(jù)具體需求進(jìn)行適量的擴(kuò)展,如2K、4K、8K等。
一、I/O端口的結(jié)構(gòu)二、I/O端口的負(fù)載能力任務(wù)三MCS-51I/O端口的使用
I/O端口是單片機(jī)實(shí)現(xiàn)信息交換和對(duì)外控制的重要通道。I/O端口分為串行口和并行口,串行口一次只能傳送一個(gè)二進(jìn)制位信息,并行口一次可以傳送一個(gè)字節(jié)信息。
端口P3.0和P3.1的第二功能P0、P1、P2和P3一、I/O端口的結(jié)構(gòu)1.P0端口P0.0~P0.7(39~32引腳)功能一:P0端口可以作為通用I/O接口使用,P0.0~P0.7傳送CPU的輸入/輸出數(shù)據(jù);功能二:在訪問外部存儲(chǔ)器時(shí),P0端口可以分時(shí)復(fù)用地址線和雙向數(shù)據(jù)總線(AD0~AD7)。
P0端口位結(jié)構(gòu)圖功能:P1端口僅作為數(shù)據(jù)輸入/輸出端口使用。2.P1端口P1.0~P1.7(1~8引腳)
P1端口位結(jié)構(gòu)圖3.P2端口P2.0~P2.7(21~28引腳)
功能一:作為通用I/O接口使用,傳送CPU的輸入/輸出數(shù)據(jù);功能二:在訪問外部存儲(chǔ)器時(shí),P2端口輸出地址總線的高八位(AD8~AD15),與P0口的低地址一起構(gòu)成16位地址總線。P2端口位結(jié)構(gòu)圖4.P3端口P3.0~P3.7(10~17引腳)
功能一:作為通用I/O口。功能二:第二功能,見表2-5。P3端口位結(jié)構(gòu)圖P3口的第二功能如下表所示。二、I/O端口的負(fù)載能力
P0端口能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載,P1、P2和P3端口各能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。如需增加負(fù)載能力,可在端口總線上增加總線驅(qū)動(dòng)器。
任務(wù)四時(shí)鐘電路與時(shí)序
一、時(shí)鐘電路
二、機(jī)器周期與指令周期三、典型指令執(zhí)行時(shí)序一、時(shí)鐘電路功能:保證內(nèi)部各部件間的同步協(xié)調(diào)工作。產(chǎn)生方式:內(nèi)部時(shí)鐘電路和外接時(shí)鐘電路。二、機(jī)器周期與指令周期1.時(shí)鐘周期
又稱為振蕩周期,定義為時(shí)鐘脈沖的倒數(shù),是單片機(jī)中最基本、最小的時(shí)間單位。在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作。2.機(jī)器周期一條指令的執(zhí)行過程可以分為若干個(gè)階段,如取指令、讀存儲(chǔ)器、寫存儲(chǔ)器等。完成某一個(gè)操作的時(shí)間稱為一個(gè)機(jī)器周期。通常情況下,一個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成。
3.指令周期
執(zhí)行一條指令所需要的時(shí)間稱為指令周期,指令不同,所需的機(jī)器周期數(shù)也不同,一般由1~4個(gè)機(jī)器周期組成。 在MCS-51指令系統(tǒng)中,一些簡(jiǎn)單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其他的機(jī)器周期;一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個(gè)或者兩個(gè)以上的機(jī)器周期。
三、典型指令執(zhí)行時(shí)序
一個(gè)機(jī)器周期中出現(xiàn)兩次ALE信號(hào),信號(hào)有效寬度為一個(gè)S狀態(tài),每出現(xiàn)一次該信號(hào),單片機(jī)進(jìn)行一次讀指令操作任務(wù)五MCS-51系列單片機(jī)的工作方式
一、復(fù)位方式二、程序執(zhí)行方式三、低功耗方式四、編程和加密方式
一、復(fù)位方式1.復(fù)位條件實(shí)現(xiàn)單片機(jī)復(fù)位需要在單片機(jī)的復(fù)位引腳RST(9腳)上出現(xiàn)2個(gè)機(jī)器周期以上的高電平。例如:若單片機(jī)的時(shí)鐘頻率為12MHz,則機(jī)器周期為1s,那么復(fù)位信號(hào)需要保證持續(xù)2s以上的時(shí)間。單片機(jī)的初始化,此時(shí)程序從0000H開始執(zhí)行2.復(fù)位電路常見的復(fù)位電路有上電自動(dòng)復(fù)位和按鍵復(fù)位兩種。
3.復(fù)位后寄存器的狀態(tài)二、程序執(zhí)行方式
程序執(zhí)行方式是單片機(jī)的基本工作方式。它的工作過程是執(zhí)行程序的過程,而程序是由一條條指令組成的,因此單片機(jī)的工作過程就是循環(huán)進(jìn)行取指令和執(zhí)行指令的操作過程。 CPU總是按照PC所指的地址從ROM中取指并執(zhí)行,每取一個(gè)字節(jié),PC自動(dòng)加1,指向下一條指令。另外,當(dāng)調(diào)用子程序、產(chǎn)生中斷或執(zhí)行轉(zhuǎn)移指令時(shí),PC會(huì)產(chǎn)生新地址。
三、低功耗方式
低功耗方式有兩種:待機(jī)方式和掉電方式,由電源控制寄存器PCON控制實(shí)現(xiàn)的。PD:掉電方式控制位,PD=1,進(jìn)入掉電方式。IDL:待機(jī)方式位,IDL=1,進(jìn)入待機(jī)方式。PCON結(jié)構(gòu)
狀態(tài)描述: CPU停止工作,但是RAM、定時(shí)器、中斷系統(tǒng)和串行口的時(shí)鐘信號(hào)仍然保持;同時(shí)CPU的狀態(tài)被保存(堆棧指針、程序計(jì)數(shù)器PC、程序狀態(tài)字PSW、累加器A以及全部的通用寄存器內(nèi)容保持不變);端口引腳保持進(jìn)入該方式時(shí)的邏輯狀態(tài),ALE和PSEN信號(hào)保持為邏輯高電平;電壓保持不變,但單片機(jī)消耗的電流可由正常的24mA降為3mA。
1.待機(jī)方式
退出方式:產(chǎn)生中斷:待機(jī)方式下,中斷系統(tǒng)仍在運(yùn)行,任一中斷被相應(yīng)都可使IDL位清0,從而退出待機(jī)方式。硬件復(fù)位:待機(jī)方式下,震蕩器仍在工作,因此,復(fù)位信號(hào)保持2個(gè)以上的機(jī)器周期即可進(jìn)入復(fù)位狀態(tài)。
狀態(tài)描述:
當(dāng)指令使PCON的PD位置1后,則進(jìn)入掉電工作狀態(tài)。此時(shí),單片機(jī)的一切工作都停止,只有片內(nèi)RAM和SFR的數(shù)據(jù)被保持下來;端口引腳輸出各自SFR的內(nèi)容,ALE和PSEN信號(hào)保持為邏輯高電平;電源電壓可以降到2V,單片機(jī)耗電僅50A。
2.掉電方式退出方式:
硬件復(fù)位,在準(zhǔn)備退出掉電方式之前,VCC必須恢復(fù)到正常的工作電壓值,復(fù)位信號(hào)需要保持一段時(shí)間(大于10ms),以便振蕩器重新啟動(dòng)并達(dá)到穩(wěn)態(tài)。四、編程和加密方式
加密是為了保護(hù)編程者的勞動(dòng)成果而設(shè)計(jì)的一種工作方法,單片機(jī)的編程與加密是由編程器或燒錄器來完成的。類似的產(chǎn)品有很多,功能也不盡相同,用戶只需根據(jù)其說明了解使用方法即可。
任務(wù)六典型應(yīng)用
——流水燈模擬系統(tǒng)設(shè)計(jì)
一、系統(tǒng)整體設(shè)計(jì) 二、硬件設(shè)計(jì) 三、軟件設(shè)計(jì)在項(xiàng)目一中我們?cè)O(shè)計(jì)的信號(hào)燈閃爍系統(tǒng)中只有1個(gè)LED,在此基礎(chǔ)之上,這里我們將LED的數(shù)量增加到8個(gè),使8個(gè)燈從上到下循環(huán)閃爍,時(shí)間間隔為0.2秒,呈現(xiàn)出流水燈閃爍的效果。
一、系統(tǒng)整體設(shè)計(jì)二、硬件設(shè)計(jì)流水燈系統(tǒng)硬件原理圖三、軟件設(shè)計(jì)主程序:START:CLR P1.0 ;P1.0輸出低電平,使D1點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.0 ;P1.0輸出高電平,使D1熄滅CLR P1.1 ;P1.1輸出低電平,使D2點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.1 ;P1.1輸出高電平,使D2熄滅CLR P1.2 ;P1.2輸出低電平,使D3點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.2 ;P1.2輸出高電平,使D3熄滅CLR P1.3 ;P1.3輸出低電平,使D4點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.3 ;P1.3輸出高電平,使D4熄滅CLR P1.4 ;P1.4輸出低電平,使D5點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.4 ;P1.4輸出高電平,使D5熄滅CLR P1.5 ;P1.5輸出低電平,使D6點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.5 ;P1.5輸出高電平,使D6熄滅CLR P1.6 ;P1.6輸出低電平,使D7點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.6 ;P1.6輸出高電平,使D7熄滅CLR P1.7 ;P1.7輸出低電平,使D8點(diǎn)亮ACALL DELAY ;調(diào)用延時(shí)子程序SETB P1.7 ;P1.7輸出高電平,使D8熄滅ACALL DELAY ;調(diào)用延時(shí)子程序AJMP START ;返回到標(biāo)號(hào)START處再循環(huán)DELAY:MOV R5,#20 ;將20送R5寄存器LOOP1:MOV R6,#20 ;將20送R6寄存器LOOP2:MOV R7,#230 ;將230送R7寄存器DJNZ R7,$ ;循環(huán)執(zhí)行本指令,每次R7減1DJNZ R6,LOOP2 ;R6-1,如果R6不等于0,則轉(zhuǎn)至LOOP2DJNZ R5,LOOP1 ;R5-1,如果R5不等于0,則轉(zhuǎn)至LOOP1RETEND ;主程序結(jié)束子程序:項(xiàng)目總結(jié)在本項(xiàng)目中,我們首先學(xué)習(xí)了MCS-51系列單片機(jī)的硬件構(gòu)成,然后了解MCS-51系列單片機(jī)中存儲(chǔ)器配置和I/O端口的使用;任務(wù)四講述了時(shí)鐘電路與時(shí)序的知識(shí),通過這部分知識(shí)可以更深入地理解單片機(jī)的工作原理;任務(wù)五介紹了MCS-51系列單片機(jī)的4種工作方式;最后,在理解項(xiàng)目一中信號(hào)燈閃爍系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)了一個(gè)稍復(fù)雜的系統(tǒng)——流水燈系統(tǒng)。單片機(jī)原理及應(yīng)用技術(shù)項(xiàng)目三MCS-51程序設(shè)計(jì)
——交通信號(hào)燈模擬系統(tǒng)設(shè)計(jì)
任務(wù)一MCS-51指令系統(tǒng)入門任務(wù)二指令系統(tǒng)任務(wù)三匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)
任務(wù)四典型應(yīng)用
——交通信號(hào)燈模擬系統(tǒng)設(shè)計(jì)
項(xiàng)目總結(jié)
任務(wù)一MCS-51指令系統(tǒng)入門一、 指令系統(tǒng)概述
二、 指令格式
三、 指令中常用符號(hào)
四、 指令分類
五、尋址方式
一、指令系統(tǒng)概述一個(gè)單片機(jī)能夠執(zhí)行的全部指令的集合單片機(jī)能夠識(shí)別和執(zhí)行的命令由于單片機(jī)的硬件只能識(shí)別二進(jìn)制數(shù),用二進(jìn)制、八進(jìn)制和十六進(jìn)制表示的指令稱為機(jī)器語(yǔ)言。匯編語(yǔ)言指令助記符執(zhí)行二、 指令格式操作碼[操作數(shù)1],[操作數(shù)2],[操作數(shù)3]本條指令所要執(zhí)行的操作本條指令的操作對(duì)象操作碼一般使用2~5個(gè)英文字母的助記符表示,如JC,MOV,SUBB等。在不同的指令中,操作數(shù)的數(shù)量從0~3個(gè)不同。它可以是一個(gè)數(shù)據(jù),也可以是一個(gè)地址或寄存器符號(hào)。三、指令中常用符號(hào)
四、指令分類
MCS-51單片機(jī)共有111條指令,可分為以下5大類。數(shù)據(jù)傳送類指令(29條)。算數(shù)運(yùn)算類指令(24條)。邏輯運(yùn)算類指令與位移指令(24條)??刂妻D(zhuǎn)移類指令(17條)。位操作指令(17條)。五、尋址方式
在MCS-51系列單片機(jī)中設(shè)有7種尋址方式,即立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對(duì)尋址和位尋址。
尋找操作數(shù)地址的方式1.立即尋址
在指令中直接給出參加運(yùn)算的操作數(shù)立即數(shù)前面要加“#”標(biāo)志立即尋址指令示例:立即尋址方式示例:2.直接尋址
在指令中直接給出操作數(shù)地址直接尋址指令示例:直接尋址方式示例:3.寄存器尋址
以指令中寄存器的內(nèi)容作為操作數(shù)寄存器有工作寄存器R0~R7、累加器A、通用寄存器B、數(shù)據(jù)指針DPTR、進(jìn)位Cy等寄存器尋址指令示例:寄存器尋址方式示例:4.寄存器間接尋址
以指令中寄存器的內(nèi)容作為操作數(shù)地址
寄存器間接尋址指令示例:寄存器間接尋址方式示例:5.變址尋址
以某個(gè)寄存器的內(nèi)容為基本地址,在基本地址的基礎(chǔ)上加上地址偏移量后,才能得到真正的操作數(shù)地址變址尋址指令示例:變址尋址方式示例:6.相對(duì)尋址
以當(dāng)前PC內(nèi)容加上指令中給出的相對(duì)偏移量形成程序轉(zhuǎn)移的目的地址相對(duì)尋址指令示例:相對(duì)尋址方式示例:7.位尋址
對(duì)位尋址空間按位進(jìn)行尋址MCS-51系列芯片中有以下兩個(gè)位尋址區(qū):片內(nèi)RAM的位尋址區(qū):地址范圍是20~2FH,共128位,每一位都可以作為獨(dú)立操作數(shù)。具體分布情況參見書中表2-3。
11個(gè)特殊功能寄存器SFR:分布在RAM的80~FFH地址單元,它們的地址單元均能被8整除。具體分布情況參見書中表2-4。MCS-51系列芯片中有以下四種位地址表示方式:(1)直接用物理地址00H~FFH來表示,如MOVC,2BH。(2)采用地址單元加位數(shù)的表示方法,如MOVC,2BH.3。(3)對(duì)于SFR可以采用寄存器名加位數(shù)的表示方法, 如MOVC,P3.4。(4)采用偽指令定義方式,詳見任務(wù)三匯編語(yǔ)言程序設(shè)計(jì)基 礎(chǔ)中的偽指令部分。任務(wù)二指令系統(tǒng)
一、數(shù)據(jù)傳送類指令
二、算術(shù)運(yùn)算類指令
三、邏輯運(yùn)算與移位指令
四、控制轉(zhuǎn)移類指令
五、位操作指令
MCS-51系列單片機(jī)數(shù)據(jù)傳送指令共有29條,用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH和POP共8種。根據(jù)這些指令作用的不同,將其分為內(nèi)部數(shù)據(jù)傳送指令、外部數(shù)據(jù)傳送指令、訪問程序存儲(chǔ)器指令、堆棧操作指令和數(shù)據(jù)交換指令5類。一、數(shù)據(jù)傳送類指令
數(shù)據(jù)傳送類指令中,執(zhí)行目的操作數(shù)為A或?qū)進(jìn)行單獨(dú)操作的指令后,會(huì)影響PSW中奇偶標(biāo)志位P。其他情況不影響標(biāo)志位。
1.內(nèi)部數(shù)據(jù)傳送類指令
(1)以累加器A為目的操作數(shù)的傳送指令(2)以寄存器Rn和DPTR為目的操作數(shù)的傳送指令(3)以直接地址direct為目的操作數(shù)的傳送指令(4)以寄存器間址@Ri為目的操作數(shù)的傳送指令2.外部數(shù)據(jù)傳送指令
3.訪問程序存儲(chǔ)器指令
4.堆棧操作指令
5.?dāng)?shù)據(jù)交換指令
二、算術(shù)運(yùn)算類指令
在MCS-51系列單片機(jī)指令系統(tǒng)中,算術(shù)運(yùn)算類指令共有24條。用到的助記符有ADD、ADDC、SUBB、DA、INC、DEC、MUL和DIV共9種。算術(shù)運(yùn)算類指令可以進(jìn)行加、減、乘、除和十進(jìn)制調(diào)整等運(yùn)算。執(zhí)行這些指令會(huì)影響到PSW的相關(guān)標(biāo)志位,如進(jìn)位位Cy、輔助進(jìn)位位AC、溢出位OV和奇偶校驗(yàn)位P,參見項(xiàng)目二程序狀態(tài)字PSW。下面將24條指令按功能分為加法和減法指令、乘法和除法指令兩部分進(jìn)行講述。1.加法和減法指令
(1)不帶進(jìn)位的加法運(yùn)算指令(2)帶進(jìn)位的加法運(yùn)算指令(3)帶借位減法運(yùn)算指令(4)加1指令(5)減1指令(6)十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令又稱為BCD碼調(diào)整指令,用于對(duì)累加器A中壓縮BCD碼的加法結(jié)果進(jìn)行修正。它是一條單字節(jié)單周期指令,助記符為DA,來自英文“DecimalAdjust”。指令格式:DAA2.乘法和除法指令
三、邏輯運(yùn)算與移位指令
在MCS-51系列單片機(jī)指令系統(tǒng)中,邏輯運(yùn)算類指令和移位指令共有24條。用到的助記符有ANL、ORL、XRL、CLR、CPL、RL、RLC、RR和RRC共9種。這兩大類指令可以進(jìn)行與、或、非和異或運(yùn)算,累加器A的清零、取反和移位操作等。(1)邏輯與指令1.邏輯運(yùn)算指令
(2)邏輯或指令(3)邏輯異或指令(4)累加器A清零和取反指令2.移位指令
四、控制轉(zhuǎn)移類指令
任何指令系統(tǒng)都有控制轉(zhuǎn)移類指令。在MCS-51系列單片機(jī)指令系統(tǒng)中,控制轉(zhuǎn)移類指令共有17條。用到的助記符有LJMP、AJMP、SJMP、JMP、JZ、JNZ、CJNE、DJNE、LCALL、ACALL、RET、RETI和NOP共13共種。控制轉(zhuǎn)移指令又稱為跳轉(zhuǎn)指令,通過改變程序計(jì)數(shù)器PC的指向來控制程序執(zhí)行的流向。下面將分為無條件轉(zhuǎn)移類指令、條件轉(zhuǎn)移類指令和子程序調(diào)用及返回指令三部分進(jìn)行講述。1.無條件轉(zhuǎn)移類指令
2.條件轉(zhuǎn)移類指令
(1)累加器判零條件轉(zhuǎn)移指令(2)比較條件轉(zhuǎn)移指令(3)減1條件指令3.子程序調(diào)用及返回指令
(1)子程序調(diào)用指令(2)子程序返回指令(3)空操作指令MCS-51指令系統(tǒng)中有1條空操作指令,空操作指令為單字節(jié)單周期指令,操作碼為00H。助記符NOP來自英文“NoOperation”。指令格式:NOP這條指令只執(zhí)行(PC)←(PC)+1操作。指令在時(shí)間上消耗12個(gè)時(shí)鐘周期,因此,常用于等待和延遲情況。五、位操作指令
位操作指令共有17條,使用的助記符有MOV、ANL、ORL、CPL、JC、JNC、JB、JNB、JBC、CLR、SETB共11種。本類指令的操作對(duì)象是位尋址區(qū)中的某一位。位尋址區(qū)位于片內(nèi)RAM的20~2FH地址單元和11個(gè)可位尋址的SFR,具體分布情況如表1-4和表1-5所示。下面將指令分為位傳送指令、位邏輯運(yùn)算指令、位控制轉(zhuǎn)移指令、置位和清零指令四部分進(jìn)行講述。1.位傳送指令
2.位邏輯運(yùn)算指令
3.位轉(zhuǎn)移控制指令
4.置位和清零指令
任務(wù)三匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)
一、匯編語(yǔ)言格式
二、偽指令
三、匯編程序設(shè)計(jì)的一般步驟
四、匯編程序設(shè)計(jì)方法
一、匯編語(yǔ)言格式
一條匯編語(yǔ)言語(yǔ)句由標(biāo)號(hào)、操作碼、操作數(shù)和注釋四部分組成。格式如下:[標(biāo)號(hào):]操作碼[操作數(shù)][;注釋]注:格式中[]表示方括號(hào)中的內(nèi)容是可選項(xiàng),若不需要,可以不包括此項(xiàng)。另外,方括號(hào)本身并不在程序中出現(xiàn)。1.標(biāo)號(hào)
含義:表示所在指令行的地址,是可選項(xiàng)。組成:由數(shù)字和字母組成(“_”也允許出現(xiàn));第一個(gè)字符只能是字母,不能是數(shù)字;標(biāo)號(hào)最后跟冒號(hào),兩者之間不能有空格。舉例:LOOP1、LOOP_1、A6、SUM2.操作碼操作碼表示指令中的助記符,是不可缺少的必選項(xiàng)。一般情況下都采用大寫表示,便于閱讀。例如:MOV、ADD、JMP等。3.操作數(shù)
尋址方式不同,操作數(shù)的寫法也有所不同。(1)立即尋址方式
格式:#data
舉例:#00101000B#20D#0F8H操作數(shù)可以沒有,也可以有一個(gè),兩個(gè)或者三個(gè)二進(jìn)制十進(jìn)制十六進(jìn)制(2)直接尋址方式格式:direct舉例:MOVA,20D
MOVA,DPHMOVA,LOOP1
JMP$MOVA,LOOP1
+1
直接地址SFR的名稱程序中某處已經(jīng)定義過的標(biāo)號(hào)地址當(dāng)前程序計(jì)數(shù)器的值帶有加減符號(hào)的表達(dá)式4.注釋
注釋是對(duì)程序的解釋和說明,用來提高程序本身的可讀性。注釋前必須加分號(hào)“;”,如果注釋內(nèi)容一行寫不完,換行時(shí)也必須用分號(hào)開頭。對(duì)于注釋,計(jì)算機(jī)在匯編時(shí)不予處理,因此,注釋部分可以用中文書寫。但是,除注釋外的所有字符,都要是西文的。我們?cè)诰帉懗绦虻臅r(shí)候,要養(yǎng)成寫注釋的良好習(xí)慣,有助于程序的交流使用。二、偽指令
偽指令是指示和控制匯編過程的一些命令。例如:用來表示程序或數(shù)據(jù)的起始位置等。它是針對(duì)匯編程序的,并不是針對(duì)CPU,因此,在匯編過程不產(chǎn)生可執(zhí)行的目標(biāo)代碼。不同版本的匯編語(yǔ)言,偽指令的符號(hào)和含義可能有所不同,但是基本用法是相同的。這里我們介紹8種MCS-51系列單片機(jī)編程時(shí)常用的偽指令。1.起始偽指令
格式:[標(biāo)號(hào):]ORG16位地址或符號(hào)指令功能:在程序進(jìn)行匯編時(shí),將該語(yǔ)句后面的源程序所匯編成的目標(biāo)代碼存放在指定的16位地址或符號(hào)所表示的存儲(chǔ)單元中。舉例:ORG 4000HLOOP1:MOV A,#08H …來自英文“Origin”表示程序匯編時(shí),LOOP1程序段匯編后的代碼從4000H地址單元開始存放2.結(jié)束偽指令
格式:[標(biāo)號(hào):]END[程序起始地址]指令功能:當(dāng)匯編程序遇到該偽指令后,停止匯編。該偽指令的位置固定在源程序最末尾,END后可以跟第一條指令的符號(hào)地址。舉例:ORG 2000HSTART:MOV A,11H…END START來自英文“End”3.賦值偽指令
格式:字符名稱EQU表達(dá)式指令功能:在程序進(jìn)行匯編時(shí),將EQU右邊的表達(dá)式內(nèi)容賦給左邊的字符名。賦值后,字符名稱可以作為地址或者數(shù)據(jù)在程序中使用。舉例:PORT1 EQU P1 來自英文“Equate”端口號(hào)P1被重新定義為PORT1必須先賦值后使用4.?dāng)?shù)據(jù)地址賦值偽指令
格式:字符名稱DATA表達(dá)式指令功能:將數(shù)據(jù)地址或代碼地址賦給字符名稱。DATA偽指令和EQU偽指令區(qū)別:1.DATA不能將一個(gè)匯編符號(hào)賦給字符名稱,如R0~R7。2.DATA偽指令可以先使用后定義。來自英文“Data”5.定義字節(jié)偽指令
格式:[標(biāo)號(hào):]DB8位二進(jìn)制數(shù)表指令功能:在程序進(jìn)行匯編時(shí),將8位二進(jìn)制數(shù)表存入以左邊標(biāo)號(hào)為起始地址的連續(xù)存儲(chǔ)單元中。來自英文“DefineByte”舉例:ORG 4000HDB 86,15H,"6","B"DB 1001B程序匯編后:(4000H)=86,(4001H)=15H
(4002H)=36H(“6”的ASCII碼)(4003H)=42H(“B”的ASCII碼)(4004H)=1001B6.定義字偽指令
格式:[標(biāo)號(hào):]DW16位二進(jìn)制數(shù)表指令功能:在程序進(jìn)行匯編時(shí),將16位二進(jìn)制數(shù)表存入以左邊標(biāo)號(hào)為起始地址的連續(xù)存儲(chǔ)單元中。來自英文“DefineWord”舉例:ORG 4000HDW 8615H,"6B",18H程序匯編后:(4000H)=86H,(4001H)=15H
(4002H)=36H(“6”的ASCII碼)
(4003H)=42H(“B”的ASCII碼)
(4004H)=00H,(4005H)=18H7.定義存儲(chǔ)空間偽指令
格式:[標(biāo)號(hào):]DS表達(dá)式指令功能:在程序進(jìn)行匯編時(shí),從標(biāo)號(hào)所指示的地址開始預(yù)留一定數(shù)量的內(nèi)存單元,存儲(chǔ)單元的數(shù)量由表達(dá)式?jīng)Q定。來自英文“DefineStorage”舉例:ORG 4000HDS 18H從4000H地址單元開始預(yù)留了24個(gè)字節(jié)的存儲(chǔ)空間8.定義位偽指令格式:字符名稱BIT位地址指令功能:將位地址賦給字符名稱。來自英文“Bit”舉例:PORT_1 BIT P0.1PORT_2 BIT P0.7將兩個(gè)位地址P0.1和P0.7分別賦值給PORT_1和PORT_2,在以后編程中可以直接使用PORT_1和PORT_2三、匯編程序設(shè)計(jì)的一般步驟
分析任務(wù),確定思路和算法
畫出程序流程圖編寫源程序調(diào)試和測(cè)試程序流程圖常用符號(hào)三種基本流程圖這里介紹流程圖基礎(chǔ)知識(shí):四、匯編程序設(shè)計(jì)方法
1.順序結(jié)構(gòu)程序設(shè)計(jì)
程序按照先后順序執(zhí)行
【實(shí)例】某16位數(shù)高8位存放在40H單元,低8位存放在41H單元。利用循環(huán)移位指令,實(shí)現(xiàn)此16位數(shù)(D0~D15)除2操作。
順序結(jié)構(gòu)程序流程圖源程序:ORG 2000HSTART:CLR C ;將Cy位清零MOV A,40H ;高8位送ARRC A ;高8位右移,D8位送CyMOV 40H,A ;送回原地址單元MOV A,41H ;低8位送ARRC A ;低8位右移,Cy位送D7MOV 41H,A ;送回原地址單END START ;程序結(jié)束2.分支結(jié)構(gòu)程序設(shè)計(jì)
通過判斷一些條件來決定程序的流向【實(shí)例】編程實(shí)現(xiàn)生活中的一個(gè)例子:假設(shè)早上上班,如果時(shí)間來不及的話,我們會(huì)選擇打的;時(shí)間還早,天氣也不錯(cuò),我們會(huì)選擇騎車;時(shí)間雖然還早,但是天氣糟糕,我們選擇公交車。源程序:TIME EQU 40HWEA EQU 41HORG 2000HSTART:MOV A,TIME ;當(dāng)前時(shí)間送ACLR C ;Cy位清零SUBB A,#8 ;判斷時(shí)間JNC TAXI ;時(shí)間已晚選擇打的WEATHER:MOV A,WEA ;當(dāng)前天氣送AJNZ BUS ;若時(shí)間來的及但天氣不好,選擇公共汽車RIDE: ;騎車… JMP OTHERBUS: ;公共汽車… JMP OTHERTAXI: ;打的…OTHER:…END START ;程序結(jié)束
3.循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
解決程序中需要重復(fù)執(zhí)行的操作【實(shí)例】編程實(shí)現(xiàn):使用多重循環(huán),實(shí)現(xiàn)延時(shí)0.2秒(這里以項(xiàng)目一典型應(yīng)用中的延時(shí)子程序?yàn)槔?。初始化部分循環(huán)體部分循環(huán)控制部分DELAY:MOV R5,#20 ;將20送R5寄存器LOOP1:MOV R6,#20 ;將20送R6寄存器LOOP2:MOV R7,#230 ;將230送R7寄存器DJNZ R7,$ ;循環(huán)執(zhí)行本指令,每次R7減1DJNZ R6,LOOP2 ;R6-1,若R6≠0,則轉(zhuǎn)至LOOP2DJNZ R5,LOOP1 ;R5-1,若R5≠0,則轉(zhuǎn)至LOOP1RET源程序:4.查表程序設(shè)計(jì)
常用于查表程序的指令有兩條:(1)MOVC A,@A+DPTR(2)MOVC A,@A+PC將事先計(jì)算或測(cè)得的數(shù)據(jù),按照一定的順序編制成表格,存放在存儲(chǔ)器中。程序執(zhí)行時(shí),直接從表中查到所需結(jié)果①基址值(即表格首地址)存入DPTR②變址值(所要查詢的表格項(xiàng)與表格首地址之間的間隔字節(jié)數(shù))送入累加器A③執(zhí)行指令MOVC A,@A+DPTR,查表結(jié)果將存入累加器A①基址值(即表格首地址)存入DPTR②變址值(所要查詢的表格項(xiàng)與表格首地址之間的間隔字節(jié)數(shù))送入累加器A③執(zhí)行指令MOVC A,@A+DPTR,查表結(jié)果將存入累加器A【實(shí)例】使用查表結(jié)構(gòu)程序?qū)崿F(xiàn)項(xiàng)目二任務(wù)六中的流水燈模擬系統(tǒng)的軟件部分。
源程序:;<-----主程序開始----->ORG 0000H ;上電復(fù)位,程序從0000H開始執(zhí)行START:MOV SP,#40H ;堆棧初始化為60HMOV DPTR,#LIU_TAB ;流水花樣數(shù)據(jù)表首地址送DPTRLOOP:CLR A ;將累加器A清0MOVCA,@A+DPTR ;查流水花樣數(shù)據(jù)表CJNE A,#0FFH,SHOW ;判斷流水花樣是否結(jié)束AJMP START ;若所有花樣已顯示,則跳轉(zhuǎn)至程序開始SHOW:MOV P1,A ;將數(shù)據(jù)送到P1口ACALL DELAY ;調(diào)用延時(shí)程序INC DPTR ;數(shù)據(jù)指針加1AJMP LOOP;<-----延時(shí)子程序----->DELAY:…RET;<-----流水花樣數(shù)據(jù)表----->LIU_TAB:DB 11111110B…DB 11111110BDB 0FFH ;流水花樣結(jié)束標(biāo)志0FFHEND ;程序結(jié)束5.子程序設(shè)計(jì)
(1)子程序的結(jié)構(gòu)與調(diào)用
將多次使用的基本操作編寫成相對(duì)獨(dú)立的程序段子程序開頭需要加一個(gè)能夠標(biāo)明其功能的標(biāo)號(hào),以便于主程序調(diào)用子程序結(jié)束時(shí)需要使用一條返回指令RET,用于恢復(fù)主程序的斷點(diǎn)主程序中通過絕對(duì)調(diào)用指令A(yù)CALL或長(zhǎng)調(diào)用指令LCALL來調(diào)用子程序(2)子程序的現(xiàn)場(chǎng)保護(hù)與恢復(fù)如果主程序和子程序中都用到了一些通用單元,如累加器A、工作寄存器R0~R7、數(shù)據(jù)指針DPTR以及有關(guān)標(biāo)志和狀態(tài)等,調(diào)用子程序后,可能會(huì)影響這些共用單元的值或PSW的狀態(tài)。為了保證返回主程序后,相關(guān)共用單元的值不被改變,一般在調(diào)用子程序之前,需要將相關(guān)的值保存起來(即保護(hù)現(xiàn)場(chǎng)),子程序結(jié)束返回主程序時(shí),再將其還原(即恢復(fù)現(xiàn)場(chǎng))。
(3)子程序參數(shù)傳遞寄存器傳送:使用累加器A和工作寄存器R0~R7傳遞參數(shù)。數(shù)據(jù)指針傳送:事先需要建立一個(gè)參數(shù)表,然后利用指針Ri和DPTR進(jìn)行可變長(zhǎng)度的運(yùn)算,適合參數(shù)較多時(shí)使用。堆棧傳送:在調(diào)用子程序前,主程序利用入棧指令PUSH將入口參數(shù)壓入堆棧;進(jìn)入子程序之后,子程序利用出棧指令POP將參數(shù)彈出使用。任務(wù)四典型應(yīng)用
——交通信號(hào)燈模擬系統(tǒng)設(shè)計(jì)
一、系統(tǒng)整體設(shè)計(jì)二、硬件設(shè)計(jì)三、軟件設(shè)計(jì)
一、系統(tǒng)整體設(shè)計(jì)交通信號(hào)燈的模擬系統(tǒng)實(shí)現(xiàn)功能如下表所示。二、硬件設(shè)計(jì)交通燈系統(tǒng)示意圖交通燈系統(tǒng)硬件原理圖三、軟件設(shè)計(jì)程序如下:START:MOV A,#0F6H ;南北紅燈亮,東西綠燈亮MOV P1,A ;將A中數(shù)據(jù)送P1口MOV R4,#120 ;延時(shí)25SLOOP_1:LCALL DELAYDJNZ R4,LOOP_1MOV R4,#10 ;南北紅燈亮,東西綠燈閃二進(jìn)制的11110110AA:MOV A,#0FEH ;南北紅燈亮,東西綠燈滅MOV P1,A ;將A中數(shù)據(jù)送P1口LCALL DELAYMOV A,#0F6H ;南北紅燈亮,東西綠燈亮MOV P1,A ;將A中數(shù)據(jù)送P1口LCALL DELAYDJNZ R4,AABB:MOV A,#0EEH ;南北紅燈亮,東西黃燈亮MOV P1,A ;將A中數(shù)據(jù)送P1口MOV R4,#10 ;延時(shí)2SLOOP_2:LCALLDELAYDJNZ R4,LOOP_2… ;東西紅燈亮?xí)r的情況與前一段類似,這里省略…LJMP STARTDELAY:…RETEND ;程序結(jié)束項(xiàng)目總結(jié)
在本項(xiàng)目中,我們首先學(xué)習(xí)了MCS-51系列單片機(jī)的指令系統(tǒng),認(rèn)識(shí)了指令中的常用符號(hào),學(xué)習(xí)了7種尋址方式和111條指令;任務(wù)三講述了匯編語(yǔ)言程序設(shè)計(jì)的知識(shí),包括匯編語(yǔ)言的格式以及偽指令,匯編程序設(shè)計(jì)的步驟和方法;最后的典型應(yīng)用部分設(shè)計(jì)了一個(gè)十字路口的交通燈模擬系統(tǒng)。
單片機(jī)原理及應(yīng)用技術(shù)項(xiàng)目四MCS-51中斷應(yīng)用
——報(bào)警器設(shè)計(jì)任務(wù)一中斷入門任務(wù)二中斷處理過程任務(wù)三典型應(yīng)用——報(bào)警器設(shè)計(jì)項(xiàng)目總結(jié)
任務(wù)一中斷入門一、中斷的基本原理
二、中斷的好處三、中斷源四、中斷控制寄存器一、中斷的基本原理中斷是指在正常執(zhí)行某一程序過程中,由于內(nèi)部或外部的突發(fā)事件,CPU暫停執(zhí)行此程序而轉(zhuǎn)去處理突發(fā)事件(即執(zhí)行突發(fā)事件的中斷服務(wù)程序),事件處理結(jié)束后返回主程序斷點(diǎn)處(被中斷的下一條指令)繼續(xù)執(zhí)行
二、中斷的好處
實(shí)現(xiàn)分時(shí)操作:?jiǎn)纹瑱C(jī)可以同時(shí)為多個(gè)對(duì)象服務(wù),大大提高工作效率。實(shí)現(xiàn)實(shí)時(shí)處理:及時(shí)發(fā)現(xiàn)和處理中斷請(qǐng)求并為之服務(wù),以滿足實(shí)時(shí)控制的要求。進(jìn)行故障處理:發(fā)生難以預(yù)料的情況或故障時(shí),由CPU快速作出相應(yīng)的處理,可以提高系統(tǒng)自身的可靠性。三、中斷源
5個(gè)中斷源,其中2個(gè)外部中斷源,3個(gè)內(nèi)部中斷源:
INT0:外部中斷,由引腳P3.2引入中斷請(qǐng)求。INT1:外部中斷,由引腳P3.3引入中斷請(qǐng)求。定時(shí)計(jì)數(shù)器T0:內(nèi)部中斷,定時(shí)計(jì)數(shù)器0溢出時(shí)發(fā)出中斷請(qǐng)求。定時(shí)計(jì)數(shù)器T1:內(nèi)部中斷,定時(shí)計(jì)數(shù)器1溢出時(shí)發(fā)出中斷請(qǐng)求。串行口中斷:內(nèi)部中斷,包括串行接收中斷RI和串行發(fā)送中斷TI。四、中斷控制寄存器
MCS-51中斷結(jié)構(gòu)1.TCON中的中斷標(biāo)志位
INT0的觸發(fā)方式控制位INT0的請(qǐng)求標(biāo)志位INT1的觸發(fā)方式控制位INT1的請(qǐng)求標(biāo)志位T0的啟動(dòng)停止標(biāo)志位T0的中斷溢出標(biāo)志位T1的啟動(dòng)停止標(biāo)志位T1的中斷溢出標(biāo)志位2.SCON中的中斷標(biāo)志位
串行口接收中斷標(biāo)志位串行口發(fā)送中斷標(biāo)志位3.中斷允許控制寄存器IE
INT0的中斷允許控制位T0的中斷允許控制位INT1的中斷允許控制位T1的中斷允許控制位串行口中斷允許控制位CPU中斷允許控制位4.中斷優(yōu)先級(jí)控制寄存器IP
IP的狀態(tài)由用戶來設(shè)定,某位為1,則相應(yīng)的中斷源處于高優(yōu)先級(jí)中斷;某位為0,則相應(yīng)的中斷源處于低優(yōu)先級(jí)中斷任務(wù)二中斷處理過程
一、中斷響應(yīng)二、中斷處理三、中斷返回
中斷處理過程
一、中斷響應(yīng)中斷響應(yīng)條件:(1)CPU開中斷,申請(qǐng)中斷請(qǐng)求的中斷源開中斷。
(2)沒有響應(yīng)同級(jí)別或更高級(jí)別的中斷。(3)當(dāng)前處在所執(zhí)行指令的最后一個(gè)周期。(4)如果正執(zhí)行的指令是返回指令(RETI)或訪問IP、IE寄存器的指令,那么CPU將至少再執(zhí)行一條指令才能響應(yīng)中斷。
CPU響應(yīng)中斷過程如下:①將IP中相應(yīng)的優(yōu)先級(jí)控制位置1,以阻斷后來的同級(jí)和低級(jí)的中斷請(qǐng)求。②撤銷該中斷源的中斷請(qǐng)求標(biāo)志,否則,中斷返回后將重復(fù)響應(yīng)該中斷。③保護(hù)斷點(diǎn)地址,程序轉(zhuǎn)向執(zhí)行中斷服務(wù)子程序。二、中斷處理
保護(hù)現(xiàn)場(chǎng)
執(zhí)行中斷服務(wù)程序
恢復(fù)現(xiàn)場(chǎng)
如A、PSW和DPTR等中斷入口地址:INT0:0003HT0:000BHINT1:0013HT1:001BH串口中斷:0023H將壓入堆棧的數(shù)據(jù)彈出
三、中斷返回
中斷返回由中斷返回指令RETI來實(shí)現(xiàn)。這條指令的功能是把斷點(diǎn)地址從堆棧中彈出,送回到程序計(jì)數(shù)器PC;通知中斷系統(tǒng)已完成中斷處理,并同時(shí)清除優(yōu)先級(jí)狀態(tài)。任務(wù)三典型應(yīng)用——報(bào)警器設(shè)計(jì)
一、硬件設(shè)計(jì)二、軟件設(shè)計(jì)在單片機(jī)的外部中斷端口連接按鈕開關(guān),當(dāng)開關(guān)按下時(shí),產(chǎn)生外部中斷,然后由其他輸出端口輸出1KHz和500Hz的音頻信號(hào)驅(qū)動(dòng)蜂鳴器作報(bào)警信號(hào),要求1KHz信號(hào)響100ms,500Hz信號(hào)響200ms,交替3次。系統(tǒng)設(shè)計(jì)思想如下:一、硬件設(shè)計(jì)硬件設(shè)計(jì)原理圖二、軟件設(shè)計(jì)
程序如下:;<--------------------初始化-------------------->ORG 0040HAJMP MAINORG 0013HAJMP INT_1;<--------------------主程序-------------------->MAIN:MOV SP,#60H ;堆棧指針初始化SETB IT1 ;設(shè)置觸發(fā)方式SETB EA ;打開中斷總開關(guān)SETB EX1 ;外部中斷1允許控制位置1SJMP $ ;等待外部中斷
;<---------------外部中斷服務(wù)子程序--------------->INT_1:CLR P3.5MOV R0,#3 ;循環(huán)發(fā)聲3次ALARM:MOV R2,#200DV1: ;輸出500Hz音頻信號(hào)CPL P3.5
LCALL DELY500usLCALL DELY500usDJNZ R2,DV1MOV R2,#200DV2: ;輸出1KHz的音頻信號(hào)CPL P3.5LCALL DELY500usDJNZ R2,DV2DJNZ R0,ALARMRETI ;中斷返回;<--------------------延時(shí)子程序------------------->DELY500us:MOV R7,#250LOOP1:NOPDJNZ R7,LOOP1RETEND
;程序結(jié)束項(xiàng)目總結(jié)在本項(xiàng)目中我們學(xué)習(xí)的是MCS-51系列單片機(jī)的中斷系統(tǒng),首先了解了中斷機(jī)制的原理;隨后,任務(wù)一中介紹了MCS-51系列單片機(jī)的中斷源和中斷控制寄存器;接下來講述了中斷處理的整個(gè)過程;最后,報(bào)警器系統(tǒng)綜合前面所學(xué)知識(shí),親自動(dòng)手設(shè)計(jì)能夠進(jìn)一步加深對(duì)中斷機(jī)制的理解。單片機(jī)原理及應(yīng)用技術(shù)項(xiàng)目五MCS-51定時(shí)/計(jì)數(shù)器應(yīng)用
——電子秒表設(shè)計(jì)任務(wù)一定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)任務(wù)二定時(shí)/計(jì)數(shù)器的工作原理任務(wù)三定時(shí)/計(jì)數(shù)器的控制寄存器任務(wù)四定時(shí)/計(jì)數(shù)器的工作方式任務(wù)五定時(shí)/計(jì)數(shù)器的初始化任務(wù)六定時(shí)/計(jì)數(shù)器擴(kuò)展外部中斷任務(wù)七典型應(yīng)用——電子秒表設(shè)計(jì)項(xiàng)目總結(jié)
任務(wù)一定時(shí)計(jì)數(shù)器的結(jié)構(gòu)控制T0、T1的啟動(dòng)、停止以及溢出標(biāo)志位的設(shè)置
確定定時(shí)/計(jì)數(shù)器的工作方式和功能任務(wù)二定時(shí)/計(jì)數(shù)器的工作原理工作在定時(shí)器模式時(shí),是對(duì)內(nèi)部機(jī)器周期脈沖進(jìn)行計(jì)數(shù),定時(shí)時(shí)間為機(jī)器周期脈沖的時(shí)間乘以機(jī)器周期數(shù)。工作在計(jì)數(shù)器模式時(shí),是對(duì)引腳T0(P3.4)或T1(P3.5)上輸入的外部脈沖計(jì)數(shù),當(dāng)檢測(cè)到引腳上的信號(hào)由高電平跳變到低電平時(shí),計(jì)數(shù)器加1。任務(wù)三定時(shí)/計(jì)數(shù)器的控制寄存器
一、模式控制寄存器TMOD二、控制寄存器TCON
一、模式控制寄存器TMOD
T1T0二、控制寄存器TCON任務(wù)四定時(shí)/計(jì)數(shù)器的工作方式
一、方式0二、方式1三、方式2四、方式3一、方式0
最大計(jì)數(shù)值為213=8192,若振蕩器的時(shí)鐘頻率fOSC=12MHz時(shí),機(jī)器周期為1μs,方式0最大的定時(shí)時(shí)間為8192μs。
13位計(jì)數(shù)器二、方式116位定時(shí)/計(jì)數(shù)器最大計(jì)數(shù)值為216=65536
三、方式28位自動(dòng)重裝定時(shí)/計(jì)數(shù)器四、方式3
T0采用方式3工作T0被拆成兩個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器T0工作在方式3時(shí),T1的三種工作方式
任務(wù)五定時(shí)/計(jì)數(shù)器的初始化
一、初始化的步驟二、預(yù)置初值的計(jì)算三、初始化應(yīng)用舉例
一、初始化的步驟將控制字寫入TMOD寄存器
計(jì)數(shù)初值寫入相應(yīng)的計(jì)數(shù)器
設(shè)置中斷允許控制寄存器IE中的相關(guān)位
啟動(dòng)控制模式啟動(dòng)定時(shí)/計(jì)數(shù)器工作
二、預(yù)置初值的計(jì)算
(1)計(jì)數(shù)方式下
X=2n-N
(2)定時(shí)方式下
X=2n-T/Tc
n為所選的計(jì)數(shù)器位數(shù),N為要求的計(jì)數(shù)值
n為所選的計(jì)數(shù)器位數(shù),T為要求的定時(shí)時(shí)間,Tc為單片機(jī)的機(jī)器周期
三、初始化應(yīng)用舉例
【實(shí)例】設(shè)單片機(jī)的晶振頻率6MHz,利用定時(shí)/計(jì)數(shù)器T0,在引腳P0.0上輸出周期為4ms的方波。
程序如下(查詢方式):ORG 0000HLJMP STARTSTART: ;初始化程序MOV TMOD,#01H ;設(shè)置T0工作在方式1MOV TH0,#0ECH ;將計(jì)數(shù)初值存入T0MOV TL0,#18HSETB P0.0 ;將引腳P0.0設(shè)置為高電平
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離職賠償協(xié)議書陷阱應(yīng)對(duì)策略與賠償金支付指導(dǎo)合同
- 2025年度個(gè)人住房裝修貸款協(xié)議
- 4S店裝修工程委托書
- 2025年度房屋貸款房屋買賣合同書(含貸款期限變更)
- 交房租賃合同范本
- 2025年度實(shí)習(xí)教師與教育機(jī)構(gòu)教育質(zhì)量評(píng)估合作合同
- 時(shí)尚街區(qū)裝飾合作協(xié)議
- 債權(quán)交易合同范例
- 中國(guó)天線連接器項(xiàng)目投資可行性研究報(bào)告
- 新湖中寶信托計(jì)劃
- 七年級(jí)歷史第5課--安史之亂與唐朝衰亡ppt課件
- 戶外LED顯示屏設(shè)計(jì)施工方案.docx
- 上崗證WORD模板
- 凈土資糧——信愿行(05)第三講安住在彌陀大愿之海
- 化工車間開停車風(fēng)險(xiǎn)分析
- 鈑金k因子和折彎扣除參照表
- 市政小三線施工方案(共22頁(yè))
- 靜壓樁機(jī)、鉆孔灌注樁、沉槽機(jī)CAD圖形
- 易經(jīng)(拼音版)
- 紅旗優(yōu)質(zhì)服務(wù)窗口先進(jìn)事跡材料
- 總監(jiān)辦標(biāo)準(zhǔn)化管理規(guī)定
評(píng)論
0/150
提交評(píng)論