單片機(jī)教程PPT學(xué)習(xí)教案_第1頁
單片機(jī)教程PPT學(xué)習(xí)教案_第2頁
單片機(jī)教程PPT學(xué)習(xí)教案_第3頁
單片機(jī)教程PPT學(xué)習(xí)教案_第4頁
單片機(jī)教程PPT學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、會(huì)計(jì)學(xué)1單片機(jī)教程單片機(jī)教程22 第第4章章 目錄目錄4.1 匯編語言程序設(shè)計(jì)概述匯編語言程序設(shè)計(jì)概述 4.1.1 單片機(jī)編程語言 4.1.2 匯編語言語句和格式 4.1.3 偽指令4.2 匯編語言源程序的匯編匯編語言源程序的匯編 4.2.1 手工匯編 4.2.2 機(jī)器匯編第1頁/共74頁34.3 AT89S51匯編語言程序設(shè)計(jì)舉例匯編語言程序設(shè)計(jì)舉例 4.3.1 子程序的設(shè)計(jì) 4.3.2 查表程序設(shè)計(jì) 4.3.3 關(guān)鍵字查找程序設(shè)計(jì) 4.3.4 數(shù)據(jù)極值查找程序設(shè)計(jì) 4.3.5 數(shù)據(jù)排序程序設(shè)計(jì) 4.3.6 分支轉(zhuǎn)移程序設(shè)計(jì) 4.3.7 循環(huán)程序設(shè)計(jì)第2頁/共74頁4內(nèi)容概要內(nèi)容概要匯編語言

2、能匯編語言能直接控制單片機(jī)硬件直接控制單片機(jī)硬件的的編程語言編程語言。因此,要求程序設(shè)計(jì)者要因此,要求程序設(shè)計(jì)者要 “軟、硬結(jié)合軟、硬結(jié)合” 。本章介紹匯編語言程序設(shè)計(jì)的本章介紹匯編語言程序設(shè)計(jì)的基本知識(shí)基本知識(shí), ,以及一些以及一些基本的程序設(shè)計(jì)基本的程序設(shè)計(jì)。4.1 匯編語言程序設(shè)計(jì)概述匯編語言程序設(shè)計(jì)概述程序是指令的有序集合。程序是指令的有序集合。單片機(jī)運(yùn)行就是執(zhí)行指令序列的過程。單片機(jī)運(yùn)行就是執(zhí)行指令序列的過程。編寫這一指令序列的過程稱為編寫這一指令序列的過程稱為程序設(shè)計(jì)。程序設(shè)計(jì)。第3頁/共74頁5編寫的程序。編寫的程序。n“匯編匯編”:匯編語言源程序需匯編語言源程序需轉(zhuǎn)換(翻譯)轉(zhuǎn)

