版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、3.5 單片機(jī)控制水箱水位,學(xué)習(xí)目標(biāo):通過學(xué)習(xí)任務(wù)的完成方法,學(xué)習(xí)MCS-51單片機(jī)的位操作指令。 任務(wù)描述:消防水箱總是要保證有一定的水位,以防火災(zāi)發(fā)生,如果單純靠人工操作,時(shí)間不允許,而且還會(huì)有險(xiǎn)情發(fā)生。如果用單片機(jī)來代替人工就可以解決這個(gè)問題,硬件電路,電路中: 1)輸出:P1.0=1時(shí),M放水; P1.0=0時(shí),M關(guān) 2)輸入:水位B, T1、T2導(dǎo)通 P1.1=0,P1.2=0 A水位B, T1止,T2通 P1.1=1,P1.2=0,水池水位自動(dòng)控制裝置,要求:水位B停放,中斷方式可提高CPU的效率,程序設(shè)計(jì),CLR P1.0 SETB P1.1 SETB P1.2 L1: JNB
2、P1.2, L1 SETB P1.0 L2: JB P1.1, L2 CLR P1.0 SJMP L1 END,相關(guān)知識(shí),1、單片機(jī)如何控制單根I/O口線? 我們?cè)谏厦嫒蝿?wù)中看到,P3口共有8根口線,現(xiàn)在我們只要控制其中一根線,在單片機(jī)中能不能實(shí)現(xiàn)?答案是肯定的。因?yàn)閱纹瑱C(jī)中有一類位操作指令。 2、MCS-51單片機(jī)有哪些位操作指令? MCS-51單片機(jī)有一個(gè)位處理機(jī),它以進(jìn)位標(biāo)志做為位累加器,以內(nèi)部RAM可尋址的128個(gè)為存儲(chǔ)位 。 既然有位處理機(jī)功能,所以也就有相應(yīng)的位操作指令集,下面我們分別談?wù)?位操作:布爾操作,以二進(jìn)制位為單位進(jìn)行運(yùn)算,由布爾處理器實(shí)現(xiàn),操作數(shù)范圍: C,位尋址區(qū)的位
3、,11個(gè)可位尋址的寄存器,位地址的四種表示: 1)使用直接位地址表示;如20H、30H、33H等; 2)使用位寄存器名來表示;如C、OV、F0等; 3)用字節(jié)寄存器名后加位數(shù)來表示;如PSW.4、P0.5ACC.3等; 4)字節(jié)地址加位數(shù)來表示;如20.0、30.4、50.7等,位變量傳送指令 位清零和置位指令 位邏輯運(yùn)算指令 綜合舉例與練習(xí),返回本章首頁(yè),1 位變量傳送指令,MOVC,bit;C(bit) MOV bit,C;bitC,例1 以知片內(nèi)RAM 的(2FH)=10110101B 執(zhí)行 MOV C,2FH.7或MOV C,7FH 結(jié)果 C=,例2 若C=1,(P1)=1100010
4、1B 執(zhí)行 MOV P1.3,C MOV P1.2,C 后 (P1)=,C=1,P1)=11001101B,例3 將P1.2送給P1.6,MOV C,P1.3 MOV P1.6,C,返回本節(jié),2 位清零和置位指令,CLR C;C0 CLR bit;(bit)0 SETB C ;C1 SETB bit ;(bit)1,返回本節(jié),3 位邏輯運(yùn)算指令,ANLC,bit;CC(bit) ANLC,/bit;CC(bit) ORLC,bit;CC(bit) ORLC,/bit;CC(bit) CPLC ;CC CPLbit ;(bit)(bit,返回本節(jié),例2已知A、B、C、D代表位地址,試編程實(shí)現(xiàn) D
5、A B+A B,MOV 10H,C MOV C,ACC.0 ANL C,P2.3 ORL C,10H MOV P1.0,C,例試編程完成.(.,答:MOV C,B ANL C,A MOV D,C,MOV C,A ANL C,B ORL C,D MOV D,C,綜合舉例與練習(xí),例3 用軟件實(shí)現(xiàn)下圖所示的P10 P13間的邏輯運(yùn)算,解: MOV C,P1.1 ORL C,P1.2 ANL C,P1.0 MOV P13,C,P1.1,P1.2,P1.0,P1.3,第四章 MCS51單片機(jī)的程序設(shè)計(jì),匯編語(yǔ)言基本概念 匯編語(yǔ)言程序設(shè)計(jì) 本章思考題與作業(yè),匯編語(yǔ)言基本概念,一、 程序設(shè)計(jì)語(yǔ)言 二、 匯編
6、語(yǔ)言的語(yǔ)句格式 三、 偽指令,返回本章首頁(yè),一、 程序設(shè)計(jì)語(yǔ)言,按照語(yǔ)言的結(jié)構(gòu)及其功能可以分為三種: 1機(jī)器語(yǔ)言:機(jī)器語(yǔ)言是用二進(jìn)制代碼0和1表示指令和數(shù)據(jù)的最原始的程序設(shè)計(jì)語(yǔ)言,計(jì)算機(jī)可以直接識(shí)別和執(zhí)行。 2匯編語(yǔ)言:是一種符號(hào)化語(yǔ)言,用助記符代替“0”、“1”,計(jì)算機(jī)不能直接執(zhí)行,要通過匯編程序匯編成機(jī)器語(yǔ)言后再執(zhí)行。不同的計(jì)算機(jī)匯編語(yǔ)言是不同的。 3高級(jí)語(yǔ)言:是一種不依賴具體計(jì)算機(jī)的語(yǔ)言,接近于人的自然語(yǔ)言,是面向過程或問題而獨(dú)立于機(jī)器的通用語(yǔ)言,必須要通過解釋程序或編譯程序?qū)崿F(xiàn)執(zhí)行,返回本節(jié),二、 匯編語(yǔ)言的語(yǔ)句格式,1匯編語(yǔ)言的指令類型 MCS-51單片機(jī)匯編語(yǔ)言,包含兩類不同性質(zhì)的
7、指令。 (1)基本指令:即指令系統(tǒng)中的指令。它們都是機(jī)器能夠執(zhí)行的指令,每一條指令都有對(duì)應(yīng)的機(jī)器碼。 (2)偽指令:匯編時(shí)用于控制匯編的指令。它們都是機(jī)器不執(zhí)行的指令,無機(jī)器碼,2匯編語(yǔ)言的語(yǔ)句格式 匯編語(yǔ)言源程序是由匯編語(yǔ)句(即指令)組成的。匯編語(yǔ)言語(yǔ)句一般由四部分組成,其典型的匯編語(yǔ)句格式如下: 標(biāo)號(hào):操作碼 操作數(shù);注釋 例如 START:MOV A,30H; ( A ) (30H,1)標(biāo)號(hào),是指語(yǔ)句地址的名字。 命名規(guī)則:第一字符必須用英文字母;第二個(gè) 字符以后可以用字母或數(shù)字09;組 成標(biāo)號(hào)的字符不能超過6個(gè)字符。 注:特殊功能寄存器名(SFR)、偽指令、助 記符等不能作為標(biāo)號(hào)。 例
8、:請(qǐng)指出下列標(biāo)號(hào)是否正確。 2A ADD S+M DPTR,X,X,X,X,2)操作碼,規(guī)定了語(yǔ)句執(zhí)行的具體操作,3)操作數(shù),提供了操作所需要的數(shù)據(jù)或地址,4)注釋,對(duì)語(yǔ)句進(jìn)行解釋或說明,增加可讀性,返回本節(jié),ORG EQU DB DW DS BIT END,三、 偽指令,返回本節(jié),格式:ORG m 功能:用來規(guī)定程序段在存儲(chǔ)器中存放的起始地址。 例如:ORG1000H START:MOVA,#20H MOVB,#30H,2EQU賦值偽指令 格式:符號(hào)名 EQU(或=)表達(dá)式 給指定的符號(hào)名賦予一個(gè)確定的數(shù)值。 例如:SUM EQU 22H MOV A,SUM,1ORG 匯編起始偽指令,說明:
9、該程序段是從地址是1000H 單元開始存放的,A)=22H,1000H,74H,20H,格式:標(biāo)號(hào): DB 8位字節(jié)數(shù)據(jù)表 功能:從ROM某一地址單元開始, 存入一組規(guī)定好的8位二進(jìn)制數(shù)。 例:ORG 8000H TAB: DB 45H,49H,0AH TAB1:DB 07H,3DB 字節(jié)數(shù)據(jù)定義偽指令,45H,49H,0AH,07H,TAB=8000H TAB1=8003H,格式:標(biāo)號(hào): DW 16位字?jǐn)?shù)據(jù)表 功能:從ROM某一地址單元開始, 存入一組規(guī)定好的16位二進(jìn)制數(shù)。 例:ORG 3000H TAB: DW 5678H,1234H DW 3CH,4DW 字?jǐn)?shù)據(jù)定義偽指令,56H,78
10、H,12H,34H,00H,3CH,5DS 空間定義偽指令,格式:標(biāo)號(hào): DS 表達(dá)式 功能:從標(biāo)號(hào)指定的地址單元開始, 在ROM中保留由表達(dá)式所指定 個(gè)數(shù)的存儲(chǔ)單元作為備用的空 間,并均填以零。 例:ORG 2000H AB:DS 06H TAB:MOV A,B TAB的地址應(yīng)為多少,2006H,00H,00H,00H,00H,00H,00H,6BIT位地址符號(hào)定義偽指令,7END匯編結(jié)束偽指令,格式:符號(hào)名 BIT 表達(dá)式 功能:將位地址賦給指定的符號(hào)名。 例: A1 BIT P1.0 MOV C,A1,MOV C,P1.0,格式: 標(biāo)號(hào): END 表達(dá)式 功能:結(jié)束匯編,返回本節(jié),匯編語(yǔ)
11、言程序設(shè)計(jì),一、 匯編語(yǔ)言程序設(shè)計(jì)步驟 二、 結(jié)構(gòu)化程序設(shè)計(jì) 1. 順序結(jié)構(gòu) 2. 分支結(jié)構(gòu) 3. 循環(huán)結(jié)構(gòu) 4. 子程序結(jié)構(gòu),返回本章首頁(yè),一、 匯編語(yǔ)言程序設(shè)計(jì)步驟,1分析問題 2確定算法 3繪制程序流程圖 4分配內(nèi)存單元 5編寫匯編語(yǔ)言源程序 6調(diào)試程序,返回本節(jié),二、 結(jié)構(gòu)化程序設(shè)計(jì),順序程序是一種最簡(jiǎn)單,最基本的程序。 特點(diǎn):程序按編寫的順序依次往下執(zhí)行每一條指 令,直到最后一條。 【例4.1】 將單片機(jī)內(nèi)部RAM40H、41H、42H三個(gè)單 元內(nèi)的無符號(hào)數(shù)相加,和存入R0(高)和R1 (低)中。程序流程如圖4-1所示,1. 順序結(jié)構(gòu),96H + 75H,1 0BH,F6H,01H,
12、1,2,圖4-1 例4-1程序流程圖,ORG 1000H MOVA,40H;取值 ADD A,41H ;40H和41H單元相加 MOV R1,A ;和送R1中 CLR A ADDC A,#00H MOV R0,A MOV A,42H ADD A,R1 MOV R1,A CLR A ADDC A,R0 MOV R0,A SJMP $ END,例4.2】 設(shè)X、Y兩個(gè)小于10的整數(shù)分別存于片內(nèi) 30H、31H單元,試求兩數(shù)的平方和并將結(jié) 果存于32H單元。 解:兩數(shù)均小于10,故兩數(shù)的平方和小于100,可利用 乘法指令求平方。程序流程如圖4-2所示,圖4-2 例4.2程序流程圖,ORG 2000H
13、 MOVA,30H;取30H單元數(shù)據(jù) MOVB,A;將X送入B寄存器 MUL AB;求X2,結(jié)果在累加器中 MOV R1,A;將結(jié)果暫存于R1寄存器中 MOV A,31H;取31H單元數(shù)據(jù) MOV B,A;將Y送入B寄存器 MUL AB;求Y2,結(jié)果在累加器中 ADD A,R1;求X2+ Y2 MOV 32H,A;保存數(shù)據(jù) SJMP $;暫停 END,返回本節(jié),1)分支結(jié)構(gòu)的基本形式 分支結(jié)構(gòu)有三種基本形式,如圖4-3所示。 分支結(jié)構(gòu)程序的設(shè)計(jì)要點(diǎn)如下: 先建立可供條件轉(zhuǎn)移指令測(cè)試的條件。 選用合適的條件轉(zhuǎn)移指令。 在轉(zhuǎn)移的目的地址處設(shè)定標(biāo)號(hào),2. 分支結(jié)構(gòu),圖4-3 分支程序結(jié)構(gòu)流程圖,返回
14、,例4.3】根據(jù)下列程序段,畫出程序流程圖。 JZ L1 MOV R1,#0FFH SJMP L2 L1:MOV R1,#00H L2:SJMP L2,2)分支結(jié)構(gòu)程序設(shè)計(jì)舉例,N,Y,例4.4】 設(shè)X存在30H單元中,根據(jù)下式 X+2X0 Y =100X=0 X X0 求出Y值,將Y值存入31H單元。 解:根據(jù)數(shù)據(jù)的符號(hào)位判別該數(shù)的正負(fù),若最高位為0,再判別該數(shù)是否為0。程序流程如圖4-4所示,圖4-4 例4.3程序流程圖,Y,ORG 2000H MOVA,30H;取數(shù) JBACC.7,NEG;負(fù)數(shù),轉(zhuǎn)NEG JZZER0 ;為零,轉(zhuǎn)ZER0 ADDA,#02H;為正數(shù),求X+2 AJMP
15、SAVE;轉(zhuǎn)到SAVE,保存數(shù)據(jù) ZER0:MOVA,# 64H ;數(shù)據(jù)為零,Y=100 AJMP SAVE ;轉(zhuǎn)到SAVE,保存數(shù)據(jù) NEG:CPL A ;求X SAVE:MOV31H,A ;保存數(shù)據(jù) SJMP ;暫停 END,返回本節(jié),3. 循環(huán)結(jié)構(gòu),1)循環(huán)程序的結(jié)構(gòu)(如圖4-5所示) 循環(huán)程序一般包括如下四個(gè)部分: 初始化 循環(huán)體 循環(huán)控制 結(jié)束 循環(huán)程序按結(jié)構(gòu)形式,有單重循環(huán)與多重循環(huán)。 在多重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán)。 不允許循環(huán)相互交叉,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部(如圖4-6所示,圖4-5 循環(huán)結(jié)構(gòu)程序流程圖,返回,圖4-6 多重循環(huán)示意圖,返回,2)循
16、環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例,例4.5】試編程實(shí)現(xiàn)將單片機(jī)的2000H 20FFH單元內(nèi)容清零。 解:設(shè)置一個(gè)計(jì)數(shù)器R1控制循環(huán)次數(shù),每清零一次,計(jì)數(shù)器加1。程序流程如下圖所示,ORG 0100H MOV DPTR,#2000H MOV R0,#00H MOV A,#00H L1:MOVX DPTR,A INC DPTR INC R0 CJNE R0,#00H,L1 SJMP $ END,例4.5】在單片機(jī)內(nèi)部RAM50H60H單元中 存放一組數(shù),試編程找出其中最大數(shù) 并將該數(shù)送2FH單元中。 解:設(shè)置一個(gè)計(jì)數(shù)器R1控制循環(huán)次數(shù),每處理完一個(gè)數(shù)據(jù),計(jì)數(shù)器減1。程序流程如圖4-7所示,圖4-7 例4.5的
17、程序流程圖,ORG 1000H MOV R0,#50H MOV R1,#10H MOV A,R0 INC R0 MOV 40H,R0 MOV B,A CLR C SUBB A,40H JNC LOOP1 MOV A,40H SJMP LOOP2 LOOP1: MOV A,B LOOP2: DJNZ R1,LOOP MOV 2FH,A SJMP $ END,LOOP,例4.6】已知在ROM1000H104FH單元中存 放一組各不相同的8位二進(jìn)制數(shù),試 編寫程序找出其中是否有數(shù)據(jù)為 88H,若有,將該數(shù)所在存儲(chǔ)單元的 地址送入R1、R0中,否則R1、R0清 零。 解:程序流程如圖4-8所示,圖4-
18、8 例4.6的程序流程圖,ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV DPTR,#1000H MOV R2,#50H AGAIN:MOV A,#00H MOVC A,A+DPTR CJNE A,#88H,LOOP MOV R1,DPH MOV R0,DPL SJMP L1 LOOP: INC DPTR DJNZ R2,AGAIN MOV R0,#00H MOV R1,#00H L1:SJMP L1 END,例4.7】50ms延時(shí) 設(shè)晶振頻率為12MHZ,則一個(gè)機(jī)器周期為1s,執(zhí)行一條DJNZ指令需要2個(gè)機(jī)器周期。 解: MOV R7,#200 DEL1:MOV R6,#123 NOP DEL2:DJNZ R6,DEL2;2*123+2 s DJNZ R7,DEL1;(248+2)*200+1 s (248+2)*200+1 =50.001s,返回本節(jié),4. 子程序,1)子程序概念 將在程序中可能多次出現(xiàn)的操作,用獨(dú)立的、標(biāo) 準(zhǔn)化的通用程序段表示。 所謂調(diào)用子程序,暫時(shí)中斷主程序的執(zhí)行,而轉(zhuǎn) 到子程序的入口地址去執(zhí)行子程序。如圖4-9所 示。 調(diào)用子程序應(yīng)注意: 子程序占用的存儲(chǔ)單元和寄存器。 參數(shù)的傳遞。 子程序經(jīng)過調(diào)用后得到的數(shù)據(jù)來完成程序之間的 參數(shù)傳遞。 嵌套調(diào)用與遞歸調(diào)用。如圖4-10所示,圖4-9 子
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容顧問招聘面試題及回答建議(某大型集團(tuán)公司)2024年
- 企業(yè)財(cái)務(wù)管理的目標(biāo)案例與分析
- 實(shí)驗(yàn)一java基礎(chǔ)知識(shí)
- 發(fā)動(dòng)機(jī)工程師招聘筆試題及解答(某大型集團(tuán)公司)
- 2024年度醫(yī)療器械研發(fā)合作協(xié)議
- 2024年光伏發(fā)電設(shè)備采購(gòu)合同:太陽(yáng)能電池板銷售協(xié)議
- 2024壬癸雙方關(guān)于人工智能實(shí)驗(yàn)室共建合同
- 2024年度船舶代理合同with標(biāo)的為船務(wù)代理服務(wù)
- Unit 7 Section A 教材改題人教版八年級(jí)英語(yǔ)上冊(cè)
- 2024年快速維修服務(wù)協(xié)議
- 腫瘤化療導(dǎo)致的中性粒細(xì)胞減少診治中國(guó)專家共識(shí)(2023版)解讀
- 《新能源汽車概論》課件-6新能源汽車空調(diào)系統(tǒng)結(jié)構(gòu)及工作原理
- 2024年共青團(tuán)入團(tuán)考試題庫(kù)(附答案)
- 田徑運(yùn)動(dòng)會(huì)各種記錄表格
- 產(chǎn)科新生兒疫苗接種課件
- 企業(yè)信息管理概述課件
- 室外健身器材投標(biāo)方案(技術(shù)方案)
- 足浴店店長(zhǎng)聘用合同范本
- tubeless胸科手術(shù)麻醉
- 電商免責(zé)聲明范本
- 飛行科普知識(shí)講座
評(píng)論
0/150
提交評(píng)論