版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
項目二、單片機硬件及指令系統(tǒng)應用項目二、單片機硬件及指令系統(tǒng)應用項目二、單片機硬件及指令系統(tǒng)應用—
任務1.二極管點亮能力目標1.能用Proteus構建單片機最小系統(tǒng)2.能運用并行I/O接口3.能學會程序編寫的基本方法并用KeilC進行調(diào)試4.能進行燈亮控制電路綜合調(diào)試學習內(nèi)容1.了解指令的概念2.掌握尋找方式3.掌握傳送、位操作等指令4.了解并行I/O接口項目二、單片機硬件及指令系統(tǒng)應用—能力目標一、任務要求用單片機來實現(xiàn)對一個發(fā)光二極管實現(xiàn)點亮的功能。二、任務分析1.一個普通二極管被點亮的條件R1在此電路中的選擇范圍為330Ω~1KΩ
一、任務要求2.用單片機的I/O口的其中一位來控制二極管的點亮問題給P1.0送一低電平,則二極管就可以被點亮,送一高電平,則二極管就熄滅。2.用單片機的I/O口的其中一位來控制二極管的三、學習知識
(一)了解指令的概念
1、指令的表示法:由操作碼和操作數(shù)兩大部分組成MCS-51指令格式:[標號:]操作助記符[操作數(shù)1][,操作數(shù)2][,操作數(shù)3]其中操作碼助記符一般由2~5個英文字母組成。51系列單片機共有111條指令。
三、學習知識(一)了解指令的概念2、指令的分類:按指令在存儲器中所占用的存儲單元分:單字節(jié)NOP
雙字節(jié)ADDA,#05H
三字節(jié)LJMP8000H按指令功能分:數(shù)據(jù)傳送類MOVA,#04算術運算類ADDA,#05H邏輯運算類ANLA,#05H控制類LJMP8000H位操作類SETB90H2、指令的分類:3、指令中操作數(shù)的描述Rn——工作寄存器R0~R7。Ri——間接尋址寄存器R0、R1。Direct——直接地址,包括內(nèi)部128BRAM單元地址、21個SFR地址。#data——8位常數(shù)。#data16——16位常數(shù)。addr16——16位目標地址。addr11——11位目標地址。rel——8位帶符號的偏移地址。DPTR——16位外部數(shù)據(jù)指針寄存器。bit——可直接位尋址的位。3、指令中操作數(shù)的描述A——累加器。B——寄存器B。C——進、借位標志位,或位累加器。@——間接寄存器或基址寄存器的前綴。/——指定位求反。(x)——x中的內(nèi)容。((x))——x中的地址中的內(nèi)容?!纭斍爸噶畲娣诺牡刂?。AB——累加器A和B寄存器組成的寄存器對,常出現(xiàn)在乘除法指令中。
A——累加器。(二)掌握尋找方式1、立即數(shù)尋址
MOVA,#40H
2、直接尋址
MOVA,40H
3、寄存器尋址
MOVA,R2
4、寄存器間接尋址
MOVA,@R0
(二)掌握尋找方式(1)采用R0或R1作為寄存器間接尋址,可尋址的片內(nèi)片外的RAM的低256字節(jié)的存儲空間。(2)采用DPTR作寄存器間接尋址,可尋址的片外的數(shù)據(jù)存儲器的整個64KB的空間。
5、變址尋址操作數(shù)地址=變地址+基地址
如MOVCA,@A+DPTR
(1)采用R0或R1作為寄存器間接尋址,可尋址的片內(nèi)片外的R例:累加器A的內(nèi)容為20H,DPTR的值為2000H,程序存儲器2020H單元內(nèi)容為47H,則執(zhí)行該指令后累加器A的值為47H。
MOVCA,@A+DPTR6、相對尋址
如JC60H;設(PC)=2000H為基址,相對偏移量為60H;
則當C=1時,轉移的目的地址=2000H+2+60H
例:累加器A的內(nèi)容為20H,DPTR的值為2000H,程序存7、位尋址位尋址是指指令的操作數(shù)為8位二進制數(shù)的某一位,指令中給出的是操作數(shù)的位地址??捎糜谖粚ぶ返膮^(qū)域是片內(nèi)RAM20H~2FH單元和部分特殊功能寄存器。(1)可直接使用位地址。(2)對特殊寄存器也可進行位尋址。
7、位尋址(三)掌握傳送、位操作等指令1、片內(nèi)數(shù)據(jù)傳送指令單片機在邏輯上分為三個空間,分別是程序空間、片內(nèi)數(shù)據(jù)存儲器空間、片外數(shù)據(jù)存儲器空間。
片內(nèi)外程序存儲器ROMEPROMMOVC特殊功能寄存器片內(nèi)RAM128字節(jié)MOVPUSHPOPXCHXCHDMOVX片外數(shù)據(jù)存儲器RAM(三)掌握傳送、位操作等指令片內(nèi)外程序存儲器MOVC特殊功能(1)以A為目標地址的傳送指令指令指令代碼操作MOVA,Rn11101rrrA←(Rn)MOVA,direct11100101directA←(direct)MOVA,@Ri1110011iA←((Ri))MOVA,#data1101000A←data(1)以A為目標地址的傳送指令指令指令代碼操作MOVA,(2)以直接地址為目標地址的傳送指令指令指令代碼操作MOVdirect,A11110101directdirect←(A)MOVdirect,Rn10001rrrdirectdirect←(Rn)MOVdirect,@Ri1000111directdirect←((Ri))MOVdirect,#data01110101directdatadirect←dataMOVdirect1,direct210000101direct2,direct1direct1←(direct2)(2)以直接地址為目標地址的傳送指令指令指令代碼操作MOV(3)以Rn為目標地址的傳送指令指令指令代碼操作MOVRn,A11111rrrRn←(A)MOVRn,#data01111rrrRn←dataMOVRn,direct10101rrrRn←(direct)(3)以Rn為目標地址的傳送指令指令指令代碼操作MOVRn(4)以間接地址為目標地址的傳送指令指令指令代碼操作MOV@Ri,A1111011i((Ri))←(A)MOV@Ri,#data0111011i((Ri))←dataMOV@Ri,direct1010011i((Ri))←(direct)(4)以間接地址為目標地址的傳送指令指令指令代碼操作MOV(5)十六位數(shù)傳送(以DPTR為目標地址)傳送指令指令指令代碼操作MOVDPTR,#data1610010000dataH8dataL8(DPTR)←data16(5)十六位數(shù)傳送(以DPTR為目標地址)傳送指令MOVD2、累加器A與片外RAM之間傳送指令MOVX(4條)MOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←AMOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←A
1、3兩條指令完成了將外部數(shù)據(jù)讀入單片機,此時單片機的RD為低電平2、4兩條指令完成了將單片機數(shù)據(jù)寫入外部設備,此時單片機的WR為低電平2、累加器A與片外RAM之間傳送指令MOVX(4條)3、程序存儲器向累加器A傳送指令MOVC(2條)MOVCA,@A+PCMOVCA,@A+DPTR這種指令可用來實現(xiàn)查表程序,不同之處在于:第一條指令只能在256位中查表,第二條指令可在64KB范圍中查表。3、程序存儲器向累加器A傳送指令MOVC(2條)例:試編寫一程序,實現(xiàn)將片外RAM的0FAH單元中的內(nèi)容傳送到外RAM的04FFH單元中。分析:根據(jù)圖2-6可以看到,外部存儲單元之間是不能相互傳遞的,所以只有將外部數(shù)據(jù)通過傳向片內(nèi),再將片內(nèi)的數(shù)據(jù)傳向片外來進行操作。具體在操作過程中要考慮如下事宜:①定義起始地址、目標地址。②源操作數(shù)→A。③A→目標操作方式。例:試編寫一程序,實現(xiàn)將片外RAM的0FAH單元中的內(nèi)容傳送ORG1000HMOVR0,#0FAH;定義源操作數(shù)地址MOVDPTR,#04FFH;定義目標地址MOVXA,@R0;源操作數(shù)先送至AMOVX@DPTR,A;A→目標地址ENDORG1000H4、位操作指令(1)位傳送指令(2條)MOVC,bitMOVbit,C
(2)位修正指令(6條)
CLRCCLRbitCPLCCPLbitSETBCSETBbit4、位操作指令四、任務實施(一)用Proteus構建單片機最小系統(tǒng)硬件
圖2-7單片機控制的二極管點亮電路四、任務實施圖2-7單片機控制的二極管點亮電路(二)編寫程序并進行調(diào)試在任務分析中得知,給P1.0賦個低電平,發(fā)光二極管就被點亮。程序如下:
ORG0000H;從程序空間地址0000H開始L:MOVP1,#0FEH;點亮二極管
SJMPL;在此處踏步等待
END
;結束(二)編寫程序并進行調(diào)試
ORG0000H;從程序空間地址0(三)進行二極管點亮電路仿真調(diào)試
圖2-8單片機控制的二極管點亮仿真電路
(三)進行二極管點亮電路仿真調(diào)試
五、總結與提高完成了二極管點亮的任務,大家考慮一下:1、能否用兩個按鈕來控制二極管的點亮與熄滅,一個按鈕定義為點亮功能,另一個按鈕定義為熄滅。2、能否采用一個按鈕來實現(xiàn)二極管的點亮與熄滅,按一下按鈕,二極管被點亮,再按一下后,熄滅,再按下點亮,再按下熄滅…。
五、總結與提高能力目標1.能編寫和用KeilC調(diào)試簡單的延時子程序2.能用KeilC進行單步,連續(xù)調(diào)試3.能進行單燈閃爍電路綜合調(diào)試學習內(nèi)容1.學習轉移指令的運用2.掌握子程序的編寫方法項目二、單片機硬件及指令系統(tǒng)應用—任務2.單燈閃爍能力目標項目二、單片機硬件及指令系統(tǒng)應用—一、任務要求要求二極管亮滅閃爍的時間為200ms,控制端口仍然采用P1.0口。二、任務分析在任務一中我們已成功將二極管點亮,本任務與任務一所不同的是要由P1.0產(chǎn)生的時序信號如圖2-9所示。一、任務要求200
ms圖2-9單燈閃爍控制時序
三、學習知識(一)主程序和子程序的概念
所謂主程序就是根據(jù)設計者的要求完成主要功能的程序。子程序的概念:主程序中反復用到的一些重復的功能模塊程序,如果都放在主程序中,會讓主程序顯得冗長,所以常將這種需要頻繁使用的基本操作設計成相對獨立的程序段。200ms圖2-9單燈閃爍控制時序三、學習知識1、子程序的調(diào)用與返回子程序的調(diào)用:短調(diào)用指令ACALLaddr11,長調(diào)用指令LCALLaddr16,不同的是前者跳轉的范圍為2K后者跳轉的范圍為64K。返回指令:RET從子程序返回到主程序,RETI從中斷服務程序返回到主程序
1、子程序的調(diào)用與返回2、子程序設計(1)每個子程序都有一個唯一的入口(唯一的名稱),并以標號作為標識,以便主程序的正確調(diào)用,子程序通常以RET指令作為結束。(2)為了使子程序具有通用性,子程序的操作對象通常采用寄存器或寄存器間址等尋址方式。2、子程序設計(3)為了使子程序不論存放在存儲器的任何區(qū)域都能被正確執(zhí)行,在子程序中如有轉移指令,應使用相對轉移指令而不能用絕對轉移指令。(4)進入子程序時,應對那些主程序中使用并在子程序中繼續(xù)需要使用的寄存器的內(nèi)容進行保護(即保護主程序現(xiàn)場),在返回主程序時應恢復它們的原來的狀態(tài)。(3)為了使子程序不論存放在存儲器的任何區(qū)域都能被正確執(zhí)行,子程序設計的基本步驟如下:(1)確定子程序的名稱(入口標號)。(2)確定子程序的入口參數(shù)及出口參數(shù)。(3)確定所使用的寄存器和存儲單元機器使用目的。(4)確定子程序的算法,編寫源程序。子程序設計的基本步驟如下:例、設內(nèi)部RAM20H、21H單元中有兩個數(shù)a和b,編程求c=a2+b2,并把c送入內(nèi)存單元22H中。該程序由兩部分組成:主程序和子程序。主程序通過累加器A傳送入口參數(shù)a和b,子程序用于求平方并將結果通過累加器A傳送給主程序,主程序再求兩平方和。例、設內(nèi)部RAM20H、21H單元中有兩個數(shù)a和b,編程求c
主程序ORG0100H
MOVA,20H;a→AACALLSQR;求a2MOVR0,A;a2→R0MOVA,21H;b→AACALLSQR;求b2ADDA,R0;a2+b2→AMOV22H,A;存入22H單元END
以下為子程序ORG1000H
SQR:ADDA,#01H;
MOVCA,@A+PC
RET
TAB:DB00H,01H,04H,09H,16H,
DB25H,36H,49H,64H,81H
ORG0100H
MOVA,20H;a→AACALLS(二)循環(huán)轉移指令DJNZRn,rel;(Rn)←(Rn)—1若(Rn)≠0,則PC+2+rel,跳轉至目標地址若(Rn)=0,PC+2
跳轉到本指令的下一條指令去執(zhí)行DJNZdirect,rel;(direct)←(direct)—1若(direct)≠0,則PC+2+rel,跳轉至目標地址若(direct)=0,PC+2
跳轉到本指令的下一條指令去執(zhí)行(二)循環(huán)轉移指令DJNZ指令主要用來實現(xiàn)計數(shù)功能,一旦計數(shù)完畢,立即退出循環(huán)體,否則繼續(xù)在循環(huán)體中循環(huán)。例:將8031內(nèi)部的RAM40H~4FH單元置為#00H。解:
DJNZ指令主要用來實現(xiàn)計數(shù)功能,一旦計數(shù)完畢,例:將803
ORG0000h
MOVR0,#40H;置首址
MOVR2,#10H;置長度LOOP:MOV@R0,A
INCR0;修改指針
DJNZR2,LOOP;判斷長度
END
ORG0000h
MOVR0,#40H;置首址
MOV(三)延時子程序的設計1、機器周期當振蕩脈沖頻率為12MHZ,一個機器周期為1us。當振蕩脈沖頻率為6MHZ,一個機器周期為2us。2、指令周期執(zhí)行一條指令所需的時間叫指令周期,一般指令需1、2、4個機器周期。3、單循環(huán)程序運用(三)延時子程序的設計圖2-10延時子程序(5.135ms)
圖2-10延時子程序(5.135ms)考慮在此單循環(huán)程序外再嵌套一層循環(huán),見下方第2~7部分,以內(nèi)部(3~6行)產(chǎn)生延時時間為5ms為重復操作對象,重復操作的次數(shù)由外循環(huán)來進行參數(shù)設置,由外部循環(huán)中R7設定為20,這樣重復20次1ms的操作后延時約為100ms,考慮到晶振會帶來點誤差。圖2-11延時子程序(102ms)
考慮在此單循環(huán)程序外再嵌套一層循環(huán),見下方第2~7部分,以內(nèi)四、任務實施(一)硬件電路同任務一。(二)100ms延時子程序的調(diào)試。這已在延時子程序的設計中完成。(三)編寫完整的主程序和子程序。
ORG0000H
L1:MOVP1,#0FEH;點亮二極管
LCALLDELAY2;延時200ms
MOVP1,#0FFH;關閉二極管
LCALLDELAY2;延時200ms
LJMPL1;返回到首址
ORG0100H
四、任務實施
ORG0000H
L1:MOVP1,#0FEDELAY2:MOVR7,#20;延時200ms子程序D1:MOVR6,#00H
D2:NOP
NOP
DJNZR6,D2
DJNZR7,D1
RET
;返回
END
DELAY2:MOVR7,#20;延時200ms子程序D1(四)進行單燈閃爍綜合調(diào)試。將上述生成的單燈閃爍.hex文件加載到用Proteus繪制的硬件電路CPU后臺,點擊運行,可以觀察到二極管以200ms閃爍的結果圖2-12單燈閃爍電路仿真
(四)進行單燈閃爍綜合調(diào)試。圖2-12單燈閃爍電路仿真五、總結與提高1、純粹的硬件電路設計:硬件定時不占CPU時間,但需通過改變電路的元件參數(shù)來調(diào)節(jié)定時時間,在使用上不方便。2、延時子程序:像本次任務中,CPU大量的時間停留在延時程序中增加了開銷,所以軟件定時時間不宜過長。3、可編程定時器:通過對系統(tǒng)時鐘脈沖的計數(shù)來實現(xiàn),計數(shù)值通過改變計數(shù)值程序設定。可以不占用CPU的開銷。
五、總結與提高項目二、單片機硬件及指令系統(tǒng)應用—
任務3.跑馬燈
能力目標1.能通過程序的編寫使燈從上依次向下輪流點亮,或從下往上依次輪流點亮。2.能用KeilC進行單步,連續(xù)調(diào)試3.能進行跑馬燈電路綜合調(diào)試學習內(nèi)容1.學習向左或向右轉指令的運用2.狀態(tài)計數(shù)器的設計3.程序流程圖的畫法項目二、單片機硬件及指令系統(tǒng)應用—能力目標一、任務要求P1口的8位分別接著二極管,通過編程依次實現(xiàn)P1口8個二極管由低位到高位依次點亮和熄滅,依次點亮的時間為100ms。二、任務分析通過任務要求分析,需要在P1口產(chǎn)生如下時序:見圖2-13所示。
一、任務要求100ms700ms
P1.023456P1.1P1.2P1.3P1.4P1.5P1.6P1.7圖2-13跑馬燈要求P1口產(chǎn)生的時序
100ms700msP1.023456P1.1P1.2P1.通過任務分析,要解決如下問題:(1)100ms的延時子程序,前面任務二中已會運用,更可以直接拿來運用。(2)狀態(tài)轉移的實現(xiàn)。(3)一個時序周期中8個狀態(tài)的記憶問題。通過任務分析,要解決如下問題:三、學習知識(一)狀態(tài)轉移的實現(xiàn)
1、RLA;roundlefta助記例:(A)=81H,RLA
后A7移至A0的后邊,其它位向左移1位,執(zhí)行結果(A)=03H。將累加器A的內(nèi)容左移1位,位A7循環(huán)移入A0,不影響其它的標志位。三、學習知識1、RLA;roundleft2、RLCA和RLA指令一樣都使A中內(nèi)容逐位左移一位,但RLCA將使CY連同A中的內(nèi)容一起左移循環(huán),A7進入CY,CY進入A0。
例:(A)=81H,CY=0執(zhí)行RLCA后,(A)=02H,CY=1
2、RLCA
例:(A)=81H,CY=0執(zhí)行RLC
3、RRA;roundrightARRA指令的異同點類似于RLA,僅是A中數(shù)據(jù)位移方向向右。例:(A)=81HRRA執(zhí)行結果(A)=0C0H
3、RRA;roundrightAR
4、RRCA指令的異同點類似于RLCA僅是A中數(shù)據(jù)位移方向向右。例:(A)=81H,CY=0執(zhí)行RRCA(A)=40H,CY=1
4、RRCA指令的異同點類似于RLCA僅是A中(二)一個時序周期中8個狀態(tài)的記憶問題
在本任務中我們可以將Rn設為08H,然后進行一次狀態(tài)轉移,Rn就減1,直至減到Rn為0(三)跑馬燈程序周而復始的實現(xiàn)學習指令:無條件轉移指令(4條)1、AJMPaddr11低11位這條指令的實現(xiàn)過程:①首先將當前PC指針加2。②然后用addr11位的地址替換PC指針的低11位,形成新的PC指針而轉移到新的地址。③跳轉的范圍為2K。
(二)一個時序周期中8個狀態(tài)的記憶問題(三)跑馬燈程序周而例:ZHUAN:AJMPaddr11設addr11=001,0000,0011B標號ZHUAN的值為16位地址1230H①PC+21230H+02H=1232H=0001,0010,0011,0010B②替換低11位新的PC值為0001,0001,0000,0011B=1103H
例:ZHUAN:AJMPaddr112、長轉移指令(長跳轉指令)LJMPaddr16執(zhí)行完該條指令時,無條件轉移到指令所提供的16位地址去,所以轉移地址可在64K程序空間內(nèi)跳轉。例:LJMP9000H執(zhí)行完該條指令后,將使程序轉移到9000H單元繼續(xù)執(zhí)行。2、長轉移指令(長跳轉指令)3、相對轉移指令——相對尋址SJMPrel
rel——取值范圍-128~+127(向前向后)采用的是跳轉兩量的補碼(向下為正,向上為負——求補)最終跳轉的目的地為PC+2+rel4、間接轉移指令JMP@A+DPTR該指令是無條件的間接轉移(散轉)指令,一般用于程序的多種出口的實現(xiàn)。
3、相對轉移指令——相對尋址例:根據(jù)累加器A的數(shù)值設計散轉表程序
MOVA,#dataMOVDPTR,#TABLEADDA,#dataJMP@A+DPTRTABLE:AJMPPORT0(PC=TABLE)AJMPPORT1(PC=TABLE1)AJMPPORT2(PC=TABLE2)
例:根據(jù)累加器A的數(shù)值設計散轉表程序條件0data0=0(A)=0PORT0(PC指針)出口0條件1data1=1(A)=1PORT1(PC指針)出口1條件2data2=2(A)=2PORT2(PC指針)出口2┈┈┈┈┈┈(PC指針)┈┈條件Ndatan=n(A)=nPORTN(PC指針)出口N
條件0data0=0PORT0出口0條件1data1=1PO例:設A中為鍵值,試編寫按鍵值處理相應事件的程序段。解:MOVDPTR,#KYEGMOVB,#03HMULABJMP@A+DPTR┈┈KYEG:LJMPKEYG0
LJMPKEYG1
例:設A中為鍵值,試編寫按鍵值處理相應事件的程序段。比較LJMP、AJMP、SJMP、JM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 考研政治輔導馬原
- 安全生產(chǎn)管理理念與案例分析
- 聯(lián)想猜詞游戲
- 車工工人轉正申請書15篇
- 2025年輪胎均勻性試驗機項目合作計劃書
- 江蘇鹽城鹽城八校2025屆高三上學期開學考試化學試卷試題及答案解析
- 很好的高習參考計劃范文
- 駕校場地出租合同模板
- 技術設備融資租賃協(xié)議書
- 八年級語文上冊第二單元人物畫像6藤野先生高效教案新人教版
- 2024秋期國家開放大學本科《經(jīng)濟學(本)》一平臺在線形考(形考任務1至6)試題及答案
- 動靜脈內(nèi)瘺成形術
- 法律意見書(適用于股權投資)
- JJF(蘇) 276-2024 接觸(觸針)式表面輪廓測量儀校準規(guī)范
- 2024-2025學年五年級科學上冊第二單元《地球表面的變化》測試卷(教科版)
- 污泥(廢水)運輸服務方案(技術方案)
- 2024-2030年中國降壓藥行業(yè)市場規(guī)模分析及發(fā)展趨勢與投資研究報告
- 二十屆三中全會精神應知應會知識測試30題(附答案)
- 一例下肢靜脈血栓疑難病例護理討論
- 2024年信息系統(tǒng)項目管理師題庫及答案
- 輸血相關法律法規(guī)臨床輸血安全管理課件
評論
0/150
提交評論