【大學(xué)課件】單片機(jī)原理與接口技術(shù) 80C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)P74
《【大學(xué)課件】單片機(jī)原理與接口技術(shù) 80C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)P74》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《【大學(xué)課件】單片機(jī)原理與接口技術(shù) 80C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)P74(74頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第第4 4章章 80C5180C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)4.1 單片機(jī)程序設(shè)計(jì)語(yǔ)言概述單片機(jī)程序設(shè)計(jì)語(yǔ)言概述4.2 匯編語(yǔ)言程序的基本結(jié)構(gòu)形式匯編語(yǔ)言程序的基本結(jié)構(gòu)形式4.3 80C51 單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)舉例單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)舉例4.4 單片機(jī)匯編語(yǔ)言源程序的編輯和匯編單片機(jī)匯編語(yǔ)言源程序的編輯和匯編4.5 80C51 單片機(jī)匯編語(yǔ)言偽指令單片機(jī)匯編語(yǔ)言偽指令http:/ 單片機(jī)程序設(shè)計(jì)語(yǔ)言概述單片機(jī)程序設(shè)計(jì)語(yǔ)言概述4.1.1 機(jī)器語(yǔ)言和匯編語(yǔ)言機(jī)器語(yǔ)言和匯編語(yǔ)言1、機(jī)器語(yǔ)言、機(jī)器語(yǔ)言 用二進(jìn)制代碼用二進(jìn)制代碼“0”和和“1”表示指令和數(shù)據(jù)的程序設(shè)計(jì)語(yǔ)表示指令
2、和數(shù)據(jù)的程序設(shè)計(jì)語(yǔ)言言,是計(jì)算機(jī)能直接識(shí)別并執(zhí)行的指令是計(jì)算機(jī)能直接識(shí)別并執(zhí)行的指令。優(yōu)點(diǎn):執(zhí)行速度快、占用內(nèi)存少。優(yōu)點(diǎn):執(zhí)行速度快、占用內(nèi)存少。缺點(diǎn):識(shí)別難、記憶難。缺點(diǎn):識(shí)別難、記憶難。2、匯編語(yǔ)言、匯編語(yǔ)言 用助記符和專(zhuān)門(mén)的語(yǔ)言規(guī)則表示指令的功能和特征。用助記符和專(zhuān)門(mén)的語(yǔ)言規(guī)則表示指令的功能和特征。優(yōu)點(diǎn):助記符與機(jī)器指令一一對(duì)應(yīng)。比機(jī)器語(yǔ)言直觀、優(yōu)點(diǎn):助記符與機(jī)器指令一一對(duì)應(yīng)。比機(jī)器語(yǔ)言直觀、易懂、易記。非常適合于實(shí)時(shí)控制的需要。易懂、易記。非常適合于實(shí)時(shí)控制的需要。缺點(diǎn):難以記憶和使用,程序設(shè)計(jì)的技巧性較高,編程缺點(diǎn):難以記憶和使用,程序設(shè)計(jì)的技巧性較高,編程 難度較大。要求使用者必須
3、精通單片機(jī)的硬件系難度較大。要求使用者必須精通單片機(jī)的硬件系 統(tǒng)和指令系統(tǒng)。缺乏通用性,程序不易移植。統(tǒng)和指令系統(tǒng)。缺乏通用性,程序不易移植。http:/ 單片機(jī)使用的高級(jí)語(yǔ)言單片機(jī)使用的高級(jí)語(yǔ)言n對(duì)于對(duì)于8051單片機(jī),現(xiàn)有單片機(jī),現(xiàn)有4種語(yǔ)言支持,即匯編、種語(yǔ)言支持,即匯編、PL/M、C和和BASIC。nC C語(yǔ)言最終得到廣泛應(yīng)用。語(yǔ)言最終得到廣泛應(yīng)用??梢源蟠筇岣邌纹瑱C(jī)應(yīng)用系統(tǒng)研制的開(kāi)發(fā)效率。移可以大大提高單片機(jī)應(yīng)用系統(tǒng)研制的開(kāi)發(fā)效率。移植性好。植性好。高級(jí)語(yǔ)言的不足:生成的目標(biāo)代碼較長(zhǎng),導(dǎo)致應(yīng)用程高級(jí)語(yǔ)言的不足:生成的目標(biāo)代碼較長(zhǎng),導(dǎo)致應(yīng)用程序運(yùn)行速度較慢。序運(yùn)行速度較慢。http:/
4、 80C51 單片機(jī)匯編語(yǔ)言的語(yǔ)句格式單片機(jī)匯編語(yǔ)言的語(yǔ)句格式80C5180C51匯編語(yǔ)言的語(yǔ)句格式如下:匯編語(yǔ)言的語(yǔ)句格式如下::;1.標(biāo)號(hào)標(biāo)號(hào)是語(yǔ)句地址的標(biāo)志符號(hào),標(biāo)號(hào)的幾點(diǎn)規(guī)定:是語(yǔ)句地址的標(biāo)志符號(hào),標(biāo)號(hào)的幾點(diǎn)規(guī)定:18個(gè)個(gè)ASCII字符組成,第一個(gè)字符必須是字母。字符組成,第一個(gè)字符必須是字母。不能使用本匯編語(yǔ)言已經(jīng)定義的符號(hào)作為標(biāo)號(hào)。不能使用本匯編語(yǔ)言已經(jīng)定義的符號(hào)作為標(biāo)號(hào)。標(biāo)號(hào)后面必須跟以冒號(hào)標(biāo)號(hào)后面必須跟以冒號(hào)“:”。同一標(biāo)號(hào)在一個(gè)程序中只能定義一次。同一標(biāo)號(hào)在一個(gè)程序中只能定義一次。標(biāo)號(hào)可有可無(wú)。標(biāo)號(hào)可有可無(wú)。錯(cuò)誤的標(biāo)號(hào)錯(cuò)誤的標(biāo)號(hào) 正確的標(biāo)號(hào)正確的標(biāo)號(hào)1BT:BT11BT:BT
5、1BEGIN BEGIN:BEGIN BEGIN:TA+TB:TATB:TA+TB:TATB:ADD:ADD1:ADD:ADD1:http:/ 匯編語(yǔ)言程序的基本結(jié)構(gòu)形式匯編語(yǔ)言程序的基本結(jié)構(gòu)形式 三種基本結(jié)構(gòu)形式:順序程序結(jié)構(gòu),分支程序結(jié)構(gòu),三種基本結(jié)構(gòu)形式:順序程序結(jié)構(gòu),分支程序結(jié)構(gòu),循環(huán)程序結(jié)構(gòu)。循環(huán)程序結(jié)構(gòu)。4.2.1 順序程序結(jié)構(gòu)順序程序結(jié)構(gòu)順序結(jié)構(gòu)程序是最簡(jiǎn)單的程序結(jié)構(gòu)。程序既無(wú)分支、順序結(jié)構(gòu)程序是最簡(jiǎn)單的程序結(jié)構(gòu)。程序既無(wú)分支、循環(huán),也不調(diào)用子程序,程序執(zhí)行時(shí)一條接一條地循環(huán),也不調(diào)用子程序,程序執(zhí)行時(shí)一條接一條地按順序執(zhí)行指令。按順序執(zhí)行指令。http:/ 2、程序設(shè)計(jì)的一般步
6、驟、程序設(shè)計(jì)的一般步驟 當(dāng)接到程序設(shè)計(jì)的任務(wù)后,當(dāng)接到程序設(shè)計(jì)的任務(wù)后,首先對(duì)任務(wù)進(jìn)行詳盡的分析,首先對(duì)任務(wù)進(jìn)行詳盡的分析,搞清楚已知的數(shù)據(jù)和想要得搞清楚已知的數(shù)據(jù)和想要得到的結(jié)果,程序應(yīng)該完成何到的結(jié)果,程序應(yīng)該完成何種的功能。明確在程序設(shè)計(jì)種的功能。明確在程序設(shè)計(jì)時(shí)應(yīng)該時(shí)應(yīng)該“做什么做什么”。根據(jù)實(shí)際問(wèn)題的要求和指令系根據(jù)實(shí)際問(wèn)題的要求和指令系統(tǒng)的特點(diǎn),確定解決問(wèn)題的具統(tǒng)的特點(diǎn),確定解決問(wèn)題的具體步驟。根據(jù)任務(wù)要求,對(duì)不體步驟。根據(jù)任務(wù)要求,對(duì)不同的計(jì)算方法進(jìn)行比較,選擇同的計(jì)算方法進(jìn)行比較,選擇最適宜的算法。解決最適宜的算法。解決“怎樣做怎樣做”的問(wèn)題。的問(wèn)題。將解決問(wèn)題的具體步驟用一種
7、將解決問(wèn)題的具體步驟用一種約定的幾何圖形、指向線(xiàn)和必約定的幾何圖形、指向線(xiàn)和必要的文字說(shuō)明描述出來(lái),要的文字說(shuō)明描述出來(lái),用圖用圖形的方法描繪解決問(wèn)題的思路。形的方法描繪解決問(wèn)題的思路。用用指令指令的形式的形式將程序流程圖將程序流程圖實(shí)現(xiàn)出來(lái)。實(shí)現(xiàn)出來(lái)。查錯(cuò)、改錯(cuò),查錯(cuò)、改錯(cuò),對(duì)程序進(jìn)行對(duì)程序進(jìn)行優(yōu)化。優(yōu)化。http:/ 50H 51H 52H53H54H55HN1高字節(jié)高字節(jié)N1中字節(jié)中字節(jié)N1低字節(jié)低字節(jié)N2高字節(jié)高字節(jié)N2中字節(jié)中字節(jié)N2低字節(jié)低字節(jié)(1)分析任務(wù))分析任務(wù)(2)確定算法)確定算法(3)畫(huà)流程圖)畫(huà)流程圖(4)編寫(xiě)程序)編寫(xiě)程序(5)上機(jī)調(diào)試)上機(jī)調(diào)試?yán)豪?字節(jié)無(wú)符號(hào)
8、數(shù)相加:其中被加數(shù)在內(nèi)部字節(jié)無(wú)符號(hào)數(shù)相加:其中被加數(shù)在內(nèi)部RAM的的50H、51H和和52H單元中;加數(shù)在內(nèi)部單元中;加數(shù)在內(nèi)部RAM的的53H、54H和和55H單元單元中;要求把相加之和存放在中;要求把相加之和存放在50H、51H和和52H單元中,進(jìn)位存單元中,進(jìn)位存放在位尋址區(qū)的放在位尋址區(qū)的20H位中。位中。http:/ R0,#52H;被加數(shù)的低字節(jié)地址被加數(shù)的低字節(jié)地址MOV R1,#55H;加數(shù)的低字節(jié)地址加數(shù)的低字節(jié)地址MOV A,R0ADD A,R1 ;低字節(jié)相加低字節(jié)相加MOV R0,A ;存低字節(jié)相加結(jié)果存低字節(jié)相加結(jié)果DEC R0DEC R1MOV A,R0ADDC A,
9、R1;中間字節(jié)帶進(jìn)位相加中間字節(jié)帶進(jìn)位相加MOV R0,A ;存中間字節(jié)相加結(jié)果存中間字節(jié)相加結(jié)果DEC R0DEC R1MOV A,R0ADDC A,R1;高字節(jié)帶進(jìn)位相加高字節(jié)帶進(jìn)位相加MOV R0,A ;存高字節(jié)相加結(jié)果存高字節(jié)相加結(jié)果CLR AADDC A,#00H;進(jìn)位送進(jìn)位送00H位保存位保存MOV R0,#20H;存放進(jìn)位的單元地址存放進(jìn)位的單元地址MOV R0,Ahttp:/ 分支結(jié)構(gòu)也稱(chēng)為選擇結(jié)構(gòu)。為分支需要,程序設(shè)計(jì)時(shí)分支結(jié)構(gòu)也稱(chēng)為選擇結(jié)構(gòu)。為分支需要,程序設(shè)計(jì)時(shí)應(yīng)給程序段的起始地址賦予一個(gè)地址標(biāo)號(hào),以供選擇分支應(yīng)給程序段的起始地址賦予一個(gè)地址標(biāo)號(hào),以供選擇分支使用。分支結(jié)
10、構(gòu)又可分為單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。使用。分支結(jié)構(gòu)又可分為單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。1.單分支程序結(jié)構(gòu)單分支程序結(jié)構(gòu) 單分支程序結(jié)構(gòu)即二中選一,是通過(guò)條件判斷實(shí)現(xiàn)單分支程序結(jié)構(gòu)即二中選一,是通過(guò)條件判斷實(shí)現(xiàn)的。一般都的。一般都使用條件轉(zhuǎn)移指令使用條件轉(zhuǎn)移指令對(duì)程序的執(zhí)行結(jié)果進(jìn)行判對(duì)程序的執(zhí)行結(jié)果進(jìn)行判斷。斷??蓪?shí)現(xiàn)單分支轉(zhuǎn)移的指令有:可實(shí)現(xiàn)單分支轉(zhuǎn)移的指令有:JZ、JNZ、CJNE和和DJNZ。位狀態(tài)轉(zhuǎn)移指令:。位狀態(tài)轉(zhuǎn)移指令:JC、JNC、JB、JNB和和JBC等。等。4.2.2 分支程序結(jié)構(gòu)分支程序結(jié)構(gòu)http:/ 假定在外部假定在外部RAM中有中有ST1、ST2和和ST3共共3個(gè)連續(xù)個(gè)連續(xù)單
11、元,其中單元,其中ST1和和ST2單元中存放著兩個(gè)無(wú)符號(hào)二進(jìn)制單元中存放著兩個(gè)無(wú)符號(hào)二進(jìn)制數(shù),要求找出其中的大數(shù)并存入數(shù),要求找出其中的大數(shù)并存入ST3單元中。單元中。解解:(:(1 1)分析任務(wù):比較兩個(gè)數(shù)的大?。┓治鋈蝿?wù):比較兩個(gè)數(shù)的大小 (2 2)算法:算術(shù)運(yùn)算、控制轉(zhuǎn)移)算法:算術(shù)運(yùn)算、控制轉(zhuǎn)移 (3 3)程序結(jié)構(gòu):?jiǎn)畏种В┏绦蚪Y(jié)構(gòu):?jiǎn)畏种?(4 4)數(shù)據(jù)類(lèi)型:?jiǎn)巫止?jié)、二進(jìn)制、無(wú)符號(hào)數(shù))數(shù)據(jù)類(lèi)型:?jiǎn)巫止?jié)、二進(jìn)制、無(wú)符號(hào)數(shù) (5 5)數(shù)據(jù)結(jié)構(gòu):?jiǎn)卧刂飞蚺帕校?shù)據(jù)結(jié)構(gòu):?jiǎn)卧刂飞蚺帕?(6 6)RAMRAM單元安排單元安排:外部:外部RAMRAM單元單元 (7 7)采用寄存器間接尋址
12、方式()采用寄存器間接尋址方式(R0R0、R1R1或或DPTRDPTR)(8 8)程序設(shè)計(jì)流程框圖程序設(shè)計(jì)流程框圖;(9 9)程序清單程序清單;http:/ 始始設(shè)設(shè) 置置 數(shù)數(shù) 據(jù)據(jù) 指指 針針取取 數(shù)數(shù) 據(jù)據(jù) N N2 2取取 數(shù)數(shù) 據(jù)據(jù) N N1 1并并 暫暫 存存結(jié)結(jié) 束束N N1 1保保 存存 于于 A A中中N N2 2 N N1 1修修 改改 數(shù)數(shù) 據(jù)據(jù) 指指 針針保保 存存 大大 數(shù)數(shù)N N2 2保保 存存 于于 A A中中Y YN Nhttp:/ CCLR C;進(jìn)位位清進(jìn)位位清0 0 MOV DPTR MOV DPTR,#ST1#ST1;設(shè)置數(shù)據(jù)指針設(shè)置數(shù)據(jù)指針 MOVX A
13、MOVX A,DPTRDPTR;取第取第1 1個(gè)數(shù)個(gè)數(shù) MOV R2,AMOV R2,A;第第1 1個(gè)數(shù)存于個(gè)數(shù)存于R2R2 INC DPTR INC DPTR;數(shù)據(jù)指針加數(shù)據(jù)指針加1 1 MOVX A,DPTR MOVX A,DPTR;取第取第2 2個(gè)數(shù)個(gè)數(shù) SUBB A,R2SUBB A,R2;兩數(shù)比較兩數(shù)比較 JNC BIG1JNC BIG1;若第若第2 2個(gè)數(shù)大,則轉(zhuǎn)向個(gè)數(shù)大,則轉(zhuǎn)向BIG1BIG1 XCH A,R2 XCH A,R2;若第若第1 1個(gè)數(shù)大,則整字節(jié)交換個(gè)數(shù)大,則整字節(jié)交換BIG0:BIG0:INC DPTR INC DPTR MOVX DPTR,A MOVX DPTR
14、,A;存大數(shù)存大數(shù) RETRETBIG1:BIG1:MOVX A,DPTR MOVX A,DPTR SJMP BIG0 SJMP BIG0上例中,如果采用上例中,如果采用CJNE A,direct,rel指令,應(yīng)如何修改程序?指令,應(yīng)如何修改程序?http:/ 多重單分支結(jié)構(gòu)中,通過(guò)一系列條件判斷,進(jìn)多重單分支結(jié)構(gòu)中,通過(guò)一系列條件判斷,進(jìn)行逐級(jí)分支。為此可使用比較轉(zhuǎn)移指令行逐級(jí)分支。為此可使用比較轉(zhuǎn)移指令CJNE實(shí)現(xiàn)。實(shí)現(xiàn)。http:/ A,55H,LOOP1CJNE A,55H,LOOP1;若若TaT55,TaT55,則轉(zhuǎn)向則轉(zhuǎn)向LOOP1LOOP1AJMP FHAJMP FH ;若若Ta
15、TaT55,T55,則返回則返回LOOP1:LOOP1:JNC JW ;JNC JW ;若若(CY)(CY)0,0,表明表明TaTaT55,T55,轉(zhuǎn)降溫處理程序轉(zhuǎn)降溫處理程序CJNE A,54H,LOOP2 ;CJNE A,54H,LOOP2 ;若若TaT54,TaT54,則轉(zhuǎn)向則轉(zhuǎn)向LOOP2LOOP2AJMP FHAJMP FH ;若若TaTaT54,T54,則返回則返回LOOP2:LOOP2:JC SWJC SW;若若(CY)(CY)1,1,表明表明TaTaT54,T54,轉(zhuǎn)升溫處理程序轉(zhuǎn)升溫處理程序 FH:FH:RETRET;若若T55TaT54,T55TaT54,則返回主程序則返回
16、主程序例:假定采集的溫度值例:假定采集的溫度值Ta放在累加器放在累加器A中。此外,在內(nèi)部中。此外,在內(nèi)部RAM 54H單元存放溫度下限值單元存放溫度下限值T54,在,在55H單元存放溫度單元存放溫度上限值上限值T55。若。若TaT55,程序轉(zhuǎn)向程序轉(zhuǎn)向JW(降溫處理程序降溫處理程序);若;若TaT54,則程序轉(zhuǎn)向,則程序轉(zhuǎn)向SW(升溫處理程序升溫處理程序);若;若T55TaT54,則程序轉(zhuǎn)向,則程序轉(zhuǎn)向FH(返回主程序返回主程序)。http:/ 1)分析任務(wù):解方程)分析任務(wù):解方程 (2 2)算法:控制轉(zhuǎn)移)算法:控制轉(zhuǎn)移 (3 3)程序結(jié)構(gòu):多分支)程序結(jié)構(gòu):多分支 (4 4)數(shù)據(jù)類(lèi)型:?jiǎn)?/p>
17、字節(jié)、二進(jìn)制、有符號(hào)數(shù))數(shù)據(jù)類(lèi)型:?jiǎn)巫止?jié)、二進(jìn)制、有符號(hào)數(shù) (5 5)RAMRAM單元安排單元安排:外部:外部RAMRAM單元單元 (6 6)采用寄存器間接尋址方式()采用寄存器間接尋址方式(R0R0、R1R1或或DPTRDPTR)(7 7)程序設(shè)計(jì)流程框圖程序設(shè)計(jì)流程框圖 (8 8)程序清單程序清單;011y000 xxx例:已知:例:已知:127X-128,求,求Y。設(shè)。設(shè)X,Y分別存放在外部分別存放在外部RAM 1000H和和2000H單元中。單元中。http:/ 始始取取 數(shù)數(shù) 據(jù)據(jù) X X結(jié)結(jié) 束束X X=0 0Y Y=0 0Y YN NX X 0 0Y Y=-1 1Y Y=1 1N
18、 NY Y保保 存存 數(shù)數(shù) 據(jù)據(jù) Y Y返回http:/ XAD EQU 1000H XAD EQU 1000H;BUF EQU 2000HBUF EQU 2000H;ORG 1000HORG 1000HSTARTSTART:MOV DPTRMOV DPTR,#XAD#XAD;數(shù)據(jù);數(shù)據(jù)X X的地址送數(shù)據(jù)指針的地址送數(shù)據(jù)指針DPTRDPTR MOVX A MOVX A,DPTRDPTR;AA取數(shù)據(jù)取數(shù)據(jù)X X JZ SAVJZ SAV;X X0 0轉(zhuǎn)轉(zhuǎn)SAVSAV JB ACC.7 JB ACC.7,NEGNEG;X X0 0轉(zhuǎn)轉(zhuǎn)NEGNEG,否則,否則,X X0 0 MOV A MOV A,
19、#01H#01H;SJMP SAVSJMP SAV;NEG:MOV ANEG:MOV A,#0FFH#0FFH;(0FFH(0FFH為為-1-1補(bǔ)碼補(bǔ)碼)SAV:MOV DPTR SAV:MOV DPTR,#BUF#BUF;數(shù)據(jù)數(shù)據(jù)Y Y的地址送數(shù)據(jù)指針的地址送數(shù)據(jù)指針DPTRDPTR MOVX DPTR MOVX DPTR,A A;保存保存Y Y值值 ENDEND上例中,如果采用上例中,如果采用CJNE指令,應(yīng)如何修改程序?指令,應(yīng)如何修改程序?http:/ XAD EQU 1000H XAD EQU 1000H;BUF EQU 2000HBUF EQU 2000H;ORG 1000HORG
20、 1000HSTARTSTART:MOV DPTRMOV DPTR,#XAD#XAD;數(shù)據(jù);數(shù)據(jù)X X的地址送數(shù)據(jù)指針的地址送數(shù)據(jù)指針DPTR DPTR MOVX A MOVX A,DPTRDPTR;AA取數(shù)據(jù)取數(shù)據(jù)X X CJNE A,#0,ANZ CJNE A,#0,ANZ ;X X0 0轉(zhuǎn)轉(zhuǎn)ANZANZ SJMP SAV SJMP SAV;ANZANZ:JCJC NEGNEG;X0X0X0 MOV A MOV A,#01H#01H;SJMP SAVSJMP SAV;NEG:MOV ANEG:MOV A,#0FFH#0FFH;(0FFH(0FFH為為-1-1補(bǔ)碼補(bǔ)碼)SAV:MOV DPT
21、R SAV:MOV DPTR,#BUF#BUF;數(shù)據(jù)數(shù)據(jù)Y Y的地址送數(shù)據(jù)指針的地址送數(shù)據(jù)指針DPTRDPTR MOVX DPTR MOVX DPTR,A A;保存保存Y Y值值 ENDENDhttp:/ A+DPTR”,但使,但使用該指令實(shí)現(xiàn)多分支轉(zhuǎn)移時(shí),需要有數(shù)據(jù)表格配合。用該指令實(shí)現(xiàn)多分支轉(zhuǎn)移時(shí),需要有數(shù)據(jù)表格配合。多分支程序結(jié)構(gòu)多分支程序結(jié)構(gòu)http:/ MOV A,n;分支序號(hào)送分支序號(hào)送A MOV DPTR,#BRTAB;地址表首址地址表首址 MOVC A,A+DPTR;查表查表 JMP A+DPTR;轉(zhuǎn)移轉(zhuǎn)移BRTAB:DB BR0-BRTAB;地址表地址表 DB BR1-BRT
22、AB DB BRn-BRTABBR0:分支程序分支程序BR1:BRn:http:/ A,nRL A ;分支序號(hào)值乘以分支序號(hào)值乘以2MOV DPTR,#BRTAB;轉(zhuǎn)移指令表首址轉(zhuǎn)移指令表首址JMP A+DPTRBRTAB:AJMP BR0 ;轉(zhuǎn)分支程序轉(zhuǎn)分支程序0AJMP BR1 ;轉(zhuǎn)分支程序轉(zhuǎn)分支程序1 AJMP BR127 ;轉(zhuǎn)分支程序轉(zhuǎn)分支程序127BR0:;分支程序分支程序BR1:BRn:http:/ DPTR,#BRTAB;分支入口地址表首址分支入口地址表首址MOV A,R0RL A;分支轉(zhuǎn)移值乘以分支轉(zhuǎn)移值乘以2MOV R1,A;暫存暫存A值值INC AMOVC A,A+DPTR
23、;取低位地址取低位地址PUSH ACC;低位地址入棧低位地址入棧MOV A,R1;恢復(fù)恢復(fù)A值值MOVC A,A+DPTR;取高位地址取高位地址PUSH ACC;高位地址入棧高位地址入棧RET;分支入口地址裝入分支入口地址裝入PCBRTAB:DW BR0;分支程序入口地址表分支程序入口地址表 DW BR1 DW BR127http:/ 4個(gè)按鍵,功能說(shuō)明如下表:個(gè)按鍵,功能說(shuō)明如下表:分析任務(wù)分析任務(wù) 確定算法確定算法 程序流程框圖程序流程框圖鍵功能鍵功能鍵值(分支程序序號(hào))鍵值(分支程序序號(hào))鍵處理程序(分支程序)鍵處理程序(分支程序)刪除刪除00H00HERER讀數(shù)據(jù)讀數(shù)據(jù)01H01HDS
24、DS寫(xiě)數(shù)據(jù)寫(xiě)數(shù)據(jù)02H02HXSXS插入插入03H03HCRCRhttp:/ JM MP P A A+D DP PT TR RE ER R分分支支程程序序C CR R分分支支程程序序X XS S分分支支程程序序D DS S分分支支程程序序序序號(hào)號(hào)=0 00 0H HD DP PT TR R表表首首地地址址A A分分支支序序號(hào)號(hào)2 2序序號(hào)號(hào)=0 03 3H H序序號(hào)號(hào)=0 02 2H H序序號(hào)號(hào)=0 01 1H Hhttp:/ 假設(shè)轉(zhuǎn)移指令表名稱(chēng)為假設(shè)轉(zhuǎn)移指令表名稱(chēng)為BRTABBRTAB,分支程序序號(hào)已在,分支程序序號(hào)已在A A 中。中。MOV DPTRMOV DPTR,#BRTAB#BRTA
25、B CLR C CLR C RLC A RLC A JMP A+DPTR JMP A+DPTR;ORG 3000HORG 3000H3000H BRTAB3000H BRTAB:AJMP ERAJMP ER;轉(zhuǎn)刪除分支程序轉(zhuǎn)刪除分支程序3001H 3001H 3002H AJMP DS3002H AJMP DS;轉(zhuǎn)讀數(shù)據(jù)分支程序轉(zhuǎn)讀數(shù)據(jù)分支程序3003H3003H3004H AJMP XS3004H AJMP XS;轉(zhuǎn)寫(xiě)數(shù)據(jù)分支程序轉(zhuǎn)寫(xiě)數(shù)據(jù)分支程序3005H3005H3006H AJMP CR3006H AJMP CR;轉(zhuǎn)插入分支程序轉(zhuǎn)插入分支程序 ORG 3100H ORG 3100H310
26、0H ER3100H ER:;刪除分支程序刪除分支程序 ORG 3200HORG 3200H3200H DS3200H DS:;讀數(shù)據(jù)分支程序讀數(shù)據(jù)分支程序 ORG 3300HORG 3300H3300H XS3300H XS:;寫(xiě)數(shù)據(jù)分支程序?qū)憯?shù)據(jù)分支程序 ORG 3400HORG 3400H3400H CR3400H CR:;插入分支程序插入分支程序 ENDENDhttp:/ A)=0 0?轉(zhuǎn)轉(zhuǎn)向向0 0分分支支(A A)=1 1?(A A)=2 2?轉(zhuǎn)轉(zhuǎn)向向2 2分分支支轉(zhuǎn)轉(zhuǎn)向向1 1分分支支Y YY YY YN NN NN Nhttp:/ 循環(huán)程序結(jié)構(gòu)循環(huán)程序結(jié)構(gòu)循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行某個(gè)
27、程序段。使用循環(huán)結(jié)構(gòu)是重復(fù)執(zhí)行某個(gè)程序段。使用條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令通通過(guò)條件判斷來(lái)實(shí)現(xiàn)和控制循環(huán)。過(guò)條件判斷來(lái)實(shí)現(xiàn)和控制循環(huán)。循環(huán)程序一般由循環(huán)程序一般由四四個(gè)主要部分組成個(gè)主要部分組成:(1 1)初始化部分:初始化部分:為循環(huán)程序做準(zhǔn)備,如規(guī)定循環(huán)次數(shù)、為循環(huán)程序做準(zhǔn)備,如規(guī)定循環(huán)次數(shù)、給各變量和地址指針預(yù)置初值。給各變量和地址指針預(yù)置初值。(2 2)處理部分處理部分:為反復(fù)執(zhí)行的程序段,是循環(huán)程序的實(shí)體,為反復(fù)執(zhí)行的程序段,是循環(huán)程序的實(shí)體,也是循環(huán)程序的主體。也是循環(huán)程序的主體。(3 3)循環(huán)控制部分循環(huán)控制部分:其作用是修改循環(huán)變量和控制變量,其作用是修改循環(huán)變量和控制變量,并判斷
28、循環(huán)是否結(jié)束,直到符合結(jié)束條件時(shí),跳出循環(huán)為止。并判斷循環(huán)是否結(jié)束,直到符合結(jié)束條件時(shí),跳出循環(huán)為止。(4 4)結(jié)束部分結(jié)束部分:這部分主要是對(duì)循環(huán)程序的結(jié)果進(jìn)行分析、這部分主要是對(duì)循環(huán)程序的結(jié)果進(jìn)行分析、處理和存放。處理和存放。http:/ R2,#0FFH;MOV R2,#0FFH;設(shè)置長(zhǎng)度計(jì)數(shù)器初值設(shè)置長(zhǎng)度計(jì)數(shù)器初值 MOV R0,#3FH;MOV R0,#3FH;設(shè)置字符串指針初值設(shè)置字符串指針初值LOOP:LOOP:INC R2INC R2INC R0INC R0CJNE R0,#0DH,LOOPCJNE R0,#0DH,LOOPRETRET舉例:通過(guò)查找結(jié)束標(biāo)志舉例:通過(guò)查找結(jié)束標(biāo)
29、志(回車(chē)符回車(chē)符)以統(tǒng)計(jì)字符串長(zhǎng)度的循環(huán)以統(tǒng)計(jì)字符串長(zhǎng)度的循環(huán) 程序。程序。假定字符串存放在內(nèi)部假定字符串存放在內(nèi)部RAM從從40H單元開(kāi)始的連續(xù)存單元開(kāi)始的連續(xù)存儲(chǔ)單元中。為找到結(jié)束標(biāo)志,應(yīng)采用逐個(gè)字符依次與回車(chē)儲(chǔ)單元中。為找到結(jié)束標(biāo)志,應(yīng)采用逐個(gè)字符依次與回車(chē)符符(ASCII碼碼0DH)比較的方法。同時(shí)在程序中還應(yīng)設(shè)置一)比較的方法。同時(shí)在程序中還應(yīng)設(shè)置一個(gè)字符串指針以順序定位字符,設(shè)置一個(gè)字符長(zhǎng)度計(jì)數(shù)器以個(gè)字符串指針以順序定位字符,設(shè)置一個(gè)字符長(zhǎng)度計(jì)數(shù)器以累計(jì)字符個(gè)數(shù)。累計(jì)字符個(gè)數(shù)。http:/ 單循環(huán)程序一般有以下兩種典型結(jié)構(gòu):?jiǎn)窝h(huán)程序一般有以下兩種典型結(jié)構(gòu):http:/ 雙重循環(huán)程
30、序的結(jié)構(gòu):雙重循環(huán)程序的結(jié)構(gòu):開(kāi)開(kāi)始始外外循循環(huán)環(huán)初初始始化化結(jié)結(jié)束束外外循循環(huán)環(huán)結(jié)結(jié)束束否否N NY Y內(nèi)內(nèi)循循環(huán)環(huán)初初始始化化內(nèi)內(nèi)循循環(huán)環(huán)處處理理內(nèi)內(nèi)循循環(huán)環(huán)變變量量修修改改外外循循環(huán)環(huán)處處理理外外循循環(huán)環(huán)變變量量修修改改結(jié)結(jié)束束處處理理內(nèi)內(nèi)循循環(huán)環(huán)結(jié)結(jié)束束否否N NY Yhttp:/ 1)分析任務(wù):數(shù)據(jù)傳送;()分析任務(wù):數(shù)據(jù)傳送;(2 2)算法:比較、控制轉(zhuǎn)移)算法:比較、控制轉(zhuǎn)移 (3 3)程序結(jié)構(gòu):分支、循環(huán)()程序結(jié)構(gòu):分支、循環(huán)(4 4)數(shù)據(jù)類(lèi)型:多字節(jié)字符串)數(shù)據(jù)類(lèi)型:多字節(jié)字符串 (5 5)RAMRAM單元安排單元安排:內(nèi)部:內(nèi)部RAMRAM單元、單元、外部外部RAMRAM
31、單元單元 (6 6)采用寄存器間接尋址方式()采用寄存器間接尋址方式(R0R0、R1R1或或DPTRDPTR)外外部部R RA AM MX XX X內(nèi)內(nèi)部部R RA AM MD DA AT TA A單單元元A AB BU UF FF FE ER R單單元元Y YY Y(A A)$(A A)=$結(jié)結(jié)束束例:把內(nèi)部例:把內(nèi)部RAM中起始地址為中起始地址為DATA的數(shù)據(jù)串傳送到外部的數(shù)據(jù)串傳送到外部 RAM以以BUFFER為首地址的區(qū)域,直到發(fā)現(xiàn)為首地址的區(qū)域,直到發(fā)現(xiàn)“$”字符字符 的的ASC碼為止,同時(shí)規(guī)定數(shù)據(jù)串最大長(zhǎng)度為碼為止,同時(shí)規(guī)定數(shù)據(jù)串最大長(zhǎng)度為32個(gè)字節(jié)。個(gè)字節(jié)。http:/ (7 7
32、)程序流程框圖;)程序流程框圖;開(kāi)開(kāi)始始初初始始化化數(shù)數(shù)據(jù)據(jù)指指針針結(jié)結(jié)束束數(shù)數(shù)傳傳送送完完否否N NY Y初初始始化化控控制制變變量量取取數(shù)數(shù)數(shù)數(shù)據(jù)據(jù)傳傳送送修修改改指指針針變變量量是是$嗎嗎?Y YN Nhttp:/ ORG 0030H ORG 0030H DATACSDATACS:MOV R0MOV R0,#DATA#DATA;DATADATA數(shù)據(jù)區(qū)首地址數(shù)據(jù)區(qū)首地址 MOV DPTRMOV DPTR,#BUFFER#BUFFER;BUFFERBUFFER數(shù)據(jù)區(qū)首地址數(shù)據(jù)區(qū)首地址 MOV R1MOV R1,#20H#20H;最大數(shù)據(jù)串長(zhǎng)最大數(shù)據(jù)串長(zhǎng) LOOPLOOP:MOV AMOV A
33、,R0R0;取數(shù)據(jù)取數(shù)據(jù) SUBB ASUBB A,#24H#24H;判是否為判是否為“$”$”字符字符 JZ LOOP1JZ LOOP1;是是“$”$”字符,轉(zhuǎn)結(jié)束字符,轉(zhuǎn)結(jié)束 MOVX A MOVX A,R0 R0;MOVX DPTRMOVX DPTR,A A;數(shù)據(jù)傳送數(shù)據(jù)傳送 INC R0INC R0;INC DPTRINC DPTR;DJNZ R1DJNZ R1,LOOPLOOP;循環(huán)控制循環(huán)控制 LOOP1LOOP1:RETRET;結(jié)束結(jié)束 ENDENDhttp:/ 1000HORG 1000H CLR0 CLR0:MOV R0MOV R0,#20H#20H;循環(huán)初始化部分;循環(huán)初始
34、化部分 MOV R7MOV R7,#96#96;CLR ACLR A LOOP LOOP:MOV R0MOV R0,A A;循環(huán)體部分循環(huán)體部分 INC R0INC R0;修改變量修改變量 DJNZ R7DJNZ R7,LOOPLOOP;循環(huán)控制部分;循環(huán)控制部分 RETRET END ENDDEC R7DEC R7CJNE R7,#00H,LOOP;CJNE R7,#00H,LOOP;http:/ 例:兩個(gè)三字節(jié)二進(jìn)制無(wú)符號(hào)數(shù)相加,被加數(shù)放在內(nèi)部例:兩個(gè)三字節(jié)二進(jìn)制無(wú)符號(hào)數(shù)相加,被加數(shù)放在內(nèi)部RAM 50H52H單元(低字節(jié)存放在高地址單元,高字節(jié)存放在低地單元(低字節(jié)存放在高地址單元,高字
35、節(jié)存放在低地址單元,即低位在前,高位在后),加數(shù)放在址單元,即低位在前,高位在后),加數(shù)放在53H55H單元,單元,和放在和放在50H52H單元,最高位如有進(jìn)位,則放在單元,最高位如有進(jìn)位,則放在23H單元中。單元中。被加數(shù)(被加數(shù)(N1N1)加數(shù)(加數(shù)(N2N2)和(和(N3N3)50H50H單元單元高字節(jié)高字節(jié)53H53H單元單元高字節(jié)高字節(jié)50H50H單元單元高字節(jié)高字節(jié)51H51H單元單元中字節(jié)中字節(jié)54H54H單元單元中字節(jié)中字節(jié)51H51H單元單元中字節(jié)中字節(jié)52H52H單元單元低字節(jié)低字節(jié)55H55H單元單元低字節(jié)低字節(jié)52H52H單元單元低字節(jié)低字節(jié)23H23H單元單元進(jìn)位位進(jìn)
36、位位 被加數(shù)被加數(shù) N1 N1 高字節(jié)(高字節(jié)(8 8位)位)中字節(jié)(中字節(jié)(8 8位)位)低字節(jié)(低字節(jié)(8 8位)位)加數(shù)加數(shù) N2 N2 高字節(jié)(高字節(jié)(8 8位)位)中字節(jié)(中字節(jié)(8 8位)位)低字節(jié)(低字節(jié)(8 8位)位)+)進(jìn)位位()進(jìn)位位(CYCY)進(jìn)位位(進(jìn)位位(CYCY)進(jìn)位位(進(jìn)位位(CYCY)和和 N3 N3 進(jìn)位進(jìn)位 高字節(jié)(高字節(jié)(8 8位)位)中字節(jié)(中字節(jié)(8 8位)位)低字節(jié)(低字節(jié)(8 8位)位)http:/ NY Y初初始始化化控控制制變變量量取取加加數(shù)數(shù)N N1 1取取加加數(shù)數(shù)N N2 2兩兩數(shù)數(shù)相相加加并并保保存存修修改改指指針針變變量量數(shù)數(shù)據(jù)據(jù)處處理
37、理返回返回程序流程框圖程序流程框圖http:/ ORG 0030H ORG 0030H ADDUDO ADDUDO:MOV R0MOV R0,#52H#52H;循環(huán)初始化部分循環(huán)初始化部分 MOV R1MOV R1,#55H#55H;MOV R7MOV R7,#03H#03H;循環(huán)次數(shù)循環(huán)次數(shù) CLR CCLR C;LOOPLOOP:MOV AMOV A,R0R0;循環(huán)體部分循環(huán)體部分 ADDC AADDC A,R1R1;MOV R0MOV R0,A A;DEC R0DEC R0;修改指針變量修改指針變量 DEC R1DEC R1;DJNZ R7DJNZ R7,LOOPLOOP;循環(huán)控制部分循
38、環(huán)控制部分 CLR ACLR A;循環(huán)結(jié)束處理部分循環(huán)結(jié)束處理部分 ADDC AADDC A,#00H#00H;MOV R0MOV R0,#23H#23H;MOV R0MOV R0,A A;RETRET;END END 程序清單程序清單http:/ 80C514.3 80C51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)舉例單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)舉例4.3.2 4.3.2 定時(shí)程序定時(shí)程序 在單片機(jī)的控制應(yīng)用中,常有定時(shí)的需要,如定時(shí)中斷、定在單片機(jī)的控制應(yīng)用中,常有定時(shí)的需要,如定時(shí)中斷、定時(shí)檢測(cè)和定時(shí)掃描等。定時(shí)功能除可以使用純硬件電路、可編程時(shí)檢測(cè)和定時(shí)掃描等。定時(shí)功能除可以使用純硬件電路、可編程定時(shí)定時(shí)/計(jì)
39、數(shù)器實(shí)現(xiàn)外,還可以使用軟件程序(計(jì)數(shù)器實(shí)現(xiàn)外,還可以使用軟件程序(定時(shí)程序定時(shí)程序)完成。)完成。定時(shí)程序是典型的循環(huán)程序,它是通過(guò)定時(shí)程序是典型的循環(huán)程序,它是通過(guò)執(zhí)行一個(gè)具有固定延執(zhí)行一個(gè)具有固定延遲時(shí)間的循環(huán)體遲時(shí)間的循環(huán)體來(lái)實(shí)現(xiàn)定時(shí)的。來(lái)實(shí)現(xiàn)定時(shí)的。開(kāi)開(kāi)始始初初始始化化部部分分結(jié)結(jié)束束循循環(huán)環(huán)控控制制部部分分N NY Y循循環(huán)環(huán)體體http:/ 1)單循環(huán)定時(shí)程序)單循環(huán)定時(shí)程序 MOV R5MOV R5,#TIME#TIME;LOOP:NOPLOOP:NOP;NOPNOP;DJNZ R5DJNZ R5,LOOPLOOP;假設(shè)假設(shè)單片機(jī)晶振頻單片機(jī)晶振頻率率f foscosc=6MHz
40、=6MHz,則一個(gè)機(jī)器周期為則一個(gè)機(jī)器周期為2s2s,NOPNOP、DJNZDJNZ指令分別是單、雙機(jī)器周期指令。指令分別是單、雙機(jī)器周期指令。定時(shí)程序的總延遲定時(shí)程序的總延遲時(shí)間是循環(huán)程序段延時(shí)時(shí)間的整數(shù)倍時(shí)間是循環(huán)程序段延時(shí)時(shí)間的整數(shù)倍,由于,由于R5R5是是8 8位寄存器,因位寄存器,因此,這個(gè)定時(shí)程序的最長(zhǎng)定時(shí)時(shí)間為:此,這個(gè)定時(shí)程序的最長(zhǎng)定時(shí)時(shí)間為:256256(2 28 8)8=20488=2048(ss)http:/ 2)較長(zhǎng)時(shí)間的定時(shí)程序)較長(zhǎng)時(shí)間的定時(shí)程序 (多重循環(huán)定時(shí)子程序)(多重循環(huán)定時(shí)子程序)TIMETIME:MOV R5MOV R5,#TTME1#TTME1;LOO
41、P2LOOP2:MOV R4MOV R4,#TEME2#TEME2;LOOP1LOOP1:NOPNOP;NOPNOP;DJNZ R4DJNZ R4,LOOP1LOOP1;DJNZ R5DJNZ R5,LOOP2LOOP2;RETRET;這個(gè)定時(shí)子程序的最長(zhǎng)定時(shí)時(shí)間為:這個(gè)定時(shí)子程序的最長(zhǎng)定時(shí)時(shí)間為:256256(2828)4+2+14+2+1256256(2828)2+4=5258282+4=525828(ss)開(kāi)開(kāi)始始外外循循環(huán)環(huán)初初始始化化結(jié)結(jié)束束內(nèi)內(nèi)循循環(huán)環(huán)控控制制N NY Y內(nèi)內(nèi)循循環(huán)環(huán)初初始始化化外外循循環(huán)環(huán)控控制制內(nèi)內(nèi)循循環(huán)環(huán)體體N NY Yhttp:/ 3)調(diào)整定時(shí)時(shí)間)調(diào)整定時(shí)
42、時(shí)間 在定時(shí)程序中可通過(guò)在定時(shí)程序中可通過(guò)在循環(huán)程序段中增減指令在循環(huán)程序段中增減指令的方法對(duì)定的方法對(duì)定時(shí)時(shí)間進(jìn)行微調(diào)。時(shí)時(shí)間進(jìn)行微調(diào)。例:例:MOV R0MOV R0,#TTME#TTME;LOOPLOOP:ADD AADD A,R1R1;INC DPTRINC DPTR;DJNZ R0DJNZ R0,LOOPLOOP;由于由于ADDADD、INCINC、DJNZDJNZ指令的機(jī)器周期分別為指令的機(jī)器周期分別為1 1、2 2、2 2,所以,所以,該程序定時(shí)時(shí)間為該程序定時(shí)時(shí)間為=(1+2+21+2+2)2s2sTimeTime(ss)。http:/ R0MOV R0,#TIME#TIME;
43、LOOPLOOP:ADD AADD A,R1R1;INC DPTRINC DPTR;NOPNOP;DJNZ R0DJNZ R0,LOOPLOOP;只須只須TIMETIME取取2 2,即可得到精確的,即可得到精確的24s24s定時(shí)。定時(shí)。http:/ 4)以一個(gè)基本的延時(shí)程序滿(mǎn)足不同的定時(shí)要求以一個(gè)基本的延時(shí)程序滿(mǎn)足不同的定時(shí)要求 如果一個(gè)系統(tǒng)有多個(gè)定時(shí)需要,我們就可以設(shè)計(jì)一個(gè)基如果一個(gè)系統(tǒng)有多個(gè)定時(shí)需要,我們就可以設(shè)計(jì)一個(gè)基本延時(shí)程序,使其延時(shí)時(shí)間為各定時(shí)時(shí)間的最大公約數(shù),然本延時(shí)程序,使其延時(shí)時(shí)間為各定時(shí)時(shí)間的最大公約數(shù),然后可以以此基本程序作為子程序,通過(guò)調(diào)用的方法實(shí)現(xiàn)所需后可以以此基本程
44、序作為子程序,通過(guò)調(diào)用的方法實(shí)現(xiàn)所需不同定時(shí)。不同定時(shí)。http:/ MOV R0 MOV R0,#05H#05H;5S5S定時(shí)定時(shí)LOOP:LCALL DELAYLOOP:LCALL DELAY;DJNZ R0DJNZ R0,LOOP1LOOP1;MOV R0MOV R0,#0AH#0AH;10S10S定時(shí)定時(shí)LOOP2:LCALL DELAYLOOP2:LCALL DELAY;DJNZ R0DJNZ R0,LOOP2LOOP2;MOV R0MOV R0,#14H#14H;20S20S定時(shí)定時(shí)LOOP3:LCALL DELAYLOOP3:LCALL DELAY;DJNZ R0DJNZ R0,
45、LOOP3LOOP3;例:在單片機(jī)應(yīng)用系統(tǒng)中,假設(shè)需要的定時(shí)時(shí)間分別為例:在單片機(jī)應(yīng)用系統(tǒng)中,假設(shè)需要的定時(shí)時(shí)間分別為5S、10S、20S,可設(shè)計(jì)一個(gè),可設(shè)計(jì)一個(gè)1S延時(shí)子程序延時(shí)子程序DELAY,則,則5S、10S、20S的定時(shí)時(shí)間可通過(guò)調(diào)用的定時(shí)時(shí)間可通過(guò)調(diào)用DELAY實(shí)現(xiàn)。實(shí)現(xiàn)。http:/ 4.3.3 4.3.3 查表程序查表程序 所謂所謂查表程序,就是指預(yù)先把數(shù)據(jù)以表格形式存放在程查表程序,就是指預(yù)先把數(shù)據(jù)以表格形式存放在程序存儲(chǔ)器中,然后使用程序讀出,這種能讀出表格數(shù)據(jù)的程序存儲(chǔ)器中,然后使用程序讀出,這種能讀出表格數(shù)據(jù)的程序序就稱(chēng)之為查表程序。就稱(chēng)之為查表程序。查表操作對(duì)單片機(jī)的
46、控制應(yīng)用十分重要,查表程序查表操作對(duì)單片機(jī)的控制應(yīng)用十分重要,查表程序常用常用于實(shí)現(xiàn)于實(shí)現(xiàn)非線(xiàn)性修正,非線(xiàn)性函數(shù)轉(zhuǎn)換以及代碼轉(zhuǎn)換非線(xiàn)性修正,非線(xiàn)性函數(shù)轉(zhuǎn)換以及代碼轉(zhuǎn)換等等場(chǎng)合。場(chǎng)合。http:/ 1)MOVC AMOVC A,A+A+DPTRDPTR;AA(A A)+(DPTRDPTR)(2 2)MOVC AMOVC A,A+A+PCPC;AA(A A)+(PCPC)這兩條這兩條查表指令查表指令的功能是完全相同的,其的功能是完全相同的,其共同優(yōu)點(diǎn)共同優(yōu)點(diǎn)是:能在是:能在不改變不改變PCPC和和DPTRDPTR的狀態(tài)下,只根據(jù)的狀態(tài)下,只根據(jù)A A的內(nèi)容就可以取出表格中的的內(nèi)容就可以取出表格中的
47、數(shù)據(jù)。注意:數(shù)據(jù)。注意:A A的內(nèi)容均為的內(nèi)容均為8 8位無(wú)符號(hào)數(shù)。位無(wú)符號(hào)數(shù)。適用于適用于64KB ROM64KB ROM范圍內(nèi)范圍內(nèi)查表,一個(gè)數(shù)據(jù)表格可以查表,一個(gè)數(shù)據(jù)表格可以被被多個(gè)多個(gè)程序塊使用。程序塊使用。編寫(xiě)查表程序時(shí),首先把表的首地址送入編寫(xiě)查表程序時(shí),首先把表的首地址送入DPTRDPTR中,再將中,再將要查表的數(shù)據(jù)序號(hào)(或下標(biāo)值)送入要查表的數(shù)據(jù)序號(hào)(或下標(biāo)值)送入A A中,然后就可以使中,然后就可以使用該指令進(jìn)行查表操作,并把結(jié)果送用該指令進(jìn)行查表操作,并把結(jié)果送A A中。中。常用于常用于“本地本地”范圍范圍查表(數(shù)據(jù)表格只能放在該指令后查表(數(shù)據(jù)表格只能放在該指令后面面25
48、6256個(gè)地址單元之內(nèi),而且表格只能被本程序使用)。個(gè)地址單元之內(nèi),而且表格只能被本程序使用)。編寫(xiě)查表程序時(shí),首先把查表數(shù)據(jù)的序號(hào)送入編寫(xiě)查表程序時(shí),首先把查表數(shù)據(jù)的序號(hào)送入A A中,再中,再把從查表指令的下一條指令的首地址到表的首地址間的把從查表指令的下一條指令的首地址到表的首地址間的偏移量與偏移量與A A值相加,然后再使用該指令進(jìn)行查表操作,值相加,然后再使用該指令進(jìn)行查表操作,并把結(jié)果送入并把結(jié)果送入A A中。中。http:/ ORG 1000H1000H SQR:MOV A,30H;Ax1002H PUSH DPH;現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù)1004H PUSH DPL;1006H MOV D
49、PTR,#TAB1;DPTR表首地址表首地址TAB1 1009H MOVC A,A+DPTR;查表得查表得y100AH MOV 40H,A;40Hy100CH POP DPL;現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù)100EH POP DPH;1010H RET1011H TAB1:DB 00H,01H,04H,09H,10H,19H DB 24H,31H,40H,51H例:設(shè)計(jì)一個(gè)子程序,其功能為根據(jù)例:設(shè)計(jì)一個(gè)子程序,其功能為根據(jù)x的內(nèi)容(的內(nèi)容(09之間)之間)查平方表,求出相應(yīng)的結(jié)果查平方表,求出相應(yīng)的結(jié)果y(y=x2)。假設(shè))。假設(shè)x的內(nèi)容已存的內(nèi)容已存放在內(nèi)部放在內(nèi)部RAM 30H單元中,求出單元中,求出
50、y的內(nèi)容存放在內(nèi)部的內(nèi)容存放在內(nèi)部RAM 40H單元中。單元中。http:/ A,A+PC指令指令,則則編程如下:編程如下:ORG 1000H1000H SQR:MOV A,30H;Ax1002H PUSH DPH;現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)保護(hù)1004H PUSH DPL;1006H ADD A,#07H;加偏移量加偏移量1008H MOVC A,A+PC;查表得查表得y1009H MOV 40H,A;40Hy100BH POP DPL;現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)恢復(fù)100DH POP DPH;100FH RET1010H TAB1:DB 00H,01H,04H,09H,10H,19H DB 24H,31H,40H,5
51、1H此題中,偏移量此題中,偏移量=1010H-1009H=07Hhttp:/ 單片機(jī)匯編語(yǔ)言源程序的編輯和匯編單片機(jī)匯編語(yǔ)言源程序的編輯和匯編http:/ 手工編程與匯編手工編程與匯編手工匯編手工匯編:先把程序用助記符指令寫(xiě)出,然后通過(guò)先把程序用助記符指令寫(xiě)出,然后通過(guò)查指令代碼表,逐個(gè)把助記符指令查指令代碼表,逐個(gè)把助記符指令“翻譯翻譯”成機(jī)成機(jī)器碼,最后再把機(jī)器碼的程序輸入單片機(jī),進(jìn)行器碼,最后再把機(jī)器碼的程序輸入單片機(jī),進(jìn)行調(diào)試和運(yùn)行。通常把這種調(diào)試和運(yùn)行。通常把這種查表翻譯指令查表翻譯指令的方法稱(chēng)的方法稱(chēng)為手工匯編。為手工匯編。由于手工編程是按絕對(duì)地址進(jìn)行定位的,所由于手工編程是按絕對(duì)
52、地址進(jìn)行定位的,所以手工匯編時(shí)要根據(jù)轉(zhuǎn)移的目標(biāo)地址計(jì)算轉(zhuǎn)移指以手工匯編時(shí)要根據(jù)轉(zhuǎn)移的目標(biāo)地址計(jì)算轉(zhuǎn)移指令的偏移量,不但令的偏移量,不但麻煩而且容易出錯(cuò)麻煩而且容易出錯(cuò)。http:/ 機(jī)器編輯與交叉匯編機(jī)器編輯與交叉匯編機(jī)器編輯:機(jī)器編輯:是指借助于微型機(jī)或開(kāi)發(fā)系統(tǒng)進(jìn)行單片機(jī)的程序設(shè)是指借助于微型機(jī)或開(kāi)發(fā)系統(tǒng)進(jìn)行單片機(jī)的程序設(shè)計(jì),通常都是使用編輯軟件進(jìn)行源程序的編輯。編輯完成計(jì),通常都是使用編輯軟件進(jìn)行源程序的編輯。編輯完成后,生成一個(gè)由匯編指令和偽指令構(gòu)成的擴(kuò)展名為后,生成一個(gè)由匯編指令和偽指令構(gòu)成的擴(kuò)展名為“.ASM.ASM”的的ASCIIASCII碼文件。碼文件。機(jī)器匯編:機(jī)器匯編:由計(jì)算
53、機(jī)完成從匯編語(yǔ)言源程序到機(jī)器語(yǔ)言目標(biāo)程由計(jì)算機(jī)完成從匯編語(yǔ)言源程序到機(jī)器語(yǔ)言目標(biāo)程序的序的“翻譯翻譯”工作。工作。交叉匯編:交叉匯編:是指使用一種計(jì)算機(jī)的匯編程序?yàn)榱硪环N計(jì)算機(jī)的是指使用一種計(jì)算機(jī)的匯編程序?yàn)榱硪环N計(jì)算機(jī)的源程序進(jìn)行匯編,即運(yùn)行匯編程序進(jìn)行匯編的是一種計(jì)算源程序進(jìn)行匯編,即運(yùn)行匯編程序進(jìn)行匯編的是一種計(jì)算機(jī),而匯編得到的目標(biāo)程序是另一種計(jì)算機(jī)的。機(jī),而匯編得到的目標(biāo)程序是另一種計(jì)算機(jī)的。單片機(jī)只能采用機(jī)器交叉匯編的方法對(duì)匯編語(yǔ)言程序進(jìn)行匯編單片機(jī)只能采用機(jī)器交叉匯編的方法對(duì)匯編語(yǔ)言程序進(jìn)行匯編http:/ 在微型機(jī)或開(kāi)發(fā)系統(tǒng)上采用交叉匯編方法對(duì)源程序進(jìn)行在微型機(jī)或開(kāi)發(fā)系統(tǒng)上采用
54、交叉匯編方法對(duì)源程序進(jìn)行匯編。交叉匯編后,再使用串行通信,把匯編得到的目標(biāo)程匯編。交叉匯編后,再使用串行通信,把匯編得到的目標(biāo)程序傳送到單片機(jī),進(jìn)行程序調(diào)試和運(yùn)行??梢?jiàn),序傳送到單片機(jī),進(jìn)行程序調(diào)試和運(yùn)行??梢?jiàn),“機(jī)器編輯機(jī)器編輯交叉匯編交叉匯編串行傳送串行傳送”的過(guò)程構(gòu)成了單片機(jī)軟件設(shè)計(jì)的的過(guò)程構(gòu)成了單片機(jī)軟件設(shè)計(jì)的“三步曲三步曲”,全過(guò)程如圖所示。,全過(guò)程如圖所示。單片機(jī)匯編語(yǔ)言程序生成過(guò)程單片機(jī)匯編語(yǔ)言程序生成過(guò)程 對(duì)匯編語(yǔ)言程序進(jìn)行機(jī)器交叉匯編時(shí),必須告訴計(jì)算機(jī)的匯對(duì)匯編語(yǔ)言程序進(jìn)行機(jī)器交叉匯編時(shí),必須告訴計(jì)算機(jī)的匯編程序應(yīng)該編程序應(yīng)該如何完成匯編工作如何完成匯編工作,這一任務(wù)就是通過(guò)
55、使用,這一任務(wù)就是通過(guò)使用偽指令偽指令來(lái)來(lái)實(shí)現(xiàn)的。實(shí)現(xiàn)的。http:/ 80C51單片機(jī)匯編語(yǔ)言偽指令單片機(jī)匯編語(yǔ)言偽指令http:/ ORG 地址地址 在匯編語(yǔ)言程序的開(kāi)始,通常都用一條在匯編語(yǔ)言程序的開(kāi)始,通常都用一條ORGORG偽指令來(lái)規(guī)定程偽指令來(lái)規(guī)定程序的起始地址,如果不用序的起始地址,如果不用ORGORG規(guī)定,則匯編得到的目標(biāo)程序?qū)囊?guī)定,則匯編得到的目標(biāo)程序?qū)?000H0000H開(kāi)始。開(kāi)始。選擇項(xiàng)選擇項(xiàng)通常為通常為16位絕對(duì)地址,但也位絕對(duì)地址,但也可以使用標(biāo)號(hào)或表達(dá)式表示可以使用標(biāo)號(hào)或表達(dá)式表示例:例:ORG 8000H START:MOV A,#00H;即規(guī)定標(biāo)號(hào)即規(guī)定標(biāo)號(hào)
56、START代表地址代表地址8000H,目標(biāo)程序的第一條指令從目標(biāo)程序的第一條指令從8000H開(kāi)始。開(kāi)始。http:/ of assemblyEND of assembly)n 該命令用于終止源程序的匯編工作。該命令用于終止源程序的匯編工作。ENDEND是匯編是匯編語(yǔ)言源程序的結(jié)束標(biāo)志,因此,在整個(gè)匯編語(yǔ)言源程語(yǔ)言源程序的結(jié)束標(biāo)志,因此,在整個(gè)匯編語(yǔ)言源程序中只能有一個(gè)序中只能有一個(gè)ENDEND指令,且位于程序的最后。如果指令,且位于程序的最后。如果ENDEND命令出現(xiàn)在程序中間,則在命令出現(xiàn)在程序中間,則在ENDEND之后的指令,匯編之后的指令,匯編程序?qū)⒉挥杼幚怼3绦驅(qū)⒉挥杼幚?。n 命令格式
57、為:命令格式為:END END 是選擇項(xiàng),只有主程序模塊才有;是選擇項(xiàng),只有主程序模塊才有;:也是選擇項(xiàng),當(dāng)源程序?yàn)橹鞒绦驎r(shí)才具有,其也是選擇項(xiàng),當(dāng)源程序?yàn)橹鞒绦驎r(shí)才具有,其值為主程序第一條指令的符號(hào)地址值為主程序第一條指令的符號(hào)地址http:/ 其中其中可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。其值為其值為8位或位或16位二進(jìn)制數(shù)。賦值以后的字符名稱(chēng)既可位二進(jìn)制數(shù)。賦值以后的字符名稱(chēng)既可以作地址使用,也可以作立即數(shù)使用。以作地址使用,也可以作立即數(shù)使用。例:例:HOUR EQU 30HHOUR EQU 30H ORG 1000H ORG 1000H START STAR
58、T:MOV HOURMOV HOUR,#40H#40H;等同于等同于 STARTSTART:MOV 30HMOV 30H,#40H#40H;http:/ ByteDefine Byte)定義數(shù)據(jù)字節(jié)命令)定義數(shù)據(jù)字節(jié)命令 本命令用于從指定的地址單元開(kāi)始,在程序存儲(chǔ)器的連續(xù)單本命令用于從指定的地址單元開(kāi)始,在程序存儲(chǔ)器的連續(xù)單元中定義字節(jié)數(shù)據(jù)。常使用本命令存放數(shù)據(jù)表格。元中定義字節(jié)數(shù)據(jù)。常使用本命令存放數(shù)據(jù)表格。命令格式:命令格式:標(biāo)號(hào):標(biāo)號(hào):DBDB8 8位數(shù)表位數(shù)表 例如:例如:DBDB“how are you?”“how are you?”DB DB-2,-4,-6,10,11,17-2,
59、-4,-6,10,11,17 例:存放例:存放7 7段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(0 0F F)的十六進(jìn)制數(shù)的字形代碼,可使用多條的十六進(jìn)制數(shù)的字形代碼,可使用多條DBDB命令定義。命令定義。DB 0C0HDB 0C0H,0F9H0F9H,0A4H0A4H,0B0H0B0H;0 0,1 1,2 2,3 3 DB 99H DB 99H,92H92H,82H82H,0F8H0F8H;4 4,5 5,6 6,7 7 DB 80H DB 80H,90H90H,88H88H,83H83H;8 8,9 9,A A,B B DB 0C6H DB 0C6H,0A1
60、H0A1H,86H86H,84H84H;C C,D D,E E,F(xiàn) Fhttp:/ a)根據(jù)根據(jù)DBDB命令前一條指令的地址確定。把該地址加上它的命令前一條指令的地址確定。把該地址加上它的字節(jié)數(shù)就是字節(jié)數(shù)就是DBDB的定義的數(shù)據(jù)字節(jié)的起始地址。的定義的數(shù)據(jù)字節(jié)的起始地址。例:例:8100:MOV A,#49H8100:MOV A,#49H;一字節(jié)指令;一字節(jié)指令 TAB:DB 0COHTAB:DB 0COH,0F9H0F9H,0A4H0A4H,0B0H0B0H;定義的定義的7 7段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(0 0F F)的十六進(jìn)制數(shù)的字形代碼的十
61、六進(jìn)制數(shù)的字形代碼從從8101H8101H地址地址單元單元開(kāi)始存放。開(kāi)始存放。http:/ b b)使用)使用0RG0RG命令專(zhuān)門(mén)規(guī)定。命令專(zhuān)門(mén)規(guī)定。例:例:ORG 8100H ORG 8100H TAB:DB 0COH TAB:DB 0COH,0F9H0F9H,0A4H0A4H,0B0H0B0H;定義的定義的7 7段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(段數(shù)碼管(共陽(yáng)極)顯示的十六進(jìn)制基數(shù)(0 0F F)的十六進(jìn)制數(shù)的字形代碼從的十六進(jìn)制數(shù)的字形代碼從8101H8101H地址單元開(kāi)始存放。地址單元開(kāi)始存放。http:/ Word)本命令用于從指定地址開(kāi)始,在程序存儲(chǔ)器單本命令用于從指定地址開(kāi)始
62、,在程序存儲(chǔ)器單元中定義元中定義16位的數(shù)據(jù)字。位的數(shù)據(jù)字。命令格式:命令格式:標(biāo)號(hào):標(biāo)號(hào):DW16位數(shù)表位數(shù)表 存放時(shí),數(shù)據(jù)字的高存放時(shí),數(shù)據(jù)字的高8位在前(低地址),低位在前(低地址),低8位在后(高地址)。位在后(高地址)。例如,例如,DW“AA”;存入存入41H,41HDW“A”;存入存入00H,41HDW“ABC”;不合法不合法,因超過(guò)兩字節(jié)因超過(guò)兩字節(jié)DW 100H,1ACH,-804;按順序存入按順序存入01H、00H、01H、0ACH、0FCH、0DCH DB DB和和DWDW定義的數(shù)表,數(shù)的個(gè)數(shù)不得超過(guò)定義的數(shù)表,數(shù)的個(gè)數(shù)不得超過(guò)8080個(gè)。如數(shù)個(gè)。如數(shù)據(jù)的數(shù)目較多時(shí),可使用
63、多個(gè)定義命令。據(jù)的數(shù)目較多時(shí),可使用多個(gè)定義命令。在在MCS-51MCS-51程序設(shè)計(jì)應(yīng)用中,常以程序設(shè)計(jì)應(yīng)用中,常以DBDB來(lái)定義數(shù)據(jù),以來(lái)定義數(shù)據(jù),以DWDW來(lái)定義地址。來(lái)定義地址。http:/ StonageDefine Stonage)該命令用于從指定地址開(kāi)始,在程序存儲(chǔ)器中保留指定數(shù)該命令用于從指定地址開(kāi)始,在程序存儲(chǔ)器中保留指定數(shù)目的單元作為預(yù)留存儲(chǔ)區(qū),供程序運(yùn)行使用。源程序匯編目的單元作為預(yù)留存儲(chǔ)區(qū),供程序運(yùn)行使用。源程序匯編時(shí),對(duì)預(yù)留單元不賦值。命令格式為:時(shí),對(duì)預(yù)留單元不賦值。命令格式為:標(biāo)號(hào):標(biāo)號(hào):DSDS1616位數(shù)表位數(shù)表例如:例如:ADDRTABL:DS 20ADDR
64、TABL:DS 20;從標(biāo)號(hào)從標(biāo)號(hào)ADDRTABLADDRTABL代表的地址開(kāi)始,預(yù)留代表的地址開(kāi)始,預(yù)留2020個(gè)個(gè)連續(xù)的地址單元連續(xù)的地址單元ORGORG 8100H 8100HDSDS 08H;08H;從從8100H8100H地址開(kāi)始,保留地址開(kāi)始,保留8 8個(gè)連續(xù)的地址單元個(gè)連續(xù)的地址單元http:/ BITBIT位地址位地址其中:位地址可以是絕對(duì)地址,也可以是符號(hào)地其中:位地址可以是絕對(duì)地址,也可以是符號(hào)地址(即位符號(hào)名稱(chēng))。址(即位符號(hào)名稱(chēng))。例:例:AQ BIT P1.0AQ BIT P1.0功能是把功能是把P1.0P1.0的位地址賦給變量的位地址賦給變量AQAQ,在其后的編程中
65、,在其后的編程中AQAQ就可以作為位地址使用就可以作為位地址使用http:/ 子程序結(jié)構(gòu)是一種非常重要的程序結(jié)構(gòu)。子程序結(jié)構(gòu)是一種非常重要的程序結(jié)構(gòu)。在一個(gè)程序中經(jīng)常遇到反復(fù)多次使用某程序段的情況,如在一個(gè)程序中經(jīng)常遇到反復(fù)多次使用某程序段的情況,如果重復(fù)書(shū)寫(xiě)這個(gè)程序段,會(huì)使程序變得冗長(zhǎng)而雜亂。對(duì)此,可果重復(fù)書(shū)寫(xiě)這個(gè)程序段,會(huì)使程序變得冗長(zhǎng)而雜亂。對(duì)此,可采用子程序結(jié)構(gòu),即采用子程序結(jié)構(gòu),即把重復(fù)的程序段編寫(xiě)為一個(gè)子程序,通過(guò)把重復(fù)的程序段編寫(xiě)為一個(gè)子程序,通過(guò)主程序調(diào)用而使用它主程序調(diào)用而使用它。這樣不但減少了編程工作量,而且也縮。這樣不但減少了編程工作量,而且也縮短了程序的長(zhǎng)度。短了程序的
66、長(zhǎng)度。調(diào)用調(diào)用和和返回返回構(gòu)成了構(gòu)成了子程序調(diào)用的完整過(guò)程子程序調(diào)用的完整過(guò)程。為了實(shí)現(xiàn)這一。為了實(shí)現(xiàn)這一過(guò)程,必須有子程序調(diào)用指令和返回指令。調(diào)用指令在主程序過(guò)程,必須有子程序調(diào)用指令和返回指令。調(diào)用指令在主程序中使用,而返回指令則應(yīng)該是子程序的最后一條指令。執(zhí)行完中使用,而返回指令則應(yīng)該是子程序的最后一條指令。執(zhí)行完這條指令后,程序返回主程序斷點(diǎn)處繼續(xù)執(zhí)行。這條指令后,程序返回主程序斷點(diǎn)處繼續(xù)執(zhí)行。http:/ (1 1)子程序的編程原則)子程序的編程原則 在實(shí)際的單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)中,為了程序結(jié)構(gòu)更加在實(shí)際的單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)中,為了程序結(jié)構(gòu)更加清晰,易于設(shè)計(jì),易于修改,增強(qiáng)程序可讀性,基本上都要使清晰,易于設(shè)計(jì),易于修改,增強(qiáng)程序可讀性,基本上都要使用子程序結(jié)構(gòu)。子程序作為一個(gè)具有獨(dú)立功能的程序段,編程用子程序結(jié)構(gòu)。子程序作為一個(gè)具有獨(dú)立功能的程序段,編程時(shí)需遵循以下原則:時(shí)需遵循以下原則:a a)子程序的第一條指令必須有標(biāo)號(hào),明確子程序入口地址;)子程序的第一條指令必須有標(biāo)號(hào),明確子程序入口地址;b b)以返回指令)以返回指令RETRET結(jié)束子程序;結(jié)束子程序;c c
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案