3、換(翻譯)成為二進(jìn)制代碼表成為二進(jìn)制代碼表示的機(jī)器語言程序,才能識(shí)別和示的機(jī)器語言程序,才能識(shí)別和執(zhí)行。執(zhí)行。n完成完成“翻譯翻譯”的程序稱為的程序稱為匯編匯編程序程序。經(jīng)匯編程序。經(jīng)匯編程序“匯編匯編”得到得到的以的以“0 0”、“1 1”代碼形式表示代碼形式表示的機(jī)器語言程序稱為的機(jī)器語言程序稱為目標(biāo)程序目標(biāo)程序。5第4頁/共74頁6通用性強(qiáng),直觀、易懂、易學(xué),可通用性強(qiáng),直觀、易懂、易學(xué),可讀性好。讀性好。n目前多數(shù)的目前多數(shù)的51單片機(jī)用戶單片機(jī)用戶使用使用C語語言(言(C51)來進(jìn)行程序設(shè)計(jì),已公來進(jìn)行程序設(shè)計(jì),已公認(rèn)為高級(jí)語言中高效簡潔而又貼近認(rèn)為高級(jí)語言中高效簡潔而又貼近51單片

4、機(jī)硬件的編程語言。單片機(jī)硬件的編程語言。n將將C語言向單片機(jī)上移植,始于語言向單片機(jī)上移植,始于20世紀(jì)世紀(jì)80年代的中后期。年代的中后期。6第5頁/共74頁7的場合,則更是非用匯編語言不的場合,則更是非用匯編語言不可。可。n掌握匯編語言并能進(jìn)行程序設(shè)計(jì),掌握匯編語言并能進(jìn)行程序設(shè)計(jì),是學(xué)習(xí)和掌握單片機(jī)程序設(shè)計(jì)的是學(xué)習(xí)和掌握單片機(jī)程序設(shè)計(jì)的基本功之一基本功之一。n4.1.2 4.1.2 匯編語言語句和格式匯編語言語句和格式n兩種基本語句:兩種基本語句:指令語句指令語句和和偽指偽指令語句令語句。7第6頁/共74頁8第7頁/共74頁9分界符是分界符是空格空格;n雙操作數(shù)雙操作數(shù)之間用之間用逗號(hào)逗號(hào)

5、相隔;相隔;n操作數(shù)字段操作數(shù)字段和和注釋字段注釋字段之間的之間的分界符用分界符用分號(hào)分號(hào)“;”。n任何語句都必須有操作碼字段任何語句都必須有操作碼字段,其余各段為任選項(xiàng)。其余各段為任選項(xiàng)。9標(biāo)號(hào)字段標(biāo)號(hào)字段(LABLE)操作碼字段操作碼字段(OPCODE)操作數(shù)字段操作數(shù)字段(OPRAND)注釋字段注釋字段(COMMENT)第8頁/共74頁10n上述上述4個(gè)字段應(yīng)該遵守的個(gè)字段應(yīng)該遵守的基本語基本語法規(guī)則法規(guī)則如下。如下。10第9頁/共74頁11次,不能重復(fù)定義。次,不能重復(fù)定義。n(4 4)不能使用匯編語言已經(jīng)定義的符號(hào)不能使用匯編語言已經(jīng)定義的符號(hào)作為標(biāo)號(hào),如指令助記符、偽指令以及寄作為

6、標(biāo)號(hào),如指令助記符、偽指令以及寄存器的符號(hào)名稱等。存器的符號(hào)名稱等。n(5 5)標(biāo)號(hào)的有無,取決于本程序中的其標(biāo)號(hào)的有無,取決于本程序中的其他語句是否訪他語句是否訪11第10頁/共74頁12第11頁/共74頁13需加需加后綴后綴“B B”n若操作數(shù)采用若操作數(shù)采用十進(jìn)制十進(jìn)制形式,則形式,則需加需加后綴后綴“D D”,也可省略。,也可省略。n若十六進(jìn)制若十六進(jìn)制操作數(shù)操作數(shù)以以字符字符A AF F開開頭頭,需在它,需在它前面加一個(gè)前面加一個(gè) “0 0”,以便匯編時(shí)把它和以便匯編時(shí)把它和字符字符A AF F區(qū)別區(qū)別開。開。13第12頁/共74頁14R0R0A AAccAcc另外,工作寄存器和特殊

7、功能寄另外,工作寄存器和特殊功能寄存器也可用其地址來表示,如累存器也可用其地址來表示,如累加器加器A A可用其地址可用其地址E0HE0H來表示。來表示。n4 4注釋字段注釋字段n用于解釋指令或程序的含義,用于解釋指令或程序的含義,對(duì)可讀性非常有用。對(duì)可讀性非常有用。n使用時(shí)使用時(shí)須以分號(hào)開頭須以分號(hào)開頭,長度,長度不限,一行寫不下不限,一行寫不下可換行可換行書寫,書寫,但注意也要以分號(hào)開頭。但注意也要以分號(hào)開頭。14第13頁/共74頁15n匯編語言指令,它匯編語言指令,它是程序員發(fā)給是程序員發(fā)給匯編程序的匯編程序的命令命令,也稱為,也稱為匯編程匯編程序控制命令序控制命令。n只有在匯編前的源程序

8、中才只有在匯編前的源程序中才有偽指令。有偽指令。 “偽偽”體現(xiàn)在體現(xiàn)在匯編后,匯編后,偽指令偽指令沒有相應(yīng)的機(jī)器代碼產(chǎn)生。沒有相應(yīng)的機(jī)器代碼產(chǎn)生。n偽指令具有控制匯編程序的偽指令具有控制匯編程序的輸入輸入/ /輸出、定義數(shù)據(jù)和符號(hào)、條輸出、定義數(shù)據(jù)和符號(hào)、條件匯編、分配存儲(chǔ)空間等功能。件匯編、分配存儲(chǔ)空間等功能。15第14頁/共74頁16如:如:nORG2000HnSTART:MOVA,#00Hnn即規(guī)定標(biāo)號(hào)即規(guī)定標(biāo)號(hào)START代表地址為代表地址為2000H開始。開始。n在一源程序中,可多次用在一源程序中,可多次用ORG指令,規(guī)定不同的程序段的起始指令,規(guī)定不同的程序段的起始地址。但是,地址。

9、但是,地址必須由小到大地址必須由小到大排列,且不能交叉、排列,且不能交叉、第15頁/共74頁17n17第16頁/共74頁18程序有效。程序有效。n例如:例如:TESTTEST:EQU 2000HEQU 2000Hn表示表示TEST=2000HTEST=2000H,匯編時(shí),凡是遇到,匯編時(shí),凡是遇到TESTTEST時(shí),均以時(shí),均以2000H2000H來代替。來代替。18第17頁/共74頁19n匯編后匯編后n(2000H)=30Hn(2001H)=40Hn(2002H)=18H(十進(jìn)制數(shù)十進(jìn)制數(shù)24)n(2003H)=43H(字符字符“C”的的ASCII碼碼)n(2004H)=42H(字符字符“B

10、”的的ASCII碼碼)19第18頁/共74頁20第19頁/共74頁21保留保留10個(gè)連續(xù)的地址單元。個(gè)連續(xù)的地址單元。又例又例如如:nORG2000HnDS10 Hn表示從表示從2000H地址開始,保留地址開始,保留16個(gè)連續(xù)地址單元。個(gè)連續(xù)地址單元。n21第20頁/共74頁22nQAQABIT P1.6BIT P1.6n功能是把功能是把P1.6P1.6的位地址賦給變的位地址賦給變量量QAQA。n4.2 4.2 匯編語言源程序的匯編匯編語言源程序的匯編n“匯編匯編”?匯編可分為?匯編可分為手工匯手工匯編編和和機(jī)器匯編機(jī)器匯編兩類。兩類。22第21頁/共74頁23用。實(shí)際中,多采用用。實(shí)際中,多

11、采用“匯匯n編程序編程序”來自動(dòng)完成匯編。來自動(dòng)完成匯編。23第22頁/共74頁24進(jìn)行程序的調(diào)試和運(yùn)行。進(jìn)行程序的調(diào)試和運(yùn)行。n有時(shí),在分析某些產(chǎn)品的程序的有時(shí),在分析某些產(chǎn)品的程序的機(jī)器代碼時(shí),機(jī)器代碼時(shí),需將需將機(jī)器代碼機(jī)器代碼翻譯成翻譯成匯編語言源程序匯編語言源程序,稱為,稱為“反匯編反匯編”。24第23頁/共74頁2525第24頁/共74頁26縮短程序的設(shè)計(jì)時(shí)間,減少占用的程序存縮短程序的設(shè)計(jì)時(shí)間,減少占用的程序存儲(chǔ)空間。儲(chǔ)空間。n子程序在程序設(shè)計(jì)中非常重要,讀者應(yīng)子程序在程序設(shè)計(jì)中非常重要,讀者應(yīng)熟練掌握子程序的設(shè)計(jì)方法。熟練掌握子程序的設(shè)計(jì)方法。26第25頁/共74頁27nACA

12、LL ACALL addr11addr11。雙字節(jié),。雙字節(jié),addr11addr11指出了指出了調(diào)用的目的地址,調(diào)用的目的地址,PCPC中中1616位地址位地址中的高中的高5 5位不變,被調(diào)用的子程位不變,被調(diào)用的子程序的首地址與絕對(duì)調(diào)用指令的下序的首地址與絕對(duì)調(diào)用指令的下一條指令的高一條指令的高5 5位地址相同,即位地址相同,即只能在同一個(gè)只能在同一個(gè)2KB2KB區(qū)內(nèi)。區(qū)內(nèi)。n 長調(diào)用指令長調(diào)用指令LCALL addr16LCALL addr16。三字節(jié),三字節(jié),addr16addr16為直接調(diào)用的目為直接調(diào)用的目的地址,子程序可放在的地址,子程序可放在64KB64KB程序程序存儲(chǔ)器區(qū)任意

13、位置。存儲(chǔ)器區(qū)任意位置。27第26頁/共74頁28用另外的子程序。用另外的子程序。28第27頁/共74頁2929子程序處理程序段子程序子程序第28頁/共74頁30。n查表查表是根據(jù)是根據(jù)自變量自變量x x,在表格,在表格尋尋找找y y,使,使y y = =f f( (x x) )。單片機(jī)中,數(shù)。單片機(jī)中,數(shù)據(jù)表格存放于據(jù)表格存放于程序存儲(chǔ)器程序存儲(chǔ)器內(nèi),在內(nèi),在執(zhí)行查表指令時(shí),發(fā)出讀程序存執(zhí)行查表指令時(shí),發(fā)出讀程序存儲(chǔ)器選通脈沖儲(chǔ)器選通脈沖 。兩條兩條極為有用的極為有用的查表指令如下:查表指令如下:n(1 1)MOVC MOVC A A,A+DPTRA+DPTRn(2 2)MOVC MOVC

14、A A,A+PCA+PC30第29頁/共74頁31據(jù)地址取出程序存儲(chǔ)器相應(yīng)單元中據(jù)地址取出程序存儲(chǔ)器相應(yīng)單元中的內(nèi)容送到累加器的內(nèi)容送到累加器A A,指令執(zhí)行后,指令執(zhí)行后,PCPC的內(nèi)容不發(fā)生變化,仍指向該查的內(nèi)容不發(fā)生變化,仍指向該查表指令的下一條指令。表指令的下一條指令。n優(yōu)點(diǎn):優(yōu)點(diǎn):在于預(yù)處理較少且不影響其在于預(yù)處理較少且不影響其他特殊功能寄存器的值,不必保護(hù)他特殊功能寄存器的值,不必保護(hù)其他特殊功能寄存器。其他特殊功能寄存器。31第30頁/共74頁32第31頁/共74頁33DB 19H,24H,31H,40H,51Hn;數(shù)09的平方表33第32頁/共74頁34n09H09H之間,如之

15、間,如A A中的內(nèi)容為中的內(nèi)容為02H02H,它的平方為它的平方為04H04H,可根據(jù),可根據(jù)A A的內(nèi)的內(nèi)容查出容查出x x的平方的平方n指令指令“MOVC AMOVC A,A+DPTRA+DPTR” 應(yīng)應(yīng)用范圍較廣,使用該指令時(shí)不用范圍較廣,使用該指令時(shí)不必計(jì)算偏移量,優(yōu)點(diǎn)是表格可必計(jì)算偏移量,優(yōu)點(diǎn)是表格可以設(shè)在以設(shè)在64KB64KB程序存儲(chǔ)器空間內(nèi)程序存儲(chǔ)器空間內(nèi)的任何地方,而不像的任何地方,而不像“MOVC AMOVC A,A+PCA+PC”那樣只設(shè)在那樣只設(shè)在PCPC下面的下面的256256個(gè)單元中,所以使用較方便。個(gè)單元中,所以使用較方便。34第33頁/共74頁35nx,y為雙字節(jié)

16、數(shù)。來看下例。35第34頁/共74頁36數(shù)x已放于R2中,查表后該路的最大允許值y放于R3R4中。查表的程序如下:36第35頁/共74頁3737第36頁/共74頁38電壓與溫度為非線性關(guān)系,傳感電壓與溫度為非線性關(guān)系,傳感器輸出的電壓已由器輸出的電壓已由A/DA/D轉(zhuǎn)換為轉(zhuǎn)換為1010位二進(jìn)制數(shù)。測得的不同溫度下位二進(jìn)制數(shù)。測得的不同溫度下的電壓值數(shù)據(jù)構(gòu)成一個(gè)表,表中的電壓值數(shù)據(jù)構(gòu)成一個(gè)表,表中溫度值為溫度值為y y(雙字節(jié)無符號(hào)數(shù)),(雙字節(jié)無符號(hào)數(shù)),x x(雙字節(jié)無符號(hào)數(shù))為電壓值(雙字節(jié)無符號(hào)數(shù))為電壓值數(shù)據(jù)。設(shè)測得電壓值數(shù)據(jù)。設(shè)測得電壓值x x放入放入R2R3R2R3中,根據(jù)中,根據(jù)

17、電壓值電壓值x x,查找對(duì)應(yīng)的,查找對(duì)應(yīng)的溫度值溫度值y y,仍放入,仍放入R2R3R2R3中。參考中。參考程序:程序:38第37頁/共74頁3939第38頁/共74頁40。40第39頁/共74頁41xxH。nORG1000HnMOV 30H,#xxH;關(guān)鍵字xxH送30H單元nMOV R1,#50;查找次數(shù)送R1nMOV A,#14;修正值送AnMOV DPTR,#TAB4;表首地址送DPTR41第40頁/共74頁4242第41頁/共74頁43n對(duì)分檢索的范圍是從數(shù)據(jù)區(qū)起點(diǎn)到本次取數(shù)處。n如果取數(shù)小于關(guān)鍵字取數(shù)小于關(guān)鍵字,則下次對(duì)分檢索的范圍是從本次取數(shù)數(shù)據(jù)區(qū)起點(diǎn)到數(shù)據(jù)區(qū)終點(diǎn)。依此類推,逐漸

18、縮小檢索范圍,減少次數(shù),大大提高查找速度。43第42頁/共74頁44第43頁/共74頁4545第44頁/共74頁46與要求的順序不符時(shí)要求的順序不符時(shí),就將兩個(gè)兩個(gè)數(shù)互換數(shù)互換;否則,順序符合要求就不互換。如果進(jìn)行升序排序,應(yīng)通過這種相鄰數(shù)互換方法,使小數(shù)向前移,大數(shù)向后移。n如此從前向后進(jìn)行一次次相鄰數(shù)互換(冒泡),(冒泡),就會(huì)把這批數(shù)據(jù)的最大數(shù)排到最后,次大數(shù)排在倒數(shù)第二的位置,46第45頁/共74頁47n4、1、6、2、5、7、3 ;逆序,互換n4、1、2、6、5、7、3 ;逆序,互換n4、1、2、5、6、7、3 ;逆序,互換n4、1、2、5、6、7、3 ;正序,不互換n4、1、2、5

19、、6、3、7;逆序,互換,第一次冒泡結(jié)束47第46頁/共74頁48n第第4次冒泡結(jié)果:次冒泡結(jié)果:1、2、3、4、5、6、7 ;已完成排序;已完成排序n第第5次冒泡結(jié)果:次冒泡結(jié)果:1、2、3、4、5、6、7n第第6次冒泡結(jié)果:次冒泡結(jié)果:1、2、3、4、5、6、7n對(duì)于對(duì)于n個(gè)數(shù)個(gè)數(shù),理論上應(yīng)進(jìn)行理論上應(yīng)進(jìn)行(n-1)次冒泡)次冒泡才能完成排序,才能完成排序,實(shí)際上有時(shí)不到實(shí)際上有時(shí)不到(n-1)次)次就已就已完成排序。完成排序。48第47頁/共74頁49第48頁/共74頁5050第49頁/共74頁5151第50頁/共74頁5252圖圖4-24-2 單字節(jié)無符號(hào)數(shù)排序程序框圖第51頁/共74

