版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4 匯編語言程序設(shè)計(jì) 1 常用偽指令2 順序程序3 分支程序4 循環(huán)程序5 子程序機(jī)器語言:由機(jī)器語言:由0 0和和1 1組成的二進(jìn)制代碼組成的二進(jìn)制代碼表示表示匯編語言:用英文字符表示對(duì)應(yīng)的二匯編語言:用英文字符表示對(duì)應(yīng)的二進(jìn)制代碼進(jìn)制代碼計(jì)算機(jī)高級(jí)語言:用接近人們習(xí)慣的計(jì)算機(jī)高級(jí)語言:用接近人們習(xí)慣的自然語言和數(shù)學(xué)語言描述算法、過程和自然語言和數(shù)學(xué)語言描述算法、過程和對(duì)象。對(duì)象。源程序、匯編程序、目標(biāo)程序源程序、匯編程序、目標(biāo)程序 匯編語言語句:指令語句、偽指令語句、宏指令匯編語言語句:指令語句、偽指令語句、宏指令語句語句指令指令:每一個(gè)指令語句都在匯編時(shí)產(chǎn)生一個(gè)目標(biāo)代:每一個(gè)指令語句都在
2、匯編時(shí)產(chǎn)生一個(gè)目標(biāo)代碼,對(duì)應(yīng)著機(jī)器的一種特定操作。碼,對(duì)應(yīng)著機(jī)器的一種特定操作?!纠浚篗OV AMOV A,05H 05H ;其目標(biāo)代碼為;其目標(biāo)代碼為74H 74H 05H05H。偽指令偽指令:一種為匯編程序服務(wù)的說明語句,在匯編:一種為匯編程序服務(wù)的說明語句,在匯編時(shí)沒有目標(biāo)代碼與之對(duì)應(yīng),沒有對(duì)應(yīng)的機(jī)器操作。時(shí)沒有目標(biāo)代碼與之對(duì)應(yīng),沒有對(duì)應(yīng)的機(jī)器操作?!纠浚篛NE EQU 1 ONE EQU 1 ;其功能為定義;其功能為定義ONEONE的值為的值為1 1宏指令宏指令:用以代替匯編語言源程序中重復(fù)使用的程:用以代替匯編語言源程序中重復(fù)使用的程序段,由匯編程序在匯編時(shí)產(chǎn)生相應(yīng)的目標(biāo)代碼
3、。序段,由匯編程序在匯編時(shí)產(chǎn)生相應(yīng)的目標(biāo)代碼。指令格式指令格式指令語句的格式:指令語句的格式:標(biāo)號(hào)標(biāo)號(hào)( (名字名字) ): 助記符助記符( (操作碼操作碼) ) 操作數(shù)操作數(shù)( (參數(shù)參數(shù)) ) ;注釋注釋偽指令語句的格式:偽指令語句的格式:名字名字(:) (:) 定義符定義符 參數(shù)參數(shù) ;注釋;注釋4.1 常用偽指令1起始地址說明 格式:格式: ORG nnORG nn功能:規(guī)定程序段或數(shù)據(jù)塊存儲(chǔ)的起始地址。功能:規(guī)定程序段或數(shù)據(jù)塊存儲(chǔ)的起始地址。nnnn表表示示1616位地址。位地址。【例例】: ORG 1000HORG 1000HMAINMAIN:MOV DPTRMOV DPTR,#2
4、000H #2000H ORGORG偽指令規(guī)定了程序段偽指令規(guī)定了程序段MAINMAIN的起始地址為的起始地址為1000H1000H。2匯編結(jié)束說明格式:格式: END END 功能:指示源程序結(jié)束。功能:指示源程序結(jié)束。3賦值格式:格式: 字符名字符名 EQU EQU 數(shù)據(jù)或匯編符號(hào)數(shù)據(jù)或匯編符號(hào) 功能:將一個(gè)數(shù)功能:將一個(gè)數(shù)(8(8位或位或1616位位) )或匯編符號(hào)賦值給指定的字符名或匯編符號(hào)賦值給指定的字符名【例例】:ORG 0000H ORG 0000H CH1 EQU 50H CH1 EQU 50H CH2 EQU R4 CH2 EQU R4 MOV A MOV A,CHl CHl
5、 ;A(50H) , A(50H) , 相當(dāng)于相當(dāng)于MOV AMOV A,50H 50H MOV A MOV A,CH2 CH2 ; AR4, AR4, 相當(dāng)于相當(dāng)于MOV AMOV A,R4 R4 4定義字節(jié)格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DB nlDB nl,n2n2,nnnn功能:定義功能:定義8 8位數(shù)據(jù)塊的存放地址。位數(shù)據(jù)塊的存放地址?!纠浚?ORG 1000HORG 1000HMAINMAIN:MOV DPTRMOV DPTR,TAB TAB ;取表頭地址;取表頭地址 MOV AMOV A,R2 R2 ;R2R2中存放查表指針中存放查表指針 MOVC AMOVC A,A ADPTR
6、 DPTR ;從表中取出數(shù)據(jù)從表中取出數(shù)據(jù)TABTAB: DB 7FHDB 7FH,6FH6FH,77H77H,7CH7CH,39H39H,5EH5EH,79H79H,61H61H END END5定義字格式為:格式為: 標(biāo)號(hào):標(biāo)號(hào): DW nnl DW nnl,nn2nn2,nnNnnN功能:用于定義功能:用于定義1616位數(shù)據(jù)的存放地址。位數(shù)據(jù)的存放地址。6位地址賦值格式:字符名稱格式:字符名稱 BIT BIT 位地址位地址功能:把功能:把BITBIT右邊的位地址賦給左邊的字符名稱。右邊的位地址賦給左邊的字符名稱。【例例】:ORG 1000HORG 1000HL0 BIT P1.1 L0
7、BIT P1.1 Ll BIT 20HLl BIT 20H7定義存儲(chǔ)區(qū)格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DS XDS X功能:定義從標(biāo)號(hào)開始預(yù)留一定數(shù)量的內(nèi)存單元,以備功能:定義從標(biāo)號(hào)開始預(yù)留一定數(shù)量的內(nèi)存單元,以備源程序執(zhí)行過程中使用。預(yù)留單元的數(shù)量由源程序執(zhí)行過程中使用。預(yù)留單元的數(shù)量由X X決定。決定?!纠浚?ORG 1000H ORG 1000H CDSCDS: DS 08HDS 08HMAINMAIN:MOV DPTRMOV DPTR,1000H 1000H END END程序匯編到程序匯編到DSDS語句時(shí),從語句時(shí),從1000H1000H地址開始預(yù)留地址開始預(yù)留8 8個(gè)連續(xù)地址個(gè)連續(xù)
8、地址單元,后面內(nèi)容從單元,后面內(nèi)容從1008H1008H地址開始依次存放。地址開始依次存放。例程分析一例程分析一 設(shè)a存放在累加器A中,b存放在寄存器B中,若a0,Y=ab;若a0,則Y=ab。 例程分析一例程分析一 設(shè)a存放在累加器A中,b存放在寄存器B中,若a0,Y=ab;若a0,則Y=ab。 開始開始A A小于小于0 0嗎?嗎?A-BA-BA+BA+B結(jié)束結(jié)束 ORG 0000H JMP BR ORG 0100HBR: JB ACC.7,MINUS CLR C ;清進(jìn)位位清進(jìn)位位 SUBB A,B SJMP DONEMINUS:ADD A,B DONE: SJMP $ ;等待等待 END
9、 例程分析二例程分析二 ORG 0000HLJMP DELORG 0100HDEL: MOV R7,#125 DEL1:MOV R6,#200 ;內(nèi)循環(huán)次數(shù);內(nèi)循環(huán)次數(shù)DEL2:DJNZ R6,DEL2 ;內(nèi)循環(huán)時(shí)間;內(nèi)循環(huán)時(shí)間DJNZ R7,DEL1 ;外循環(huán)時(shí)間;外循環(huán)時(shí)間SJMP $ENDC51C51單片機(jī)軟件系統(tǒng)結(jié)構(gòu)單片機(jī)軟件系統(tǒng)結(jié)構(gòu)Project(可包含若干程序文件)C51(庫函數(shù))LIB(庫函數(shù))(頭文件)Keil C51(Vionsion3)Main(函數(shù))File_1(*.c)Func_k(函數(shù)).File_n(*.*)Func_1(函數(shù))Func_n(函數(shù)).用戶編程編譯系統(tǒng)
10、 程序由函數(shù)組成(一個(gè)主函數(shù),或一個(gè)主函數(shù)和若干自定義函數(shù)); 利用預(yù)處理命令對(duì)變量或函數(shù)進(jìn)行集中定義或說明; 函數(shù)和變量都需遵循先定義后使用的基本原則; 主函數(shù)中的所有語句執(zhí)行完畢,則程序結(jié)束。 單片機(jī)的單片機(jī)的C51語言語言程序結(jié)構(gòu)程序結(jié)構(gòu)C51與標(biāo)準(zhǔn)C程序結(jié)構(gòu)完全相同單片機(jī)的單片機(jī)的C51語言語言程序結(jié)構(gòu)程序結(jié)構(gòu)預(yù)處理命令-函數(shù)說明-全局變量定義- 主函數(shù)-調(diào)用函數(shù)-局部變量定義- 程序體 程序體-單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 在程序執(zhí)行過程中,數(shù)值可以發(fā)生改變的量稱為變量變量。 變量名與存儲(chǔ)單元地址相對(duì)應(yīng),變量值與存儲(chǔ)單元的內(nèi)容相對(duì)應(yīng)。例如在哈佛結(jié)構(gòu)的存儲(chǔ)空
11、間中如何建立變量概念?在哈佛結(jié)構(gòu)的存儲(chǔ)空間中如何建立變量概念? 單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名存儲(chǔ)地址存儲(chǔ)地址(標(biāo)準(zhǔn)C)作用范圍(作用范圍(標(biāo)準(zhǔn)C)* 方括號(hào)項(xiàng)可以缺省C51變量定義的四個(gè)要素:存儲(chǔ)空間存儲(chǔ)空間 (C51特有)數(shù)據(jù)格式數(shù)據(jù)格式(C51擴(kuò)充)單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 自動(dòng)變量自動(dòng)變量(auto)在函數(shù)內(nèi)部定義的變量,退出函數(shù)后,分配給該變量的存儲(chǔ)單元即自行消失(局部變量)?!敬鎯?chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名 外部變量(e
12、xtern)在函數(shù)外部定義的變量,可始終保持變量的數(shù)值(全局變量)。 【強(qiáng)調(diào)】一個(gè)外部變量只能被定義一次,在定義文件之外的地方使用時(shí)需用extern進(jìn)行聲明。 靜態(tài)變量(static)靜態(tài)局部變量/靜態(tài)全局變量 寄存器變量(register)以寄存器為存儲(chǔ)空間的變量* 若省略存儲(chǔ)種類選項(xiàng),則變量默認(rèn)為自動(dòng)變量 單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 舉例:自動(dòng)變量與外部變量的差異單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型 * 有符號(hào)數(shù)類型可以忽略signed標(biāo)識(shí)符標(biāo)準(zhǔn)C語言的數(shù)據(jù)類型【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型 【存儲(chǔ)類型存儲(chǔ)
13、類型】變量名變量名C51擴(kuò)充數(shù)據(jù)類型:擴(kuò)充數(shù)據(jù)類型:bit、sfr或或sfr16、sbit bit 型型用bit 定義一個(gè)位變量,語法規(guī)則如下:bit bit_name = 常數(shù)01;例如:bit door = 0 ; /定義一個(gè)叫door的變量且初值為0與標(biāo)準(zhǔn)C的變量定義及初始化用法是一致的,例如: int a = 5 ; unsigned char sum = 0 x10 ;單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) Sfr或或sfr16型型sfr定義特殊功能寄存器SFR,語法規(guī)則如下: sfr 或 sfr16 sfr_name = 字節(jié)地址常數(shù);單片機(jī)的單片機(jī)的C51語言語
14、言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 例如,sfr P0 = 0 x80; /定義P0口地址80Hsfr PCON = 0 x87; /定義PCON地址87H sfr16 DPTR=0 x82; /定義DPTR的低端地址82H單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) sbit型型將SFR范圍內(nèi)的位地址(0 x800 xFF)定義為位變量位變量序號(hào) 特殊功能寄存器名稱 符號(hào) 字節(jié)地址 位地址單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 1)sbit bit_name = 位地址常數(shù); 將位于SFR字節(jié)地址內(nèi)的絕對(duì)位地址定義為位變量名。 例如,sbit CY = 0 xD7;
15、序號(hào) 特殊功能寄存器名稱 符號(hào) 字節(jié)地址 位地址單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 2)sbit bit_name = sfr_name 位位置; 將已有定義的SFR的07位定義為位變量名。 例如: sfr PSW = 0 xD0; sbit CY = PSW7; 序號(hào) 特殊功能寄存器名稱 符號(hào) 字節(jié)地址 位地址單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 3)sbit bit_name = sfr字節(jié)地址 位位置; 將SFR字節(jié)地址的相對(duì)位地址定義為位變量名。 例如: sbit CY = 0 xD07; 序號(hào) 特殊功能寄存器名稱 符號(hào) 字節(jié)地址 位地址單片機(jī)
16、的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) C51編譯器在頭文件“reg51.h”中定義了全部sfr/sfr16和sbit變量。用一條預(yù)處理命令#include 把這個(gè)頭文件包含到C51程序中,無需重定義即可直接使用它們的名稱。單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 應(yīng)用舉例:?jiǎn)纹瑱C(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 51系列單片機(jī)有三個(gè)邏輯存儲(chǔ)空間:【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名片內(nèi)數(shù)據(jù)存儲(chǔ)器,片外數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器。單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 第4章單片機(jī)的單片機(jī)的C51語言語
17、言建立C51存儲(chǔ)類型存儲(chǔ)類型與存儲(chǔ)空間存儲(chǔ)空間的對(duì)應(yīng)關(guān)系data區(qū)xdata區(qū)code區(qū)bdata區(qū)C51的存儲(chǔ)類型與存儲(chǔ)空間對(duì)應(yīng)關(guān)系表 單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) C51編譯器指定了三種默認(rèn)存儲(chǔ)類型默認(rèn)存儲(chǔ)類型:【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名C51編譯器的三種編譯模式編譯模式:小編譯模式(SMALL)、緊湊編譯模式(COMPACT)和大編譯模式(LARGE)單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) 變量名可以由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線,變量名長度隨編譯系統(tǒng)而定。 變量名具
18、有字母大小寫的敏感性,如SUM和sum代表不同的變量。強(qiáng)調(diào):頭文件中定義的變量都是大寫的【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) C51擴(kuò)展的若干關(guān)鍵字一覽表 變量名不得使用標(biāo)準(zhǔn)C語言和C51語言的關(guān)鍵字。單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) unsigned char data system_status = 0; /定義system_status為無符號(hào)字符型自動(dòng)變量,該變量位于data區(qū)中且初值為0。 數(shù)據(jù)結(jié)構(gòu)定義舉例變量名為system_status位與片內(nèi)RAM區(qū)無符號(hào)字符型自動(dòng)型
19、初值為零單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) unsigned char bdata status_byte; unsigned int code unit_id2=0 x1234, 0 x89ab; static char m, n; /定義status_byte為無符號(hào)字符型自動(dòng)變量,該變量位于bdata區(qū)/定義unit_id2為無符號(hào)整型自動(dòng)變量,該變量位于code區(qū)中,是長度為2的數(shù)組,且初值為0 x1234和0 x89ab。/定義m和n為2個(gè)位于data區(qū)中的有符號(hào)字符型靜態(tài)變量。單片機(jī)的單片機(jī)的C51語言語言C51的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu) C51的指針與標(biāo)準(zhǔn)C的指針
20、幾乎是一樣的,都可以簡(jiǎn)單理解為“存儲(chǔ)地址的變量”,例如:C51的指針的指針 int *b = &a ; 取變量a的地址指針變量int a; /定義一個(gè)整型變量a/定義一個(gè)整型指針變量b,其初值為a的地址單片機(jī)的單片機(jī)的C51語言語言C51的指針的指針在C51里定義指針,還需要額外指明兩個(gè)問題: 1)指針變量自身位于哪個(gè)存儲(chǔ)區(qū)域; 2)該指針的值代表的是哪個(gè)存儲(chǔ)區(qū)域里的地址。以SMALL編譯模式(默認(rèn)data區(qū)存儲(chǔ)類型)為例:例1 char xdata a = A; /定義xdata區(qū)里的變量a,初值A(chǔ) char *ptr = &a;解:ptr是一個(gè)char型的指針變量,它本身位
21、于data存儲(chǔ)區(qū),它的初值是位于xdata區(qū)里變量a的地址。 【存儲(chǔ)種類存儲(chǔ)種類】數(shù)據(jù)類型數(shù)據(jù)類型【存儲(chǔ)類型存儲(chǔ)類型】變量名變量名單片機(jī)的單片機(jī)的C51語言語言C51的指針的指針解: unsigned char idata a = A;例例2 若ptr是一個(gè)unsigned char型指針變量,它本身位于idata存儲(chǔ)區(qū),它的初值是位于idata存儲(chǔ)區(qū)里的unsigned char型自動(dòng)變量a(初值為A )的地址。試據(jù)此完成相關(guān)變量的定義和初始化 。 unsigned char * idata ptr = &a;單片機(jī)的單片機(jī)的C51語言語言C51的指針的指針舉例:在兩個(gè)數(shù)據(jù)中選出較大
22、的數(shù)據(jù),并賦值給變量c。在在C51中調(diào)用匯編程序中調(diào)用匯編程序 單片機(jī)的單片機(jī)的C51語言語言混合編程混合編程 1)程序的尋址,main.c中調(diào)用的max函數(shù),如何與匯編文件中的相應(yīng)代碼對(duì)應(yīng)起來; 2)參數(shù)傳遞,main.c中傳遞給max()函數(shù)的參數(shù)a和b,存放在何處可使匯編程序能夠獲取到它們的值; 3)返回值傳遞,匯編語言計(jì)算得到的結(jié)果,存放在何處可使C語言程序能夠獲取到。C51程序中調(diào)用匯編語言,需要解決三個(gè)問題:?jiǎn)纹瑱C(jī)的單片機(jī)的C51語言語言混合編程混合編程 1)程序的尋址問題 通過在匯編文件中定義同名的“函數(shù)”來實(shí)現(xiàn)。 單片機(jī)的單片機(jī)的C51語言語言混合編程混合編程 2)參數(shù)傳遞問題
23、 單片機(jī)的單片機(jī)的C51語言語言混合編程混合編程 3)返回值傳遞問題單片機(jī)的單片機(jī)的C51語言語言混合編程混合編程 C51中嵌入?yún)R編代碼中嵌入?yún)R編代碼 在C51 函數(shù)內(nèi)嵌入?yún)R編代碼,可以有三種不同方法。方法一方法一 直接在函數(shù)體內(nèi)的每個(gè)匯編語句前加“asm”預(yù)編譯指令,例如:?jiǎn)纹瑱C(jī)的單片機(jī)的C51語言語言混合編程混合編程方法二方法二 把a(bǔ)sm 作為關(guān)鍵字后續(xù)匯編用大括號(hào)括起來即可,例如:?jiǎn)纹瑱C(jī)的單片機(jī)的C51語言語言混合編程混合編程方法三方法三在C 模塊內(nèi)通過語句“ # pragma”嵌入?yún)R編代碼,例如:?jiǎn)纹瑱C(jī)的單片機(jī)的C51語言語言混合編程混合編程4.2 4.2 順序程序設(shè)計(jì)順序程序設(shè)計(jì)順序
24、結(jié)構(gòu):按指令的物理先后順序執(zhí)行順序結(jié)構(gòu):按指令的物理先后順序執(zhí)行正確選擇指令、尋址方式,合理使用工作寄存器、數(shù)正確選擇指令、尋址方式,合理使用工作寄存器、數(shù)據(jù)存儲(chǔ)單元據(jù)存儲(chǔ)單元避免用順序結(jié)構(gòu)實(shí)現(xiàn)大量重復(fù)操作。避免用順序結(jié)構(gòu)實(shí)現(xiàn)大量重復(fù)操作。 程序初始化程序初始化【例例】將將R0-R3R0-R3,P1P1,30H30H,40H40H單元初始化為單元初始化為00H00H,把,把R4R4,R5R5初始化為初始化為0FFH0FFH。參考程序如下:參考程序如下: ORG 0000H ORG 0000H ;PC;PC起始地址起始地址 LJMP STARTLJMP START;轉(zhuǎn)主程序;轉(zhuǎn)主程序 ORG 0
25、100HORG 0100H ;主程序起始地址;主程序起始地址STARTSTART:MOV R0MOV R0,#00H#00H ;初始化;初始化 MOV R1MOV R1,#00H#00H MOV R2 MOV R2,#00H#00H MOV R3 MOV R3,#00H#00H MOV P1 MOV P1,#00H#00H MOV R4MOV R4,#0FFH#0FFH MOV R5 MOV R5,#0FFH#0FFH MOV 30H MOV 30H,#00H#00H MOV 40H MOV 40H,#00H#00HHEREHERE:SJMP HERESJMP HERE;反復(fù)執(zhí)行該指令,相當(dāng)于
26、等待;反復(fù)執(zhí)行該指令,相當(dāng)于等待 ENDEND用立即數(shù)比較直觀,但用用立即數(shù)比較直觀,但用MOV AMOV A,#00H #00H ,MOV R0, A MOV R0, A 指令賦值,效果更好。指令賦值,效果更好。4.3 4.3 分支程序設(shè)計(jì)分支程序設(shè)計(jì)主要特點(diǎn):程序包含有主要特點(diǎn):程序包含有判斷環(huán)節(jié)判斷環(huán)節(jié)編程的關(guān)鍵:合理選用邏輯判斷指令編程的關(guān)鍵:合理選用邏輯判斷指令注意:避免犯邏輯錯(cuò)誤注意:避免犯邏輯錯(cuò)誤1單分支選擇結(jié)構(gòu)當(dāng)程序的判斷是二選一時(shí),稱為單分支選擇結(jié)構(gòu)。通常用條當(dāng)程序的判斷是二選一時(shí),稱為單分支選擇結(jié)構(gòu)。通常用條件轉(zhuǎn)移指令實(shí)現(xiàn)判斷及轉(zhuǎn)移。單分支選擇結(jié)構(gòu)有三種典型表件轉(zhuǎn)移指令實(shí)現(xiàn)
27、判斷及轉(zhuǎn)移。單分支選擇結(jié)構(gòu)有三種典型表現(xiàn)形式?,F(xiàn)形式。單分支選擇結(jié)構(gòu)【例例】設(shè)設(shè)a a存放在累加器存放在累加器A A中,中,b b存放在寄存器存放在寄存器B B中,若中,若a0a0,Y=aY=ab b;若;若a0a0,則,則Y=aY=ab b。 這里的關(guān)鍵是判這里的關(guān)鍵是判a a是正數(shù),還是負(fù)數(shù);可通過判斷是正數(shù),還是負(fù)數(shù);可通過判斷ACC.7ACC.7確定。確定。ORG 0000HORG 0000HJMP BRJMP BRORG 0100HORG 0100HBRBR: JB ACC.7JB ACC.7,MINUSMINUS;負(fù)數(shù),轉(zhuǎn)到;負(fù)數(shù),轉(zhuǎn)到MINUSMINUSCLR C CLR C ;
28、清進(jìn)位位;清進(jìn)位位SUBB ASUBB A,B B;A-BA-BSJMP DONESJMP DONEMINUSMINUS:ADD AADD A,B B;A+BA+BDONEDONE:SJMP $SJMP $;等待;等待 END END 【例例】設(shè)設(shè)a a存放在累加器存放在累加器A A中,中,b b存放在寄存器存放在寄存器B B中,若中,若a0a0,Y=aY=ab b;若;若a0a0,則,則Y=aY=ab b。 #include /#include /預(yù)處理命令,定義預(yù)處理命令,定義SFRSFR的頭文件的頭文件void delay1ms(int x)void delay1ms(int x) /
29、/ 延時(shí)函數(shù)延時(shí)函數(shù) int i,j; int i,j; / / 聲明整數(shù)變數(shù)聲明整數(shù)變數(shù)i,ji,j for (i=0;ix;i+) for (i=0;ix;i+) / / 計(jì)數(shù)計(jì)數(shù)x x次次, ,延遲延遲xmsxms for (j=0;j120;j+); for (j=0;j120;j+); / / 計(jì)數(shù)計(jì)數(shù)120120次,延遲次,延遲1ms1ms main()main() / /主函數(shù)主函數(shù) int x,y,z; int x,y,z; / /聲明變數(shù)聲明變數(shù)i,j,scan,ti,j,scan,t x=30;y=10; x=30;y=10;/ /給給x x和和y y賦值賦值 if(x0)
30、if(x0)/ /如果如果x0,z=x+yx0,Z=x-yx0,Z=x-y; P2=z;P2=z; delay1ms(5); / delay1ms(5); /調(diào)用延時(shí)調(diào)用延時(shí) 2多分支選擇結(jié)構(gòu)當(dāng)程序的判別輸出有兩個(gè)以上的出口流向時(shí),稱為多分支選當(dāng)程序的判別輸出有兩個(gè)以上的出口流向時(shí),稱為多分支選擇結(jié)構(gòu)。擇結(jié)構(gòu)。80518051的多分支結(jié)構(gòu)程序還允許嵌套,即分支程序中的多分支結(jié)構(gòu)程序還允許嵌套,即分支程序中又有另一個(gè)分支程序。多分支選擇結(jié)構(gòu)通常有兩種形式又有另一個(gè)分支程序。多分支選擇結(jié)構(gòu)通常有兩種形式多分支選擇結(jié)構(gòu)80518051的散轉(zhuǎn)指令和比較指令均可以實(shí)現(xiàn)多分支轉(zhuǎn)移。的散轉(zhuǎn)指令和比較指令均可
31、以實(shí)現(xiàn)多分支轉(zhuǎn)移。散轉(zhuǎn)指令散轉(zhuǎn)指令 JMP A+DPTR JMP A+DPTR 比較指令比較指令 ( (共有共有4 4條條) )CJNE ACJNE A,directdirect,rel rel ;A A內(nèi)容與直接尋址單元內(nèi)容比較,不等轉(zhuǎn)移內(nèi)容與直接尋址單元內(nèi)容比較,不等轉(zhuǎn)移CJNE ACJNE A,#data#data,rel rel ;A A內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移CJNE RnCJNE Rn,#data#data,rel rel ;寄存器內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移寄存器內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移CJNE RiCJNE Ri,#data#data,rel rel
32、 ;間址單元內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移間址單元內(nèi)容與立即數(shù)比較,不等轉(zhuǎn)移【例例】散轉(zhuǎn)程序。編寫程序,根據(jù)散轉(zhuǎn)程序。編寫程序,根據(jù)20H20H單元中的內(nèi)容轉(zhuǎn)入相單元中的內(nèi)容轉(zhuǎn)入相應(yīng)的分支,執(zhí)行指定的操作,將結(jié)果存入指定存儲(chǔ)器單元。應(yīng)的分支,執(zhí)行指定的操作,將結(jié)果存入指定存儲(chǔ)器單元。程序流程框圖如圖程序流程框圖如圖4-54-5所示所示散轉(zhuǎn)程序流程參考程序參考程序ORG 0000HORG 0000H LJMP MEMS LJMP MEMS RESULT EQU 0050H RESULT EQU 0050H ORG 0100H ORG 0100HMEMSMEMS:MOV AMOV A,20H20H M
33、OV DPTR MOV DPTR,#KKKK #KKKK ;散轉(zhuǎn)程序入口地址表首址;散轉(zhuǎn)程序入口地址表首址 RL A RL A ;分支號(hào)乘;分支號(hào)乘2 2,每個(gè)入口地址均為,每個(gè)入口地址均為2 2字節(jié)字節(jié) JMP A+DPTR JMP A+DPTR ;轉(zhuǎn)移;轉(zhuǎn)移END1END1: SJMP $SJMP $KKKKKKKK:AJMP MEMSP0 AJMP MEMSP0 ;A=0A=0加法加法 AJMP MEMSP1 AJMP MEMSP1 ;A=1A=1減法減法 AJMP MEMSP2 AJMP MEMSP2 ;A=2A=2乘法乘法 SJMP MEMSP3 SJMP MEMSP3 ;A=3A=
34、3除法除法 SJMP MEMSP4 SJMP MEMSP4 ;A=4A=4邏輯與邏輯與 SJMP MEMSP5 SJMP MEMSP5 ;A=5A=5邏輯或邏輯或MEMSP0MEMSP0:MOV AMOV A,R0 R0 ;相加分支;相加分支 CLR CCLR C ADD A ADD A,R1R1 MOV RESULT MOV RESULT,A A LJMP END1 LJMP END1MEMSP1MEMSP1:MOV AMOV A,R0 R0 ;相減分支;相減分支 CLR CCLR C SUBB A, R1 SUBB A, R1 MOV RESULT MOV RESULT,A A LJMP
35、END1 LJMP END1MEMSP2MEMSP2:MOV AMOV A,R0 R0 ;乘法分支;乘法分支 MOV BMOV B,R1R1 CLR C CLR C MUL AB MUL AB MOV RESULT MOV RESULT,A A MOV RESULT+1 MOV RESULT+1,B B LJMP END1 LJMP END1MEMSP3MEMSP3:MOV AMOV A,R0 R0 ;除法分支;除法分支 MOV BMOV B,R1R1 CLR C CLR C DIV AB DIV AB MOV RESULT MOV RESULT,A A MOV RESULT+1 MOV RE
36、SULT+1,B B LJMP END1 LJMP END1MEMSP4MEMSP4:MOV AMOV A,R0 R0 ;邏輯與分支;邏輯與分支 ANL AANL A,R1R1 MOV RESULT MOV RESULT,A A LJMP END1 LJMP END1MEMSP5MEMSP5:MOV AMOV A,R0R0 ;邏輯或分支;邏輯或分支 ORL AORL A,R1R1 MOV RESULT MOV RESULT,A A LJMP END1 LJMP END1 END END【例例】 兩個(gè)無符號(hào)數(shù)比較大小。設(shè)外部兩個(gè)無符號(hào)數(shù)比較大小。設(shè)外部RAMRAM單元單元 addr1addr1和
37、和addr2addr2中存放兩個(gè)無符號(hào)二進(jìn)制數(shù),要找出其中的大數(shù)存入中存放兩個(gè)無符號(hào)二進(jìn)制數(shù),要找出其中的大數(shù)存入addr3addr3單元中。程序流程框圖如圖單元中。程序流程框圖如圖4-64-6所示。所示。求大數(shù)程序流程參考程序如下:參考程序如下: ORG 0000HORG 0000H LJMP START LJMP START ORG 0100H ORG 0100HSTARTSTART:MOV AMOV A,addr1 addr1 ;將;將addr1addr1中內(nèi)容送中內(nèi)容送A A CJNE A CJNE A,addr2addr2,LOOP1 LOOP1 ;兩數(shù)比較,不相等;兩數(shù)比較,不相等
38、則則 MOV addr3, AMOV addr3, A 轉(zhuǎn)轉(zhuǎn)LOOP1LOOP1LOOP3LOOP3:AJMP $ AJMP $ ;結(jié)束;結(jié)束LOOP1LOOP1:JC LOOP2 JC LOOP2 ;當(dāng);當(dāng)CYCY1 1,轉(zhuǎn),轉(zhuǎn)LOOP2 LOOP2 MOV addr3 MOV addr3,A A ;CYCY0 0,(A)(A)(addr2)(addr2) SJMP LOOP3 SJMP LOOP3 ;轉(zhuǎn)結(jié)束;轉(zhuǎn)結(jié)束 LOOP2LOOP2:MOV addr3MOV addr3,addr2 addr2 ;CYCY1 1,(addr2)(addr2)(A)(A) SJMP LOOP3 SJMP
39、LOOP3 END END4.44.4循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)需要多次重復(fù)執(zhí)行的程序段可設(shè)計(jì)成循環(huán)結(jié)構(gòu),這需要多次重復(fù)執(zhí)行的程序段可設(shè)計(jì)成循環(huán)結(jié)構(gòu),這有助于節(jié)省程序的存儲(chǔ)空間,提高程序的質(zhì)量。有助于節(jié)省程序的存儲(chǔ)空間,提高程序的質(zhì)量。循環(huán)程序一般由循環(huán)程序一般由4 4部分組成。部分組成。1. 1. 初始化。即設(shè)置循環(huán)過程中有關(guān)工作單元的初始初始化。即設(shè)置循環(huán)過程中有關(guān)工作單元的初始值,如置循環(huán)次數(shù)、地址指針及工作單元清零等。值,如置循環(huán)次數(shù)、地址指針及工作單元清零等。2. 2. 循環(huán)體。即循環(huán)處理部分,完成主要的計(jì)算或操循環(huán)體。即循環(huán)處理部分,完成主要的計(jì)算或操作任務(wù),是重復(fù)執(zhí)行的程序段。作任
40、務(wù),是重復(fù)執(zhí)行的程序段。 3. 3. 循環(huán)控制。每循環(huán)一次,就要修改循環(huán)次數(shù)、數(shù)循環(huán)控制。每循環(huán)一次,就要修改循環(huán)次數(shù)、數(shù)據(jù)及地址指針等循環(huán)變量。并根據(jù)循環(huán)結(jié)束條件,據(jù)及地址指針等循環(huán)變量。并根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。判斷是否結(jié)束循環(huán)。 4. 4. 循環(huán)結(jié)束處理。對(duì)結(jié)果進(jìn)行分析、處理、保存。循環(huán)結(jié)束處理。對(duì)結(jié)果進(jìn)行分析、處理、保存。 循環(huán)程序結(jié)構(gòu)有兩種,如圖循環(huán)程序結(jié)構(gòu)有兩種,如圖4-74-7所示所示。 循環(huán)程序結(jié)構(gòu)【例例】50 ms50 ms軟件延時(shí)程序。軟件延時(shí)程序一般都是由軟件延時(shí)程序。軟件延時(shí)程序一般都是由DJNZ RnDJNZ Rn,relrel指令構(gòu)成。執(zhí)行一條指令構(gòu)成。
41、執(zhí)行一條DJNZDJNZ指令需要兩個(gè)機(jī)指令需要兩個(gè)機(jī)器周期。軟件延時(shí)程序的延時(shí)時(shí)間主要與機(jī)器周期和延時(shí)程器周期。軟件延時(shí)程序的延時(shí)時(shí)間主要與機(jī)器周期和延時(shí)程序中的循環(huán)次數(shù)有關(guān),在使用序中的循環(huán)次數(shù)有關(guān),在使用12 MHz12 MHz晶振時(shí),一個(gè)機(jī)器周晶振時(shí),一個(gè)機(jī)器周期為期為1s1s,執(zhí)行一條,執(zhí)行一條DJNZDJNZ指令需要兩個(gè)機(jī)器周期,即指令需要兩個(gè)機(jī)器周期,即2s2s。適當(dāng)設(shè)置循環(huán)次數(shù),即可實(shí)現(xiàn)延時(shí)功能。適當(dāng)設(shè)置循環(huán)次數(shù),即可實(shí)現(xiàn)延時(shí)功能。參考程序如下:參考程序如下:ORG 0000HORG 0000HLJMP DELLJMP DELORG 0100HORG 0100HDELDEL: M
42、OV R7MOV R7,#125 #125 ;外循環(huán)次數(shù),該指令為一個(gè)機(jī)器周期;外循環(huán)次數(shù),該指令為一個(gè)機(jī)器周期DEL1DEL1:MOV R6MOV R6,#200 #200 ;內(nèi)循環(huán)次數(shù);內(nèi)循環(huán)次數(shù)DEL2DEL2:DJNZ R6DJNZ R6,DEL2 DEL2 ;2002002 2400s (400s (內(nèi)循環(huán)時(shí)間內(nèi)循環(huán)時(shí)間) )DJNZ R7DJNZ R7,DEL1 DEL1 ;0.4 ms0.4 ms12512550 ms(50 ms(外循環(huán)時(shí)間外循環(huán)時(shí)間) )SJMP $SJMP $ENDEND【例例】排序程序排序程序設(shè)有設(shè)有NN個(gè)數(shù)存放在內(nèi)部個(gè)數(shù)存放在內(nèi)部RAMRAM以以LIST
43、LIST為首地址開始的為首地址開始的存儲(chǔ)區(qū)中,將存儲(chǔ)區(qū)中,將NN個(gè)數(shù)比較大小之后由小到大存放在原個(gè)數(shù)比較大小之后由小到大存放在原來的存儲(chǔ)區(qū)內(nèi)。來的存儲(chǔ)區(qū)內(nèi)。按按“冒泡法冒泡法”對(duì)對(duì)n n個(gè)數(shù)排序時(shí),可能用不到個(gè)數(shù)排序時(shí),可能用不到n-1n-1次循環(huán),排序就結(jié)束了。為了次循環(huán),排序就結(jié)束了。為了提高排序速度,程序中可設(shè)一交換標(biāo)志位,每次循環(huán)中,若有交換則設(shè)置該標(biāo)提高排序速度,程序中可設(shè)一交換標(biāo)志位,每次循環(huán)中,若有交換則設(shè)置該標(biāo)志,表明排序未完成;若無交換,則清除該標(biāo)志,表明排序已經(jīng)完成。每次循志,表明排序未完成;若無交換,則清除該標(biāo)志,表明排序已經(jīng)完成。每次循環(huán)結(jié)束時(shí),檢查標(biāo)志位,判斷排序是否
44、結(jié)束。環(huán)結(jié)束時(shí),檢查標(biāo)志位,判斷排序是否結(jié)束。ORG 0000H ;ORG 0000H ;整個(gè)程序起始地址整個(gè)程序起始地址 AJMP SXN ;AJMP SXN ;跳向主程序跳向主程序ORG 0030HORG 0030HSXN: MOV R2,#N-1 ;SXN: MOV R2,#N-1 ;數(shù)列個(gè)數(shù)數(shù)列個(gè)數(shù)-1-1LOOP1: MOV R0,#LISTLOOP1: MOV R0,#LIST MOV A,R2 MOV A,R2 ; ;外循環(huán)計(jì)數(shù)值外循環(huán)計(jì)數(shù)值 MOV R3,AMOV R3,A ; ;內(nèi)循環(huán)計(jì)數(shù)值內(nèi)循環(huán)計(jì)數(shù)值 MOV R1,#01MOV R1,#01 ; ;交換標(biāo)志置交換標(biāo)志置1
45、1LOOP2:MOV A,R0LOOP2:MOV A,R0 ; ;取數(shù)據(jù)取數(shù)據(jù) MOVMOVB,AB,A ; ;暫存暫存B B INC R0 INC R0; ;數(shù)列地址加數(shù)列地址加1 1 CLR C CLR C SUBB A,R0 SUBB A,R0 ; ;兩數(shù)比較兩數(shù)比較 JC LESSJC LESS ;XjXj+1 ;XjXj+1轉(zhuǎn)轉(zhuǎn)LESSLESS MOV MOVA,BA,B ; ;取大數(shù)取大數(shù) XCHXCHA,R0A,R0 ; ;兩數(shù)交換位置兩數(shù)交換位置 DEC R0DEC R0 MOV R0,A MOV R0,A INC R0 INC R0 ; ;恢復(fù)數(shù)據(jù)指針恢復(fù)數(shù)據(jù)指針 MOV R
46、1,#02 ;MOV R1,#02 ;置交換標(biāo)志為置交換標(biāo)志為2 2LESS: DJNZ R3,LOOP2 ;LESS: DJNZ R3,LOOP2 ;內(nèi)循環(huán)計(jì)數(shù)減內(nèi)循環(huán)計(jì)數(shù)減1 1,判一遍查完?,判一遍查完?DJNZ R2,LOOP3 ;DJNZ R2,LOOP3 ;外循環(huán)計(jì)數(shù)減外循環(huán)計(jì)數(shù)減1 1,判排序結(jié)束?,判排序結(jié)束?STOP:SJMP $STOP:SJMP $LOOP3: DJNZ R1,LOOP1 ;LOOP3: DJNZ R1,LOOP1 ;檢查標(biāo)志位檢查標(biāo)志位SJMP STOPSJMP STOPENDEND4.5 4.5 子程序設(shè)計(jì)子程序設(shè)計(jì)能夠完成一定功能、可以被其它程序調(diào)用
47、的程序段稱能夠完成一定功能、可以被其它程序調(diào)用的程序段稱為子程序。為子程序。子程序調(diào)用子程序調(diào)用: :ACALL addr11ACALL addr11、LCALL addr16LCALL addr16子程序返回:子程序返回:RETRET在編寫子程序時(shí)要注意以下幾點(diǎn):要給每個(gè)子程序賦一個(gè)名字明確入口參數(shù)、出口參數(shù)注意保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)2.子程序嵌套子程序中調(diào)用另一個(gè)子程序子程序中調(diào)用另一個(gè)子程序 子程序嵌套過程【例例】 求平方。用程序?qū)崿F(xiàn)求平方。用程序?qū)崿F(xiàn) C Ca a2 2b b2 2。設(shè)。設(shè)a a、b b均小于均小于1010,a a存在存在31H31H單元,單元,b b存在存在32H32H單元,把單元,把C C存入存入33H33H單元。單元。因本題兩次用到平方值,所以在程序中采用把求平方編為子程因本題兩次用到平方值,所以在程序中采用把求平方編為子程序的方法。序的方法。子程序名稱:子程序名稱:SQRSQR。功能:求功能:求X X2 2,通過查平方表來獲得。,通過查平方表來獲得。入口參數(shù):某數(shù)在入口參數(shù):某數(shù)在A A中。中。出口參數(shù):某數(shù)的平方在出口參數(shù):某數(shù)的平方在A A中。中。參考主程序和子程序如下:參考主程序和子程序如下:主程序:主程序:ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 0100H ORG 0100H MAINMAI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學(xué)反應(yīng)與能量變化說課稿
- 紅眼睛綠眼睛說課稿
- 肥胖癥的預(yù)防及其治療
- 電器廠采光井施工合同
- 寵物行業(yè)稅務(wù)管理
- 企業(yè)品牌宣傳租賃合同
- 電商推廣違約承諾書
- 化工原料出口招投標(biāo)實(shí)習(xí)報(bào)告
- 酒店會(huì)議室建設(shè)施工合同建筑膜
- 教育設(shè)施招投標(biāo)流程在線檢驗(yàn)
- 方太銷售及市場(chǎng)營銷管理現(xiàn)狀
- 蔬菜栽培的季節(jié)與茬口安排-隴東學(xué)院教學(xué)提綱
- 教研課平行四邊形和梯形的復(fù)習(xí)ppt
- 三年級(jí)《稻草人》閱讀測(cè)試試題附答案
- 《新聞學(xué)概論》第十章
- 超材料(metamaterials)教學(xué)講解課件
- S曲線和技術(shù)進(jìn)化法則TRIZ專題培訓(xùn)課件
- 小學(xué)數(shù)學(xué)北師大四年級(jí)上冊(cè)數(shù)學(xué)好玩 數(shù)圖形的學(xué)問 省一等獎(jiǎng)
- 運(yùn)算放大器知識(shí)介紹課件
- LIS檢驗(yàn)信息系統(tǒng)課件
- XRD結(jié)構(gòu)解析基礎(chǔ)課件
評(píng)論
0/150
提交評(píng)論