版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件1 1第第4 4章章 80C5180C51單片機匯編語言程序設計單片機匯編語言程序設計本講重點:本講重點: 匯編語言程序設計。匯編語言程序設計。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2 24.14.1單片機程序設計語言概述單片機程序設計語言概述4.1.1 4.1.1 機器語言和匯編語言機器語言和匯編語言機器語言機器語言用二進制表示的指令。用二進制表
2、示的指令。匯編語言匯編語言用助記符表示的指令。用助記符表示的指令。4.1.2 4.1.2 單片機使用的高級語言單片機使用的高級語言C語言、語言、BASIC、PL/M等等20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3 34.1.3 80C514.1.3 80C51單片機匯編語言的語句格式單片機匯編語言的語句格式標號標號由由1 18 8個個ASCIIASCII碼組成,但碼組成,但第一個字符第一個字符必須必須是是字母字母; 同一標號同一標號,在,在同一段程序中只允許定義一次;同一段程序中只允許定義一次
3、; 標號標號: : 操作碼操作碼 目的操作數(shù)目的操作數(shù), ,源操作數(shù)源操作數(shù); ;注釋注釋 標號標號后邊必須跟后邊必須跟冒號冒號。 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4 44.2 4.2 匯編語言程序的基本結(jié)構(gòu)形式匯編語言程序的基本結(jié)構(gòu)形式 一般把程序結(jié)構(gòu)分為一般把程序結(jié)構(gòu)分為3 3種形式:種形式:順序結(jié)構(gòu)順序結(jié)構(gòu)、分支結(jié)構(gòu)分支結(jié)構(gòu)和和循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)。 順序程序是最簡單的程序結(jié)構(gòu),程序執(zhí)行時,按指令的先后順序程序是最簡單的程序結(jié)構(gòu),程序執(zhí)行時,按指令的先后順序,一條條地執(zhí)行。順序,一
4、條條地執(zhí)行。 4.2.1 4.2.1 順序結(jié)構(gòu)順序結(jié)構(gòu) 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件5 5例:例:三字節(jié)無符號數(shù)相加,其中被加數(shù)在內(nèi)部三字節(jié)無符號數(shù)相加,其中被加數(shù)在內(nèi)部RAMRAM的的50H50H、51H51H和和52H52H單元單元中;加數(shù)在內(nèi)部中;加數(shù)在內(nèi)部RAMRAM的的53H53H、54H54H和和55H55H單元中;要求把相加之和存放在單元中;要求把相加之和存放在50H50H、51H51H和和52H52H單單元中,進位存放在位尋址區(qū)的元中,進位存放在位尋址區(qū)的00H0
5、0H位位中。中。 MOV R0, #52H ; MOV R0, #52H ;被加數(shù)的低字節(jié)地址被加數(shù)的低字節(jié)地址 MOV R1, #55H ;MOV R1, #55H ;加數(shù)的低字節(jié)地址加數(shù)的低字節(jié)地址 MOV A, R0MOV A, R0 ADD A, R1 ; ADD A, R1 ;低字節(jié)相加低字節(jié)相加 MOV R0, A ;MOV R0, A ;存低字節(jié)相加結(jié)果存低字節(jié)相加結(jié)果20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件6 6 DEC R0 DEC R0 DEC R1 DEC R1 MOV
6、 A, R0 MOV A, R0 ADDC A, R1 ; ADDC A, R1 ;中間字節(jié)帶進位相加中間字節(jié)帶進位相加 MOV R0, A ;MOV R0, A ;存中間字節(jié)相加結(jié)果存中間字節(jié)相加結(jié)果 DEC R0DEC R0 DEC R1 DEC R1 MOV A, R0 MOV A, R0 ADDC A, R1 ; ADDC A, R1 ;高字節(jié)帶進位相加高字節(jié)帶進位相加 MOV R0, A ;MOV R0, A ;存高字節(jié)相加結(jié)果存高字節(jié)相加結(jié)果20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課
7、件7 7 CLR A CLR A ADDC A, #00H ADDC A, #00H MOV R0, #00H ; MOV R0, #00H ;存放進位的單元地址存放進位的單元地址 MOV R0, A ;MOV R0, A ;進位送進位送00H00H位保存位保存20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件8 84.2.2 4.2.2 分支結(jié)構(gòu)分支結(jié)構(gòu) 例:例:假定在外部假定在外部RAMRAM中有中有ST1ST1、ST2ST2和和ST3ST3共共3 3個連續(xù)個連續(xù)單元,單元,其中其中ST1ST1和
8、和ST2ST2單元中分別單元中分別存放著兩個存放著兩個8 8位無符號二進制位無符號二進制數(shù)數(shù),要求找出其中的大數(shù)并存入,要求找出其中的大數(shù)并存入ST3ST3單元中。單元中。START: CLR C ;START: CLR C ;進位位清進位位清“0”0” MOV DPTR, #ST1 ; MOV DPTR, #ST1 ;設置數(shù)據(jù)指針設置數(shù)據(jù)指針 MOVX A, DPTR ;MOVX A, DPTR ;取第一個數(shù)取第一個數(shù) 分支結(jié)構(gòu)是通過轉(zhuǎn)移指令實現(xiàn)的,又分為單分支結(jié)構(gòu)分支結(jié)構(gòu)是通過轉(zhuǎn)移指令實現(xiàn)的,又分為單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。和多分支結(jié)構(gòu)。 1.1.單分支結(jié)構(gòu)單分支結(jié)構(gòu) 20222022年年6
9、 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件9 9 MOV R2, A ; MOV R2, A ;第一個數(shù)存第一個數(shù)存R2 R2 INC DPTR ; INC DPTR ;數(shù)據(jù)指針加數(shù)據(jù)指針加1 1 MOVX A, DPTR ; MOVX A, DPTR ;取第二個數(shù)取第二個數(shù) SUBB A, R2 ;SUBB A, R2 ;兩數(shù)比較兩數(shù)比較 JNC BIG1 ;JNC BIG1 ;第二個數(shù)大則轉(zhuǎn)第二個數(shù)大則轉(zhuǎn)BUG1BUG1 XCH A, R2 ; XCH A, R2 ;第一個數(shù)大則整字節(jié)交第一個數(shù)大則整字節(jié)交 換
10、,然后繼續(xù)執(zhí)行程序換,然后繼續(xù)執(zhí)行程序BIG0: INC DPTRBIG0: INC DPTR MOVX DPTR, A ; MOVX DPTR, A ;存大數(shù)存大數(shù)20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件1010 RET RETBIG1: MOVX A, DPTRBIG1: MOVX A, DPTR SJMP BIG0 SJMP BIG020222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件11112
11、.2.多分支結(jié)構(gòu)多分支結(jié)構(gòu) YesNo20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件1212YesYesNoNoCJNE20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件1313例:例:某溫度控制系統(tǒng),采集的溫度值某溫度控制系統(tǒng),采集的溫度值(Ta)(Ta)放在累加器放在累加器A A中。此外,在內(nèi)部中。此外,在內(nèi)部RAM RAM 54H54H單元存放控制溫度下限值單元存放控制溫度下限值(T54)(T54)
12、,在,在55H55H單元存放控制溫度上限值單元存放控制溫度上限值(T55)(T55)。若。若TaT55TaT55,程序轉(zhuǎn)向,程序轉(zhuǎn)向JWJW(降溫處理程序);若(降溫處理程序);若TaT54Ta55Ta55 轉(zhuǎn)降溫處理程序轉(zhuǎn)降溫處理程序 CJNE A, 54H, LOOP2 ;TaT54CJNE A, 54H, LOOP2 ;TaT54則轉(zhuǎn)向則轉(zhuǎn)向LOOP2LOOP2 AJMP FH ;Ta=T54 AJMP FH ;Ta=T54則返回主程序則返回主程序LOOP2: JC SW ;LOOP2: JC SW ;若若(CY)=1(CY)=1則表明則表明 TaT54TaT54,轉(zhuǎn)升溫處理程序。,轉(zhuǎn)升
13、溫處理程序。FH: RETFH: RET20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件16162 2)用查地址表方法實現(xiàn)多分支程序轉(zhuǎn)移用查地址表方法實現(xiàn)多分支程序轉(zhuǎn)移關鍵是建立一個差值表,并將各分支入口地址與該表首地址的差關鍵是建立一個差值表,并將各分支入口地址與該表首地址的差值按順序排列其中,差值表首地址送入值按順序排列其中,差值表首地址送入DPTRDPTR,分支序號值送入,分支序號值送入A A中,然后就可通過轉(zhuǎn)移指令中,然后就可通過轉(zhuǎn)移指令JMP A+DPTRJMP A+DPTR進行分支進行分
14、支。 (0AH0BH0CH0DHAAABBBCCCDDD20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件17173 3)其他)其他方法實現(xiàn)多分支方法實現(xiàn)多分支程序轉(zhuǎn)移(自學)程序轉(zhuǎn)移(自學)地址表、堆棧等地址表、堆棧等20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件18184.2.3 4.2.3 循環(huán)程序結(jié)構(gòu)循環(huán)程序結(jié)構(gòu) 循環(huán)是為了重復執(zhí)行一個程序段。循環(huán)是為了重復執(zhí)行一個程序段。 與高級語言不同,匯編語
15、言中沒有專用的循環(huán)指與高級語言不同,匯編語言中沒有專用的循環(huán)指令,但可以使用條件轉(zhuǎn)移指令通過條件判斷來控令,但可以使用條件轉(zhuǎn)移指令通過條件判斷來控制循環(huán)。制循環(huán)。 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件1919 在程序運行時,有時需要連續(xù)重復執(zhí)行某段在程序運行時,有時需要連續(xù)重復執(zhí)行某段程序,可以使用循環(huán)程序。其結(jié)構(gòu)包括四部程序,可以使用循環(huán)程序。其結(jié)構(gòu)包括四部分:分: 1 1、置循環(huán)初值、置循環(huán)初值 2 2、循環(huán)體(循環(huán)工作部分)、循環(huán)體(循環(huán)工作部分) 3 3、修改控制變量、修改控制變
16、量 4 4、循環(huán)控制部分、循環(huán)控制部分 其組織方式如下圖所示。其組織方式如下圖所示。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2020置初值循環(huán)體循環(huán)修改循環(huán)控制退出循環(huán)未完未完完完(a)置初值循環(huán)體循環(huán)修改循環(huán)控制退出循環(huán)未完未完完完(b)循環(huán)組織方式流程圖循環(huán)組織方式流程圖20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件21211 1、置循環(huán)初值、置循環(huán)初值 對于循環(huán)程序中所使用的工作單元,在循
17、環(huán)開始時對于循環(huán)程序中所使用的工作單元,在循環(huán)開始時應置初值。應置初值。 例如,工作寄存器設置計數(shù)初值,累加器例如,工作寄存器設置計數(shù)初值,累加器A A清清0 0,以,以及設置地址指針、長度等。及設置地址指針、長度等。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件22222 2、循環(huán)體(循環(huán)工作部分)、循環(huán)體(循環(huán)工作部分) 重復執(zhí)行的程序段部分,分為循環(huán)工作部分和循環(huán)重復執(zhí)行的程序段部分,分為循環(huán)工作部分和循環(huán)控制部分??刂撇糠帧?循環(huán)控制部分循環(huán)控制部分每循環(huán)一次,檢查結(jié)束條件每循環(huán)一次,檢查
18、結(jié)束條件,當滿足,當滿足條件時,就停止循環(huán),往下繼續(xù)執(zhí)行其他程序條件時,就停止循環(huán),往下繼續(xù)執(zhí)行其他程序20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件23233 3、修改控制變量、修改控制變量 在循環(huán)程序中,不許給出循環(huán)結(jié)束條件。在循環(huán)程序中,不許給出循環(huán)結(jié)束條件。 常見的是計數(shù)循環(huán),當循環(huán)了一定的次數(shù)后,就停止循環(huán)。常見的是計數(shù)循環(huán),當循環(huán)了一定的次數(shù)后,就停止循環(huán)。 在單片機中,在單片機中,一般用一個工作寄存器一般用一個工作寄存器RnRn作為計數(shù)器作為計數(shù)器,對該計,對該計數(shù)器賦初值作為循環(huán)次
19、數(shù)。每循環(huán)一次,數(shù)器賦初值作為循環(huán)次數(shù)。每循環(huán)一次,計數(shù)器的值減計數(shù)器的值減1 1,即,即修改循環(huán)控制變量,當計數(shù)器的置件為修改循環(huán)控制變量,當計數(shù)器的置件為0 0時,就停止循環(huán)。時,就停止循環(huán)。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件24244 4、循環(huán)控制部分、循環(huán)控制部分 根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。 89C5189C51可采用可采用DJNZDJNZ指令來自動修改控制變量并能結(jié)束循環(huán)。指令來自動修改控制變量并能結(jié)束循環(huán)。20222022年年6
20、 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2525例:例:設有一字符串以回車符為結(jié)束標志,并存放在內(nèi)部設有一字符串以回車符為結(jié)束標志,并存放在內(nèi)部RAMRAM從從40H40H單元開始的連續(xù)存儲單元中,編寫測試字符串長度的程序。單元開始的連續(xù)存儲單元中,編寫測試字符串長度的程序。思路:思路:1.1.逐個字符與回車符(逐個字符與回車符(0DH0DH)比較;)比較; 2.2.設置一個字符串指針;設置一個字符串指針; 3.3.設置一個長度計數(shù)器。設置一個長度計數(shù)器。 MOV R2,#0FFH ;MOV R2,#0FFH ;
21、設置長度計數(shù)器初值設置長度計數(shù)器初值 MOV R0,#3FH ;MOV R0,#3FH ;設置字符串指針初值設置字符串指針初值LOOP: INC R2LOOP: INC R2 INC R0 INC R0CJNE R0, #0DH,LOOPCJNE R0, #0DH,LOOP RET RET20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件262620222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2727202
22、22022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2828一、分析問題一、分析問題 對需要解決的問題進行分析,以求對問題由對需要解決的問題進行分析,以求對問題由正確的理解。如,正確的理解。如, 解決問題的任務是什么?解決問題的任務是什么? 工作過程?工作過程? 現(xiàn)有的條件,已知數(shù)據(jù),對運算的精度和速現(xiàn)有的條件,已知數(shù)據(jù),對運算的精度和速度方面的要求?度方面的要求? 設計的硬件結(jié)構(gòu)是否方便編程?設計的硬件結(jié)構(gòu)是否方便編程?20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電
23、學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件2929二、確定算法二、確定算法 算法就是如何將實際問題轉(zhuǎn)化成程序模塊來處理。算法就是如何將實際問題轉(zhuǎn)化成程序模塊來處理。 在編程以前,先要對幾種不同的算法進行分析、比在編程以前,先要對幾種不同的算法進行分析、比較,找出最適宜的算法較,找出最適宜的算法20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3030三、畫程序流程圖三、畫程序流程圖 程序流程圖是用各種圖形、符號、有向線段等來說明程序設程序流程圖是用各種圖形、符號、有向線段等來說明程序設計
24、過程的一種直觀的表示。計過程的一種直觀的表示。 流程圖劃分得越細致,編寫程序是也越方便。流程圖劃分得越細致,編寫程序是也越方便。 畫流程圖是程序結(jié)構(gòu)設計的一種重要手段。畫流程圖是程序結(jié)構(gòu)設計的一種重要手段。 一個系統(tǒng)軟件包括總流程圖和局部流程圖。一個系統(tǒng)軟件包括總流程圖和局部流程圖。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3131流程圖常采用的圖形和符號:流程圖常采用的圖形和符號:橢圓框橢圓框或桶形框或桶形框:表示程序的:表示程序的開始開始或或結(jié)束結(jié)束。矩形框矩形框:表示要進行的工作。:表示
25、要進行的工作。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3232流程圖常采用的圖形和符號:流程圖常采用的圖形和符號:菱形框菱形框:表示要判斷的事情,菱形框內(nèi):表示要判斷的事情,菱形框內(nèi)的表達式表示要判斷的內(nèi)容。的表達式表示要判斷的內(nèi)容。圓圈圓圈:表示連接點:表示連接點指向線指向線:表示程序的流向:表示程序的流向20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3333四、編寫程序四、編寫程序 用用89
26、C5189C51匯編語言編寫的源程序。匯編語言編寫的源程序。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件343420222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3535編程的方法和技巧編程的方法和技巧一、模塊化的程序設計方法一、模塊化的程序設計方法二、編程技巧二、編程技巧20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學
27、課件教學課件3636一、模塊化的程序設計方法一、模塊化的程序設計方法1 1、程序功能模塊化的優(yōu)點、程序功能模塊化的優(yōu)點2 2、劃分模塊的原則、劃分模塊的原則20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件37371 1、程序功能模塊化的優(yōu)點、程序功能模塊化的優(yōu)點 單個模塊結(jié)構(gòu)的程序單個模塊結(jié)構(gòu)的程序功能單一功能單一,易于編寫易于編寫、調(diào)試調(diào)試和和修改修改。 便于便于分工分工,從而可使多個程序員同時進行程序的編寫和調(diào)試,從而可使多個程序員同時進行程序的編寫和調(diào)試工作,加快軟件研制進度。工作,加快軟件研
28、制進度。 程序程序可讀性好可讀性好,便于,便于功能擴充功能擴充和和版本升級版本升級。 對程序的修改可局部進行對程序的修改可局部進行,其它部分可以保持不變。,其它部分可以保持不變。 對使用頻繁的子程序?qū)κ褂妙l繁的子程序建立子程序庫建立子程序庫,便于多模塊調(diào)用。,便于多模塊調(diào)用。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件38382 2、劃分模塊的原則、劃分模塊的原則 每個模塊應具有每個模塊應具有獨立的功能獨立的功能,能產(chǎn)生一個明確的結(jié)果,即單,能產(chǎn)生一個明確的結(jié)果,即單模塊的功能高內(nèi)聚性。模塊的功
29、能高內(nèi)聚性。 模塊之間的模塊之間的控制耦合應盡量簡單控制耦合應盡量簡單,數(shù)據(jù)耦合應盡量少數(shù)據(jù)耦合應盡量少,即模,即模塊間的低耦合性??刂岂詈鲜侵改K進入和退出的條件及方塊間的低耦合性。控制耦合是指模塊進入和退出的條件及方式,數(shù)據(jù)耦合是指模塊間的信息交換方式、交換量的多少及式,數(shù)據(jù)耦合是指模塊間的信息交換方式、交換量的多少及交換頻繁程度。交換頻繁程度。 模塊長度適中。模塊長度適中。2020條條100100條的范圍較合適。條的范圍較合適。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件3939二、編程技
30、巧二、編程技巧1 1、盡量、盡量采用采用循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)和和子程序子程序。2 2、盡量、盡量少用少用無條件轉(zhuǎn)移無條件轉(zhuǎn)移指令。指令。3 3、對于通用的子程序,考慮到其通用性,除了用于存放子程、對于通用的子程序,考慮到其通用性,除了用于存放子程序入口參數(shù)的寄存器外,子程序中用到的其他寄存器的內(nèi)容序入口參數(shù)的寄存器外,子程序中用到的其他寄存器的內(nèi)容應壓入堆棧(返回前再彈出),即保護現(xiàn)場。應壓入堆棧(返回前再彈出),即保護現(xiàn)場。4 4、在中斷處理程序中,除了要保護處理程序中用到的寄存器、在中斷處理程序中,除了要保護處理程序中用到的寄存器外,還要保護標志寄存器。外,還要保護標志寄存器。5 5、用累加器
31、傳遞入口參數(shù)或返回參數(shù)比較方便用累加器傳遞入口參數(shù)或返回參數(shù)比較方便,子程序中,子程序中,一般不必把累加器內(nèi)容壓入堆棧。一般不必把累加器內(nèi)容壓入堆棧。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件40404.3 80C514.3 80C51單片機匯編語言程序設計舉例單片機匯編語言程序設計舉例 本節(jié)課本上的例題以自學為主。本節(jié)課本上的例題以自學為主。大部分程序沒用,重點看查表程序。大部分程序沒用,重點看查表程序。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電
32、學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4141 ORG 1000H ORG 1000H ONE DATA 30H ONE DATA 30H TWO DATA 31H TWO DATA 31H MAX DATA 32H MAX DATA 32H CLR C CLR C MOV A MOV A ,ONE ONE SUBB A SUBB A ,TWO TWO JZ XMAXJZ XMAX JB ACCJB ACC7 7,NEGNEG JB OVJB OV,YMAXYMAX SJMP SJMP XMAXXMAX NEG NEG: JB OVJB OV,XMAXXMAX YMAX YM
33、AX: MOV A MOV A ,TWOTWO SJMP RMAXSJMP RMAX XMAX XMAX: MOV A MOV A ,ONEONE RMAX RMAX: MOV MAXMOV MAX,A A SJMP $ SJMP $ END END 例例 ONE ONE和和TWOTWO單元中的兩個帶符號數(shù)比較大小,將較大者存入單元中的兩個帶符號數(shù)比較大小,將較大者存入MAXMAX單元中。兩數(shù)相等則任一個存入單元中。兩數(shù)相等則任一個存入MAXMAX即可。即可。若若X XY Y為負,則為負,則OV=0OV=0,XYXYXY若若X XY Y為正,則為正,則OV=0OV=0,XYXY OV=1 OV
34、=1,XY XY 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4242 ORG 0000H ORG 0000HZero: Zero: movmov R0, #30H R0, #30H movmov R7,#10 R7,#10 movmov A,#00H A,#00HLoop: Loop: movmov R0, A R0, A inc R0 inc R0 djnzdjnz R7,Loop R7,Loop sjmpsjmp $ $ END END30H30HR0R023H23H98H98H0A8H0
35、A8H0FDH0FDH0 00 00 00 00 00 020222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4343例例 將兩個半字節(jié)數(shù)合并成一個一字節(jié)數(shù)將兩個半字節(jié)數(shù)合并成一個一字節(jié)數(shù)。 設內(nèi)部設內(nèi)部RAM 40H#, 41HRAM 40H#, 41H單元中分別存放著單元中分別存放著 8 8 位二進制數(shù)位二進制數(shù), , 要求取出要求取出兩個單元中的低半字節(jié)兩個單元中的低半字節(jié), , 并成一個字節(jié)后并成一個字節(jié)后, , 存入存入50H50H單元中。單元中。 程序如下程序如下: : START: MOV
36、 R1, START: MOV R1, 40H ; 40H ; 設置設置R1R1為為數(shù)據(jù)指針數(shù)據(jù)指針 MOV A, R1 ; MOV A, R1 ; 取出第一個單元中取出第一個單元中的內(nèi)容的內(nèi)容 ANL A, ANL A, 0FH ; 0FH ; 取第一個數(shù)的低取第一個數(shù)的低半字節(jié)半字節(jié) SWAP A SWAP A ; ; 移至高移至高半字節(jié)半字節(jié) INC R1 INC R1 ; ; 修改修改數(shù)據(jù)指針數(shù)據(jù)指針 XCH A, R1 XCH A, R1 ; ; 取第二個單元中取第二個單元中的內(nèi)容的內(nèi)容 ANL A, ANL A, 0FH ; 0FH ; 取第二個數(shù)的低取第二個數(shù)的低半字節(jié)半字節(jié) O
37、RL A, R1 ; ORL A, R1 ; 拼字拼字 MOV 50H, A MOV 50H, A ; ; 存放結(jié)果存放結(jié)果 RET RET 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4444 0BH + 90H 9BH + 66H 101H 40H + 1 42H 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件45454.4 4.4 單片機匯編語言源程序的編輯和單片機匯編語言源程序的編輯和匯編(
38、自學)匯編(自學) 匯編匯編匯編匯編20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件46464.5 80C514.5 80C51單片機匯編語言偽指令單片機匯編語言偽指令匯編程序匯編程序 軟件軟件 工具工具工具軟件工具軟件:將程序員將程序員用匯編語言編寫的程序用匯編語言編寫的程序翻譯成機器碼翻譯成機器碼 ( (真真) )指令指令: :告訴告訴計算機計算機如何操作以及做何種操作如何操作以及做何種操作用匯編語言編寫的程序用匯編語言編寫的程序在此被稱為在此被稱為應用程序應用程序偽指令:偽指令:告訴告訴匯編程
39、序匯編程序在翻譯應用程序時在翻譯應用程序時有何具有何具體約定體約定。偽指令不進行具體的操作,那是真指令偽指令不進行具體的操作,那是真指令的事。的事。比如:比如:從何處開始,何處結(jié)束,某些編程者自己從何處開始,何處結(jié)束,某些編程者自己規(guī)定的表述代表什么意思規(guī)定的表述代表什么意思 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4747ORGORG addr16addr16ASM51ASM51程序中一定要寫!程序中一定要寫!規(guī)定編譯后的機器代碼存放的規(guī)定編譯后的機器代碼存放的起始位置起始位置。ENDEN
40、D ASM51ASM51程序中一定要寫!程序中一定要寫!表示翻譯到此表示翻譯到此結(jié)束結(jié)束,其后的任何內(nèi)容不予理睬。,其后的任何內(nèi)容不予理睬。符號名稱符號名稱 EQUEQU 表達式表達式將表達式的值賦予符號名稱。程序中凡出現(xiàn)該將表達式的值賦予符號名稱。程序中凡出現(xiàn)該符符號名稱號名稱就就等同于等同于該該表達式表達式。$ $ “當前當前PCPC值值”也叫也叫位置計數(shù)器位置計數(shù)器代表正在執(zhí)行的指令所在位置。代表正在執(zhí)行的指令所在位置。20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4848符號名稱符號名稱
41、BITBIT 位地址位地址將位地址的值賦予符號名稱。程序中凡出現(xiàn)該將位地址的值賦予符號名稱。程序中凡出現(xiàn)該符號名稱符號名稱就就代表代表該該位地址位地址。DWDW 雙字節(jié)數(shù)據(jù)雙字節(jié)數(shù)據(jù) 或雙字節(jié)數(shù)據(jù)組或雙字節(jié)數(shù)據(jù)組 將將雙字節(jié)數(shù)據(jù)雙字節(jié)數(shù)據(jù) 或雙字節(jié)數(shù)據(jù)組或雙字節(jié)數(shù)據(jù)組 順序順序存放在存放在此此后的后的存儲單元中存儲單元中。占據(jù)相應存儲空間。占據(jù)相應存儲空間。DBDB 8 8位數(shù)據(jù)位數(shù)據(jù) 或或8 8位數(shù)據(jù)組位數(shù)據(jù)組 將將8 8位數(shù)據(jù)位數(shù)據(jù) 或或8 8位數(shù)據(jù)組位數(shù)據(jù)組 順序順序存放在存放在此后的此后的存存儲單元中儲單元中。占相應數(shù)量的存儲空間。占相應數(shù)量的存儲空間。20222022年年6 6月月2
42、 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件4949匯編起始偽指令匯編起始偽指令 格式:格式: ORG ORG 功能:功能:指定匯編源程序編譯成機器語言程序指定匯編源程序編譯成機器語言程序 的起始地址的起始地址例如:例如: ORGORG 0000H 0000H LJMP 0100H LJMP 0100H ORGORG 0100H 0100H Start: MOV A,#5AH Start: MOV A,#5AH SJMP $ SJMP $ END END20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武
43、漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件5050匯編結(jié)束偽指令匯編結(jié)束偽指令 格式:格式:END END 起始地址起始地址 功能:停止匯編功能:停止匯編 仍用上例:仍用上例: ORG 0000H ORG 0000H LJMP 0100H LJMP 0100H ORG 0100H ORG 0100HStart: MOV A,#5AhStart: MOV A,#5Ah SJMP $ SJMP $ ENDEND20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系統(tǒng)設計單片機應用系統(tǒng)設計教學課件教學課件5151定義字節(jié)偽
44、指令定義字節(jié)偽指令 格式:格式: DB DB 功能:功能:把把項或項表的數(shù)值存入從標號開始的項或項表的數(shù)值存入從標號開始的連續(xù)單元,其中項或項表可以是一個字節(jié)、數(shù)連續(xù)單元,其中項或項表可以是一個字節(jié)、數(shù)或以引號括起來的字符串?;蛞砸柪ㄆ饋淼淖址?ORG 1000HORG 1000HDat: DB Dat: DB 11h,-111h,-1, ,A,BCDA,BCD END END 該指令只能為程序存儲器賦初該指令只能為程序存儲器賦初值,不能為其他存儲器賦初值,尤其不值,不能為其他存儲器賦初值,尤其不能為內(nèi)部數(shù)據(jù)存儲器賦初值。能為內(nèi)部數(shù)據(jù)存儲器賦初值。1000H1000H11H11HFFHFFH41H41H42H42H程序存儲器程序存儲器43H43H44H44H補碼補碼ASCIIASCII碼碼 20222022年年6 6月月2 2日星期四日星期四武漢理工大學機電學院武漢理工大學機電學院單片機應用系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級數(shù)學計算題專項練習1000題匯編
- 二年級數(shù)學(上)計算題專項練習
- 荷花田管護合同(2篇)
- 南京工業(yè)大學浦江學院《土木工程施工技術(shù)與組織》2022-2023學年第一學期期末試卷
- 林口鎮(zhèn)污水治理工程排水管網(wǎng)工程二期施工組織設計
- 瑞慶汽車發(fā)動機技術(shù)有限公司聯(lián)合廠房施工組織設計
- 《醉翁亭記》說課稿
- 《用數(shù)學》說課稿
- 《我們的夢想》說課稿
- 科室結(jié)對子協(xié)議書(2篇)
- [筆記]HACCP計劃書(火腿腸)
- XPS原理及分析(課堂PPT)
- 基于組態(tài)王655換熱器實驗控制系統(tǒng)
- 廣傳公派下《十二房》巨漢公傳下譜序
- 中國船用柴油機技術(shù)發(fā)展歷程
- (施工方案)墩頂?shù)趸@圓弧段安裝施工方案全解
- 青島市市政工程安全文明施工管理標準
- iso20000信息技術(shù)服務目錄
- 《農(nóng)學蔬菜種植》ppt課件
- 小學二年級閱讀練習(課堂PPT)
- GB31644-2018食品安全國家標準復合調(diào)味料
評論
0/150
提交評論