20、頁53據(jù)運(yùn)算結(jié)果的狀態(tài)標(biāo)志,用據(jù)運(yùn)算結(jié)果的狀態(tài)標(biāo)志,用條件判條件判跳指令跳指令來選擇并轉(zhuǎn)移。來選擇并轉(zhuǎn)移。n【例例4-9】 求單字節(jié)有符號(hào)數(shù)的二求單字節(jié)有符號(hào)數(shù)的二進(jìn)制補(bǔ)碼進(jìn)制補(bǔ)碼n正數(shù)補(bǔ)碼正數(shù)補(bǔ)碼是其本身,是其本身,負(fù)數(shù)補(bǔ)碼負(fù)數(shù)補(bǔ)碼是其是其反碼加反碼加1。因此,應(yīng)首先判被轉(zhuǎn)換。因此,應(yīng)首先判被轉(zhuǎn)換數(shù)的符號(hào),負(fù)數(shù)進(jìn)行轉(zhuǎn)換,正數(shù)本數(shù)的符號(hào),負(fù)數(shù)進(jìn)行轉(zhuǎn)換,正數(shù)本身即為補(bǔ)碼。身即為補(bǔ)碼。53第52頁/共74頁5454第53頁/共74頁55圖圖4-34-3 求單字節(jié)有符號(hào)二進(jìn)制數(shù)補(bǔ)碼的框圖求單字節(jié)有符號(hào)二進(jìn)制數(shù)補(bǔ)碼的框圖第54頁/共74頁5656圖4-4 單分支選擇結(jié)構(gòu)2 圖4-5 單分支選擇結(jié)構(gòu)3第

21、55頁/共74頁5757 圖圖4-64-6 多分支選擇結(jié)構(gòu)1 1 圖圖4-74-7 多分支選擇結(jié)構(gòu)2第56頁/共74頁58An4條條比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令CJNE能對(duì)兩個(gè)欲比較的能對(duì)兩個(gè)欲比較的單元內(nèi)容進(jìn)行比較,當(dāng)單元內(nèi)容進(jìn)行比較,當(dāng)不相等不相等時(shí),程序?qū)崟r(shí),程序?qū)崿F(xiàn)相對(duì)轉(zhuǎn)移;若現(xiàn)相對(duì)轉(zhuǎn)移;若兩者相等兩者相等,則順序往下執(zhí),則順序往下執(zhí)行。行。58第57頁/共74頁59nX存放在40H單元,Y存放在41H單元,如圖4-6所示。59Y=1X 0X 0X = 00-1第58頁/共74頁6060第59頁/共74頁61利用間接轉(zhuǎn)移指令實(shí)現(xiàn)分支轉(zhuǎn)移。n【例例4-11】 根據(jù)寄存器R2的內(nèi)容,轉(zhuǎn)向各個(gè)處理程序PRGX(X=0n)。n(R2)=0,轉(zhuǎn)PRG0n(R2)=1,轉(zhuǎn)PRG1n n(R2)=n,轉(zhuǎn)PRGn61第60頁/共74頁6262第61頁/共74頁63連續(xù)安排100條加法指令,用一條加法指令使其循環(huán)執(zhí)行100次。因此可縮短程序長度縮短程序長度和程序所占的內(nèi)存單元數(shù)量更少占的內(nèi)存單元數(shù)量更少,使程

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論