單片機技術(shù)應(yīng)用實訓254課件_第1頁
單片機技術(shù)應(yīng)用實訓254課件_第2頁
單片機技術(shù)應(yīng)用實訓254課件_第3頁
單片機技術(shù)應(yīng)用實訓254課件_第4頁
單片機技術(shù)應(yīng)用實訓254課件_第5頁
已閱讀5頁,還剩138頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機技術(shù) 應(yīng)用實訓主講人:張旭濤 項 目 一 覽項目一 設(shè)計廣告燈 任務(wù)1 單片機的最小系統(tǒng)建立 任務(wù)2 顯示一位LED燈 任務(wù)3 流水八位LED燈項目二 設(shè)計表決器項目三 設(shè)計計算器項目四 設(shè)計電子時鐘項目五 設(shè)計汽車轉(zhuǎn)彎信號燈模擬實驗項目六 設(shè)計智能交通燈控制項目七 設(shè)計電子琴模擬實驗項目八 設(shè)計直流電機驅(qū)動實驗項目一 任務(wù)1 單片機的最小系統(tǒng)建立 教學環(huán)節(jié)設(shè)計 實踐環(huán)節(jié)1 理論知識鏈接 2 實踐練習3 隨堂思考4一、實踐環(huán)節(jié) 3、THGMC-1系列實驗板的單片機最小系統(tǒng)原理 4、最小系統(tǒng)實物圖與仿真器連接的鎖緊插座一、實踐環(huán)節(jié) 二、實驗內(nèi)容及步驟用P1口做輸出口,接八位邏輯電平顯示,程

2、序功能使發(fā)光二極管從右到左輪流循環(huán)點亮。1.使用單片機最小應(yīng)用系統(tǒng)1模塊。關(guān)閉該模塊電源,用扁平數(shù)據(jù)線連接單片機P1口與八位邏輯電平顯示模塊。2.用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。3.打開Keil uVision2仿真軟件,首先建立本實驗的項目文件,接著添加P1_A.ASM源程序,進行編譯,直到編譯無誤。4.進行軟件設(shè)置,選擇硬件仿真,選擇串行口,設(shè)置波特率為38400。5.打開模塊電源和總電源,點擊開始調(diào)試按鈕,點擊RUN按鈕運行程序,觀察發(fā)光二極管顯示情況。發(fā)光二極管單只從右到左輪流循環(huán)點亮。具體內(nèi)容參見教材二、理論知識鏈接 (

3、)單片機的時鐘電路時鐘電路提供時鐘給計算機的各個部件,使各個部件按照一定的時序有條不紊的工作。時鐘的快慢決定著計算機的工作節(jié)奏。下面以8051為例,介紹MCS-5l系列單片機的時鐘電路組成形式。8051內(nèi)部工作時,也可由外部時鐘信號提供,這種連接方式稱為外部時鐘源方式。原理如下圖所示。此時外部的時鐘信號由XTAL2引腳引入,由于TAL2端邏輯電平不是TTL型的,故需外接一上拉電阻。另外,外接信號應(yīng)為時鐘頻率低于12MHz的方波信號。二、理論知識鏈接 (3)單片機的復位電路在單片機應(yīng)用系統(tǒng)中,除單片機芯片本身需要復位、外部擴展的I/O接口電路等需要復位外,對于單片機程序也必須初試化后才能執(zhí)行。因

4、此一個單片機系統(tǒng)需要同步復位信號,即單片機復位后,CPU開始工作,此時片外的有關(guān)擴展芯片外部時鐘也要完成復位操作,以保證CPU有效地對外圍芯片進行初始化編程。單片機的復位方式有上電復位和手動按鈕復位兩種,如下圖 所示。 二、理論知識鏈接 2、MCS-51單片機的外部存儲器的擴展(1) MCS-5l系列單片機的片內(nèi)結(jié)構(gòu)在了解單片機外部存儲器擴展知識之前,讓我們先認識一下單片機的內(nèi)部結(jié)構(gòu)。MCS-51系列單片機是雙列直插封裝形式的集成器件,內(nèi)部采用模塊式的結(jié)構(gòu),包含了一個獨立的微機硬件系統(tǒng)所應(yīng)具有的各個功能部件和一些重要的功能擴展部件。其結(jié)構(gòu)框圖如下圖所示。二、理論知識鏈接 (2) MCS-5l系

5、列單片機的片外總線結(jié)構(gòu) 當系統(tǒng)要求擴展時,為了便于與各種芯片相連接,應(yīng)把單片機外部連線變?yōu)橐话阄C所具有的三總線結(jié)構(gòu)形式,即地址總線、數(shù)據(jù)總線、控制總線。MCS-5l系列單片機的片外引腳可構(gòu)成如下圖所示的三總線結(jié)構(gòu),所有的外圍芯片都將通過這三總線進行擴展。 二、理論知識鏈接 3、單片機常用匯編指令 匯編語言,由標號、操作碼助記符、操作數(shù)和注釋4個字段組成,格式如下: 標號: 操作碼助記符 操作數(shù)1 ,操作數(shù)2 ;注釋(1)標號 標號是用戶定義的符號,由以字母開始的18個字符(字母或數(shù)字)組成,它代表指令的符號地址,通常在程序分支、轉(zhuǎn)移等所需要的地方加上一個標號,并不是每條指令都必須有標號。當將

6、指令轉(zhuǎn)換成機器指令時,指令第一字節(jié)(也稱首字節(jié))的存儲單元地址值賦給該標號。(2)操作碼助記符 助記符是一些代表操作含義的英文縮寫,一般由25個英文字母組成,如“MOV”表示“傳送”、“ADD”表示“加”等。操作碼助記符對應(yīng)的機器碼是指令的第一字節(jié),也是指令不可缺少的部分。(3)操作數(shù) 與機器指令格式中的操作數(shù)相似。(4)注釋 注釋是對本指令或本段程序的功能說明,便于對程序的閱讀理解,在轉(zhuǎn)換成機器指令時不予考慮。注釋的前面需加分號“;”。二、理論知識鏈接 4、根據(jù)本實驗涉及相關(guān)指令內(nèi)容,本節(jié)重點介紹跳轉(zhuǎn)和轉(zhuǎn)移指令。 (1)長跳轉(zhuǎn)指令 1)長跳轉(zhuǎn)指令 LJMP addrl6 2)功能 該指令執(zhí)行

7、時把16位地址中的高8a15a8位送入PCH,低8位a7a0送入PCL中,無條件地轉(zhuǎn)向指定地址。該指令不影響任何標志,轉(zhuǎn)移的范圍可達64K字節(jié),故稱長轉(zhuǎn)移指令。 (2) 短跳轉(zhuǎn)指令 1)短跳轉(zhuǎn)指令 AJMP addrll 2)功能 該指令的操作數(shù)“addrll”應(yīng)是一個十六位二進制數(shù),表示轉(zhuǎn)向的目標地址,其中“addrll”表示低11位,說明轉(zhuǎn)向的目標地址范圍由低11位組合決定,故跳轉(zhuǎn)的范圍是2K字節(jié)。 (3) 相對轉(zhuǎn)移指令 1)相對轉(zhuǎn)移指令 SJMP rel 2)功能 該指令執(zhí)行時程序計數(shù)器指針PC+2后成為PC當前值,并把有符號數(shù)“rel”值加到PC上,并計算出轉(zhuǎn)向目標地址。 三、實踐練習

8、(1)硬件實驗操作步驟(2)keil uvision2的軟件操作方法(3)軟件操作實驗 注:以上內(nèi)容略 四、隨堂思考對于本實驗延時子程序Delay: MOV R6,0 MOV R7, 0DelayLoop:DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET如使用12MHz晶振,粗略計算此程序的執(zhí)行時間為多少? 教學環(huán)節(jié)設(shè)計 實踐環(huán)節(jié)1 理論知識鏈接 2 實踐練習3 隨堂思考4 一、實踐環(huán)節(jié)1、實驗連接示意 、調(diào)用程序界面一、實踐環(huán)節(jié) 3、具體操作步驟如下:(1)使用單片機最小應(yīng)用系統(tǒng)模塊。關(guān)閉該模塊電源,用導線分別連接P1.0、P1.1到兩個撥斷開關(guān),P1.2、P1

9、.3到兩個發(fā)光二極管。注意,插座與連接線的槽口是八個,一旦連接,則相應(yīng)單片機端口與其它電路相應(yīng)接口均接通。(2)用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。(3)打開Keil uVision2仿真軟件,首先建立本實驗的項目文件,接著添加P1_B.ASM源程序,進行編譯,直到編譯無誤。(4)進行軟件設(shè)置,選擇硬件仿真,選擇串行口,設(shè)置波特率為38400。(5)打開模塊電源和總電源,點擊開始調(diào)試按鈕,點擊RUN按鈕運行程序,撥動撥斷開關(guān),觀察發(fā)光二極管的亮滅情況。向上撥為熄滅,向下?lián)転辄c亮。一、實踐環(huán)節(jié) 4、軟件程序的設(shè)計 KEYLEFT BIT

10、 P1.0 ;定義 KEYRIGHT BIT P1.1 LEDLEFT BIT P1.2 LEDRIGHT BIT P1.3 ORG 0000H LJMP START ORG 0030HSTART: SETB KeyLeft ;欲讀先置一 SETB KEYRIGHTLOOP: MOV A,P0 CJNE A,#03H,NEXT AJMP LOOPNEXT: ACALL DELAY MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP LOOP END ORG 0070HDELAY: MOV R6,0 MOV R7, 0 D

11、ELAYLOOP:DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET一、實踐環(huán)節(jié) 5、利用keil uvision2的軟件調(diào)試程序(1)打開keil uvision2軟件,點擊“新建”圖標 ,在彈出的窗口中輸入以上程序,如下圖:(2)點擊“保存”圖標,出現(xiàn)保存對話框,如下圖所示:二、理論知識鏈接 1、LED燈的顯示原理為方便人們觀察和監(jiān)視單片機的運行情況,通常把數(shù)碼顯示器作為單片機的輸出設(shè)備,用來顯示單片機的鍵輸入值、中間信息及運算結(jié)果等。在單片機應(yīng)用系統(tǒng)中,常用的顯示器主要有LED(發(fā)光二極管顯示器)和LCD(液晶顯示器)。這兩種顯示器具有耗電省、成本低廉、配置靈

12、活、線路簡單、安裝方便、耐振動、壽命長等優(yōu)點。但因其顯示內(nèi)容有限,且不能顯示圖形,因而其應(yīng)用有局限性,近年來對某些要求較高的單片機應(yīng)用系統(tǒng)開始配置簡易形式的CRT接口。因為目前應(yīng)用最廣泛的還是數(shù)碼顯示器,所以本節(jié)將以LED顯示器為例進行介紹。(1) LED顯示器結(jié)構(gòu)與原理 LED顯示器是由發(fā)光二極管顯示字段的顯示器件,也可稱為數(shù)碼管。其外形結(jié)構(gòu)如下圖)所示,由圖可見它由8個發(fā)光二極管(以下簡稱字段)構(gòu)成,通過不同的組合可用來顯示09、AF及小數(shù)點“.”等字符。二、理論知識鏈接 LED顯示器有靜態(tài)顯示與動態(tài)顯示兩種方式,下面分別予以介紹。(2) 靜態(tài)顯示接口 數(shù)碼管工作在靜態(tài)顯示方式下,共陰極或

13、共陽極點連接在一起接地或高電平。每位的段選線與一個8位并行口相連。只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。這里的8位并行口可以直接采用并行I/O接口片,也可以采用串入/并出的移位寄存器??紤]到若采用并行I/O接口,占用I/O資源較多。因而靜態(tài)顯示方式常采用串行口輸出方式,外接74LSl64移位寄存器構(gòu)成顯示電路,如下圖所示。二、理論知識鏈接 ()LED動態(tài)顯示接口 動態(tài)掃描式顯示是最常用的顯示方式之一。動態(tài)顯示,也稱掃描顯示。顯示器由6個共陰極LED數(shù)碼管構(gòu)成。單片機的P0口輸出顯示段碼,經(jīng)由一片74LS245驅(qū)動輸出給LED管,由P1口輸出位碼,經(jīng)由74LS06反相輸

14、出給LED管。下圖是單片機應(yīng)用系統(tǒng)中的動態(tài)顯示示意圖。二、理論知識鏈接 無論是按鍵或鍵盤都是利用機械觸點的閉合與斷開來確認鍵的輸入。由于按鍵機械觸點的彈性作用,在閉合及斷開瞬間均伴隨有一連串的抖動過程,其波形如下圖所示。抖動時間的長短,與開關(guān)的機械特性有關(guān),一般為510ms。按鍵的穩(wěn)定閉合期,由操作人員的按鍵動作所確定,一般為十分之幾至幾秒。為了保證單片機對按鍵的一次閉合只作一次鍵輸入處理。必須去除抖動影響。通常去除抖動有硬件和軟件兩種方法。二、理論知識鏈接 對于硬件去抖有多種方法,最常用的有濾波去抖電路和雙穩(wěn)態(tài)去抖電路。(1)濾波去抖電路(左圖) (2) 雙穩(wěn)態(tài)去抖電路(右圖)二、理論知識鏈

15、接 (3)軟件去抖除了以上所說的硬件除抖動的方法,也可以用軟件去除抖動。如前所述,若采用硬件去除抖動的電路,則N個鍵就必須配有N個去抖電路。因此,當鍵的個數(shù)比較多時,硬件去抖會過于復雜。為了解決這個問題,可以采用軟件的方法來去除抖動的影響。當?shù)谝淮螜z測到有鍵按下時,先用軟件延時1020ms,然后再確認該鍵電平是否仍維持閉合狀態(tài)電平。若保持閉合狀態(tài)電平,則認為此鍵確已按下,從而消除了抖動的影響。這種方法由于不需要附加的硬件投入,而被廣泛應(yīng)用,前面的試驗就采用了這種方法。當然,是在確定按鍵是否被按下的基礎(chǔ)上,采用延時程序獲得鍵盤信息。具體實現(xiàn)程序如下:LOOP: MOV A, P1 CJNE A,

16、 #03H,NEXT AJMP LOOPNEXT: ACALL DELAY二、理論知識鏈接 三、拓展型理論知識 1、單片機常用匯編指令(1)定位偽指令ORG 格式:ORG nn;nn為十進制或十六進制數(shù)。nn指出在該偽指令后的指令的匯編地址,即生成的機器指令起始存儲地址。(2)定義字節(jié)偽指令 格式:DB X1,X2,Xn; Xi為單字節(jié)數(shù)據(jù),它為十進制或十六進制數(shù),也可以為一個表達式。Xi也可以為由兩個單引號括起來的 一個字符串,這時Xi定義的字節(jié)長度等于字符串的長度,每一個字符為一個ASCII碼。(3)賦值偽指令 格式:字符名稱 EQU 數(shù)據(jù)或匯編符;EQU偽指令稱為賦值偽指令,用于給它左邊

17、的“字符名稱”賦值。(4)位地址賦值偽指令 格式:字符名稱 BIT 位地址;BIT稱為位地址賦值偽指令,用于給以符號形式的位地址賦值。(5)匯編結(jié)束偽指令 格式:END ;該偽指令指出結(jié)束匯編,即使后面還有指令,匯編程序也不作處理。(6)短調(diào)用指令 ACALL addrll;這條指令無條件調(diào)用首址由addrll所指出的子程序。(7)長調(diào)用指令 LCALL addrl6 ;這條指令無條件地調(diào)用位于指定地址的子程序。(8)返回指令(2條): 返回指令是使CPU從子程序返回到主程序執(zhí)行的指令。 從子程序返回指令:1)指令 RET,2)功能 從堆棧中退出PC的高位和低位字節(jié),把堆棧指針SP-2,并從產(chǎn)

18、生的PC值開始執(zhí)行程序。 從中斷返回指令: 1)指令 RETI,2)功能 這條指令除了執(zhí)行RET指令功能外,還清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器二、理論知識鏈接 2、流程圖的分析方法(1)程序流程圖的作用程序流程圖是人們對解決問題的方法、思路或算法的一種描述。流程圖的優(yōu)點:(a)采用簡單規(guī)范的符號,畫法簡單;(b)結(jié)構(gòu)清晰,邏輯性強;(c)便于描述,容易理解。(2)流程圖采用的符號 2)終止框 3)執(zhí)行框 4)判別框 1)起始框 實例三、實踐練習(1)硬件實驗操作步驟(2)keil uvision2的軟件操作方法(3)軟件操作實驗 注:以上內(nèi)容略。 四、隨堂思考 對于本實驗,如果按下一個按鈕,相應(yīng)的

19、LED燈亮,并且閃爍,如何設(shè)計這個實驗。如使用12MHz晶振,閃爍延時為1ms,并予以實驗驗證。提示:可使用子程序指令進行設(shè)計。項目一 任務(wù)3 流水八位LED燈 教學環(huán)節(jié)設(shè)計 實踐環(huán)節(jié)1 理論知識鏈接 2 實踐練習3 隨堂思考4 一、實踐環(huán)節(jié)1、實驗連接示意 、調(diào)用程序界面一、實踐環(huán)節(jié) 1、學習單片機八位LED流水燈的的實驗方法(1)使用單片機最小應(yīng)用系統(tǒng)模塊。關(guān)閉該模塊電源,用扁平數(shù)據(jù)線連接單片機P0口與八位邏輯電平顯示模塊。(2)用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。(3)打開Keil uVision2仿真軟件,首先建立本實驗的項目

20、文件,接著添加P1_A.ASM源程序,進行編譯,直到編譯無誤。(4)進行軟件設(shè)置,選擇硬件仿真,選擇串行口,設(shè)置波特率為38400。如下圖所示:(5)打開模塊電源和總電源,點擊開始調(diào)試按鈕,點擊RUN按鈕運行程序,觀察發(fā)光二極管顯示情況。發(fā)光二極管單只從右到左輪流循環(huán)點亮。一、實踐環(huán)節(jié) 4、軟件程序的設(shè)計(1) 流水燈設(shè)計程序一 ORG 0000H LJMP START ORG 0030HSTART: MOV A, #0FEH MOV R2,#8OUTPUT: MOV P1,A RL A ACALL DELAY DJNZ R2,OUTPUT LJMP STARTDELAY: MOV R6,#0

21、 MOV R7,#0DELAYLOOP: ;延時程序 DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET END (2) 流水燈設(shè)計程序二 ORG 0000H LJMP START ORG 0030HSTART: MOV A, #0FEH MOV R2,#8OUTPUT: MOV P1,A RL A DELAY: MOV R6,#0 MOV R7,#0DELAYLOOP: ;延時程序 DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP DJNZ R2,OUTPUT LJMP START END二、理論知識鏈接 1、數(shù)據(jù)傳送指令在單片機中,數(shù)據(jù)傳送

22、是最基本和最主要操作。數(shù)據(jù)傳送操作可以在片內(nèi)RAM和SFR內(nèi)進行,也可以在累加器Acc和片外存儲器之間進行。指令中必須指定傳送數(shù)據(jù)的源地址和目的地址,以便機器執(zhí)行指令時把源地址中內(nèi)容傳送到目的地址中,但不改變源地址中內(nèi)容。 MCS-51單片機的數(shù)據(jù)傳送指令共有28條,分為內(nèi)部數(shù)據(jù)傳送指令、外部數(shù)據(jù)傳送指令、堆棧操作指令和數(shù)據(jù)交換指令等四類。(1)內(nèi)部數(shù)據(jù)傳送指令1) 以A為目的操作數(shù)的指令這類指令的格式為: MOV 目的操作數(shù), 源操作數(shù) 指令與指令代碼含義 指令 操作 MOV A,Rn A(Rn) MOV A,direct A(direct) MOV A,Ri A(Ri) MOV A,#da

23、ta Adata對Rn尋址的指令,其機器碼字節(jié)的低三位為rrr,對應(yīng)于8個工作寄存器之一,當為000時,表示R0;為001時,表示R1;以此類推。 指令功能 這組指令的功能是把源操作數(shù)的內(nèi)容送入累加器Acc。二、理論知識鏈接 2)以Rn為目的操作數(shù)的指令 指令與指令代碼含義 指令 操作 MOV Rn,A Rn(A) MOV Rn,direct Rn(direct) MOV Rn,#data Rndata 功能 這組指令的功能是將源操作數(shù)的內(nèi)容送入當前工作寄存器區(qū)的R0R7中的某一個寄存器。 3)以直接尋址的單元為目的操作數(shù)指令 指令與指令代碼含義 指令 操作 MOV direct,A dire

24、ct(A) MOV direct,Rn direct(Rn) MOV directl,direct2 directl(direct2) MOV direct,Ri direct(Ri) MOV direct,#data directdata 應(yīng)注意:“MOV directl,direct2”指令譯成指令代碼時,源地址(direct2)在前,目的地址directl在后。 功能 這組指令的功能是把源操作數(shù)送入由直接地址指向的存儲單元。二、理論知識鏈接 4)以寄存器間接尋址的單元為目的操作數(shù)指令 指令與指令代碼含義 指令 操作 MOV Ri,A (Ri) (A) MOV Ri,direct (Ri)

25、 (direct) MOV Ri,#data (Ri) data 功能 本組指令是將源操作數(shù)送入以R0或R1內(nèi)容為地址的存儲單元 中。(2)外部數(shù)據(jù)傳送指令1) 16位數(shù)據(jù)傳送指令 指令與指令代碼含義 指令 操作 MOV DPTR,#datal6 DPTRdatal6 功能 把16位常數(shù)送入DPTR,16位的數(shù)據(jù)指針DPTR由DPH和DPL組成,執(zhí)行結(jié)果把高位立即數(shù)送入DPH,低位立即數(shù)送入DPL。2) 外部ROM的字節(jié)傳送指令 由于外部程序存儲器只讀不寫,因此數(shù)據(jù)傳送是單向的,即只從外部程序存儲器中讀出數(shù)據(jù),并且只能向累加器Acc傳送。這類指令共有兩條,均屬于變址尋址指令,因?qū)iT用于查表而又

26、稱為查表指令。 指令 MOVC A, A+PC 指令 MOVC A,A+DPTR二、理論知識鏈接 ()LED動態(tài)顯示接口 動態(tài)掃描式顯示是最常用的顯示方式之一。動態(tài)顯示,也稱掃描顯示。顯示器由6個共陰極LED數(shù)碼管構(gòu)成。單片機的P0口輸出顯示段碼,經(jīng)由一片74LS245驅(qū)動輸出給LED管,由P1口輸出位碼,經(jīng)由74LS06反相輸出給LED管。下圖是單片機應(yīng)用系統(tǒng)中的動態(tài)顯示示意圖。二、理論知識鏈接 2、鍵盤電路的去抖方法鍵盤實際上是一組按鍵開關(guān)的集合,其中每一個按鍵就是一個開關(guān)量輸入裝置。鍵的閉合與否,取決于機械彈性開關(guān)的通、斷狀態(tài)。反映在電壓上就是呈現(xiàn)出高電平或低電平,若高電平表示斷開,則低

27、電平表示鍵閉合。所以,通過電平狀態(tài)(高或低)的檢測,便可確定相應(yīng)按鍵是否已被按下。但在實際中,僅僅根據(jù)電平進行鍵的確認是不夠可靠的,還要進行下面重鍵與連擊兩個方面的處理。在實際操作過程中,若無意中同時或先后按下兩個以上的鍵,這就是連擊。系統(tǒng)要確認連擊操作過程中究竟是哪個鍵有效,完全由設(shè)計者的意志來決定。既可以把先按下的鍵或按下時間最長的鍵視為有效輸入,也可以把后釋放的鍵視為有效輸入。不過,在單片機控制系統(tǒng)的應(yīng)用中,通??偸遣捎脝捂I按下有效,多鍵同時按下無效的原則進行設(shè)計。重鍵指的是有些操作人員按鍵動作不熟練,會在一個鍵上的停留時間過長而產(chǎn)生多次擊鍵的效果。為了排除重鍵的影響,編制程序時,可以將

28、鍵的釋放作為按鍵的結(jié)束。等鍵釋放后,再轉(zhuǎn)去執(zhí)行對應(yīng)的功能程序,從而有效地避免一次擊鍵多次執(zhí)行的錯誤發(fā)生。二、理論知識鏈接 無論是按鍵或鍵盤都是利用機械觸點的閉合與斷開來確認鍵的輸入。由于按鍵機械觸點的彈性作用,在閉合及斷開瞬間均伴隨有一連串的抖動過程,其波形如下圖所示。抖動時間的長短,與開關(guān)的機械特性有關(guān),一般為510ms。按鍵的穩(wěn)定閉合期,由操作人員的按鍵動作所確定,一般為十分之幾至幾秒。為了保證單片機對按鍵的一次閉合只作一次鍵輸入處理。必須去除抖動影響。通常去除抖動有硬件和軟件兩種方法。二、理論知識鏈接 對于硬件去抖有多種方法,最常用的有濾波去抖電路和雙穩(wěn)態(tài)去抖電路。(1)濾波去抖電路(左

29、圖) (2) 雙穩(wěn)態(tài)去抖電路(右圖)二、理論知識鏈接 (3)軟件去抖除了以上所說的硬件除抖動的方法,也可以用軟件去除抖動。如前所述,若采用硬件去除抖動的電路,則N個鍵就必須配有N個去抖電路。因此,當鍵的個數(shù)比較多時,硬件去抖會過于復雜。為了解決這個問題,可以采用軟件的方法來去除抖動的影響。當?shù)谝淮螜z測到有鍵按下時,先用軟件延時1020ms,然后再確認該鍵電平是否仍維持閉合狀態(tài)電平。若保持閉合狀態(tài)電平,則認為此鍵確已按下,從而消除了抖動的影響。這種方法由于不需要附加的硬件投入,而被廣泛應(yīng)用,前面的試驗就采用了這種方法。當然,是在確定按鍵是否被按下的基礎(chǔ)上,采用延時程序獲得鍵盤信息。具體實現(xiàn)程序如

30、下:LOOP: MOV A, P1 CJNE A, #03H,NEXT AJMP LOOPNEXT: ACALL DELAY二、理論知識鏈接 三、拓展型理論知識 1、單片機常用匯編指令(1)定位偽指令ORG 格式:ORG nn;nn為十進制或十六進制數(shù)。nn指出在該偽指令后的指令的匯編地址,即生成的機器指令起始存儲地址。(2)定義字節(jié)偽指令 格式:DB X1,X2,Xn; Xi為單字節(jié)數(shù)據(jù),它為十進制或十六進制數(shù),也可以為一個表達式。Xi也可以為由兩個單引號括起來的 一個字符串,這時Xi定義的字節(jié)長度等于字符串的長度,每一個字符為一個ASCII碼。(3)賦值偽指令 格式:字符名稱 EQU 數(shù)據(jù)

31、或匯編符;EQU偽指令稱為賦值偽指令,用于給它左邊的“字符名稱”賦值。(4)位地址賦值偽指令 格式:字符名稱 BIT 位地址;BIT稱為位地址賦值偽指令,用于給以符號形式的位地址賦值。(5)匯編結(jié)束偽指令 格式:END ;該偽指令指出結(jié)束匯編,即使后面還有指令,匯編程序也不作處理。(6)短調(diào)用指令 ACALL addrll;這條指令無條件調(diào)用首址由addrll所指出的子程序。(7)長調(diào)用指令 LCALL addrl6 ;這條指令無條件地調(diào)用位于指定地址的子程序。(8)返回指令(2條): 返回指令是使CPU從子程序返回到主程序執(zhí)行的指令。 從子程序返回指令:1)指令 RET,2)功能 從堆棧中退

32、出PC的高位和低位字節(jié),把堆棧指針SP-2,并從產(chǎn)生的PC值開始執(zhí)行程序。 從中斷返回指令: 1)指令 RETI,2)功能 這條指令除了執(zhí)行RET指令功能外,還清除內(nèi)部相應(yīng)的中斷狀態(tài)寄存器二、理論知識鏈接 2、流程圖的分析方法(1)程序流程圖的作用程序流程圖是人們對解決問題的方法、思路或算法的一種描述。流程圖的優(yōu)點:(a)采用簡單規(guī)范的符號,畫法簡單;(b)結(jié)構(gòu)清晰,邏輯性強;(c)便于描述,容易理解。(2)流程圖采用的符號 2)終止框 3)執(zhí)行框 4)判別框 1)起始框 實例三、實踐練習(1)硬件實驗操作步驟(2)keil uvision2的軟件操作方法(3)軟件操作實驗 注:以上內(nèi)容略。

33、四、隨堂思考 對于本實驗,如果按下一個按鈕,相應(yīng)的LED燈亮,并且閃爍,如何設(shè)計這個實驗。如使用12MHz晶振,閃爍延時為1ms,并予以實驗驗證。提示:可使用子程序指令進行設(shè)計。項目二 設(shè)計表決器 教學環(huán)節(jié)設(shè)計 實踐環(huán)節(jié)1 理論知識鏈接 2 實踐練習3 隨堂思考4 一、實踐環(huán)節(jié)1、實驗連接示意 、表決器顯示模塊 示意圖1、實驗連接示意 、表決器顯示模塊 示意圖一、實踐環(huán)節(jié) 3、表決器的實驗方法 使用單片機最小應(yīng)用系統(tǒng)模塊。關(guān)閉該模塊電源,用數(shù)據(jù)線連接單片機P1口的高4位與邏輯電平顯示模塊,將P1口低四位用數(shù)據(jù)線與按鈕電路相連。 用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,

34、請注意仿真器的方向:缺口朝上。 打開Keil uVision2仿真軟件,首先建立本實驗的項目文件,接著設(shè)計源程序,進行編譯,直到編譯無誤。 進行軟件設(shè)置,選擇硬件仿真,選擇串行口,設(shè)置波特率為38400。 打開模塊電源和總電源,點擊開始調(diào)試按鈕,點擊RUN按鈕運行程序,按下相應(yīng)表決器按鈕,察看表決結(jié)果。一、實踐環(huán)節(jié) 4、軟件程序的設(shè)計KEYBIT P1.0 ;輸入、輸出端口定義 KEY BIT P1.1KEY3 BIT P1.2KEY4 BIT P1.3LED1 BIT P1.4LED2 BIT P1.5LED3 BIT P1.6LED4 BIT P1.7ORG 0000HLJMP START

35、ORG 0030HSTART: MOV P1, #0FH ;欲讀先置一 LOOP1: MOV A, P1 CJNE A,#0FH,LOOP AJMP LOOP1LOOP: ACALL DELAY MOV C, KEY1 MOV LED1, C MOV C, KEY2 MOV LED2, C MOV C, KEY3 MOV LED3, C MOV C, KEY4 MOV LED4, CLOOP2: MOV A, P1 ANL A, #0FH CJNE A,#0FH,LOOP2 LJMP START END二、理論知識鏈接 1、位操作指令在MCS-51系列單片機中,可以以程序狀態(tài)字寄存器的進位位C

36、Y(PSW.7)作為累加器C,以數(shù)據(jù)存儲器(RAM)和特殊功能寄存器SFR內(nèi)的位尋址區(qū)的位單元作為操作數(shù),進行位變量的傳送、修改和邏輯等操作。()位變量傳送指令 1) 位操作指令 指令 MOV C,bit MOV bit,C 2) 功能 該指令把源位單元中的數(shù)據(jù)送到目標位單元中,其中一個操作數(shù)必須是位累加器C,另一個可以是任何直接尋址的位,也就是說位變量的傳送必須經(jīng)過C。其中位地址可參照書本。() 位變量修改指令 1) 指令與指令代碼 指令 CLR C CLR bit CPL C CPL bit SETB C SETB bit 2) 功能 這組指令將操作數(shù)指出的位清“0”、取反、置“1”?!癈

37、LR”是清0,“CPL”是取反,“SETB”是置“1”二、理論知識鏈接 (3)位變量邏輯與操作指令 1)位變量邏輯與指令 ANL C,bit ANL C,/bit 2) 功能 如果源位的內(nèi)容為邏輯0,則CY清0,否則CY保持不變?!?bit”的斜線表示用位內(nèi)容的邏輯非為源值,但不影響本身值。()位變量邏輯或操作指令 )位變量邏輯或指令 ORL C,bit ORL C,bit 2) 功能 如果源位的值為1,則進位標志CY=1,否則進位標志CY保持原來狀態(tài)。斜線“”表示邏輯非,但源位本身保持不變。3、字節(jié)邏輯指令(1)邏輯與指令 指令助記符為“ANL”,表示是“AND”(與)和“LOG”(邏輯)的

38、組合。1) 指令與指令代碼 指令 ANL A,Rn ; ANL A,direct;ANL A,Ri; ANL A,#data ANL direct,A ; ANL direct,#data 2) 功能 該組指令將源操作數(shù)和目的操作數(shù)之間按位進行邏輯與操作,結(jié)果存放在目的操作數(shù)中。二、理論知識鏈接 (2)邏輯或的指令 指令助記符“ORL”,由“OR”(或)和“LOG”(邏輯)的組合。 1) 指令與指令代碼 ORL A,Rn ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data 2) 功能 這組指令將源操作數(shù)和目的操作數(shù)之間

39、按位進行邏輯或操作,結(jié)果存到目的操作數(shù)。 (3)邏輯異或指令 指令助記符“XRL”,XR表示異或,比較的兩數(shù)碼,相同出0,不同出1,“L”表示“邏輯”。 1) 指令與指令代碼 指令 XRL A,Rn XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data 2) 功能 這組指令將源操作數(shù)和目的操作數(shù)之間執(zhí)行按位的邏輯異或操作,結(jié)果存放到目的操作數(shù)中。二、理論知識鏈接 【例2-7】設(shè)(A)=64H,(R5)=0F7H,說明執(zhí)行指令“XRL A,R5”后的結(jié)果。 解 01100100 )11110111 10010011結(jié)果為(

40、A)=10010011即93H。(4)累加器清零和取反指令 (1)清零指令 CLR A 該指令的指令代碼為11100100,功能是將累加器Acc清“0”,不影響CY、AC、OV等標志。 (2)取反指令 CPL A 該指令的指令代碼為11110100,功能是將累加器Acc中的每一位取反,原來為1的位變0,原來為0的位變1,不影響標志位。 【例2-8】設(shè)(A)=01010101B,說明執(zhí)行指令“CPL A”的結(jié)果。 解 結(jié)果為(A)=10101010B。三、實踐練習(1)硬件實驗操作步驟(2)keil uvision2的軟件操作方法(3)軟件操作實驗 注:以上內(nèi)容略。 四、隨堂思考(1)對于本實驗

41、,如果八位表決者進行表決,如何設(shè)計這個實驗程序。并予以實驗驗證。提示:可使用字節(jié)傳送指令進行設(shè)計。()可否將表決者信息用七段碼進行表示,設(shè)計相應(yīng)的顯示電路。項目三 設(shè)計計算器 教學環(huán)節(jié)設(shè)計 實踐環(huán)節(jié)1 理論知識鏈接 2 實踐練習3 隨堂思考4 一、實踐環(huán)節(jié)1、實驗連接示意圖 一、實踐環(huán)節(jié) 2、計算器的實驗操作步驟本實驗采用44鍵盤,16個鍵依次對應(yīng)09、“+”、“-”、“”、“”、“=”和清除鍵??梢赃M行小于255的數(shù)的加減乘除運算,并可連續(xù)運算。當鍵入值大于255時,將自動清零,可以重新輸入。具體步驟如下:(1)使用單片機最小應(yīng)用系統(tǒng)模塊,P0口接陣列式鍵盤,P3.6、P3.7連接串行靜態(tài)顯

42、示模塊的DIN、CLK端。(2)用串行數(shù)據(jù)通信線連接計算機與仿真器,把仿真器插到模塊的鎖緊插座中,請注意仿真器的方向:缺口朝上。(3)打開Keil uVision2仿真軟件,首先建立本實驗的項目文件,接著添加 計算器.ASM源程序,進行編譯,直到編譯無誤。(4)進行軟件設(shè)置,選擇硬件仿真,選擇串行口,設(shè)置波特率為38400。(5)打開模塊電源和總電源,點擊開始調(diào)試按鈕,點擊RUN按鈕運行程序。鍵入值,在連續(xù)5個八段數(shù)碼管上觀察運算過程與結(jié)果。一、實踐環(huán)節(jié) 4、主要程序的分析1)初始化參數(shù) DBUF EQU 30H TEMP EQU 40H YJ EQU 50H ;結(jié)果存放 YJ1 EQU 51

43、H ;中間結(jié)果存放 GONG EQU 52H ;功能鍵存放 DIN BIT P3.6 CLK BIT P3.7 ORG 0000H LJMP START ORG 0030HSTART: MOV R3,#0 ;初始化顯示為空 MOV GONG,#0 MOV 30H,#10H MOV 31H,#10H MOV 32H,#10H MOV 33H,#10H MOV 34H,#10H2)LED顯示MLOOP: LCALL DISP (主程序部分)DISP: ;(子程序部分) MOV R0,#DBUF MOV R1,#TEMP MOV R2,#5DP10: MOV DPTR,#SEGTAB MOV A,R

44、0 MOVC A,A+DPTR MOV R1, A INC R0 INC R1 DJNZ R2,DP10 MOV R0,#TEMP MOV R1,#5 DP12 :MOV R2,#8 MOV A,R0 DP13: RLC A MOV DIN,C CLR CLK SETB CLK ;產(chǎn)生上升沿脈沖 DJNZ R2,DP13 INC R0 DJNZ R1,DP12 RETSEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH ; DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,00H,40H一、實踐環(huán)節(jié) 4、主要程序的分析3)有鍵輸入WAI

45、T:LCALL TESTKEY ;判斷有無按鍵 (主程序部分) JZ WAITTESTKEY: (子程序部分) MOV P0,#0FH ;讀入鍵狀態(tài) MOV A,P0 CPL A ANL A,#0FH ;高四位不用 RET4)讀取鍵碼CALL GETKEY ;讀鍵(主程序部分)KEYTABLE: DB EEH,0DEH,0BEH,07EH ; DB 0EDH,0DDH,0BDH,07DH DB 0EBH,0DBH,0BBH,07BH DB 0E7H,0D7H,0B7H,077H GETKEY: MOV R6,#10 CALL DELAY MOV P0,#0FH MOV A,P0 CJNE A,

46、#0FH, K12 LJMP MLOOPK12: MOV B,AMOV P1,#0EFHMOV A,P0 CJNE A,#0EFH,K13 MOV P0,#0DFH MOV A,P0 CJNE A,#0DFH,K13 MOV P0,#0BFH MOV A,P0 CJNE A,#0BFH,K13 MOV P0,#7FH MOV A,P0 CJNE A,#7FH, K13 LJMP MLOOPK13: ANL A,#0F0H ORL A,B MOV B,A MOV R1,#16 MOV R2,#0 MOV DPTR,#KEYTABLEK14: MOV A,R2 MOVC A,A+DPTR CJNE

47、 A,B,K16 MOV P0,#0FHK15: MOV A,P0 CJNE A,#0FH, K15 MOV R6,#10 LCALL DELAY MOV A,R2 RETK16: INC R2 DJNZ R1,K14 LJMP MLOOPEND一、實踐環(huán)節(jié) 4、主要程序的分析)鍵碼處理INC R3 ;按鍵個數(shù)(以下均為主程序部分) CJNE A,#0,NEXT1 ;判斷是否數(shù)字鍵 LJMP E1 ;轉(zhuǎn)數(shù)字鍵處理NEXT1: CJNE A,#1,NEXT2 LJMP E1NEXT2: CJNE A,#2,NEXT3 LJMP E1NEXT3: CJNE A,#3,NEXT4 LJMP E1NE

48、XT4: CJNE A,#4,NEXT5 LJMP E1NEXT5: CJNE A,#5,NEXT6 LJMP E1NEXT6: CJNE A,#6,NEXT7 LJMP E1NEXT7: CJNE A,#7,NEXT8 LJMP E1NEXT8: CJNE A,#8,NEXT9 LJMP E1NEXT9: CJNE A,#9,NEX10 LJMP E1NEX10: CJNE A,#10,NEX11 ;判斷是否功能鍵 LJMP E2 ;轉(zhuǎn)功能鍵處理NEX11: CJNE A,#11,NEX12 LJMP E2NEX12: CJNE A,#12,NEX13 LJMP E2NEX13: CJNE

49、A,#13,NEX14 LJMP E2NEX14: CJNE A,#14,NEX15 LJMP E2NEX15: LJMP E3 ;判斷是否清除鍵E1: CJNE R3,#1,N1;判斷第幾次按鍵 LJMP E11 ;為第一個數(shù)字N1: CJNE R3,#2,N2 LJMP E12 ;為第二個數(shù)字N2: CJNE R3,#3,N3 LJMP E13 ;為第三個數(shù)字N3: LJMP E3 ;第四個數(shù)字轉(zhuǎn)溢出E11: MOV R4,A ;輸入值暫存R4 MOV 34H,A ;輸入值送顯示緩存 MOV 33H,#10H MOV 32H,#10H LJMP MLOOP;等待再次輸入E12: MOV R

50、7,A;個位數(shù)暫存R7 MOV B,#10 MOV A,R4 MUL AB ;十位數(shù) ADD A,R7 MOV R4,A ;輸入值存R4 MOV 32H,#10H;輸入值送顯示緩存 MOV 33H,34H MOV 34H,R7 LJMP MLOOPE13: MOV R7,A MOV B,#10 MOV A,R4 MUL AB JB OV,E3 ;輸入溢出二、理論知識鏈接 1、44按鍵電路工作原理行列式鍵盤是鍵盤輸入的主要方式。鍵盤按鍵編碼分為獨立式鍵盤和行列式鍵盤兩種編碼方式。獨立式鍵盤主要是指直接用I/O線構(gòu)成的單個鍵盤電路,每個獨立式按鍵單獨占有一根I/O口線,每根I/O口線上的按鍵工作狀

51、態(tài)不會影響其它I/O口線的工作狀態(tài),如前面表決器輸入電路。行列式鍵盤由行線和列線組成,按鍵設(shè)置在行線和列線的交叉點上,按鍵的兩端分別連接在行線和列線上。結(jié)合實驗,重點學習行列式鍵盤。鍵盤的工作方式一般有編程掃描方式和中斷掃描方式兩種。下面重點介紹編程掃描方式。編程掃描方式是利用單片機在完成其它工作的空余,調(diào)用鍵盤掃描子程序,來響應(yīng)鍵輸入要求。在執(zhí)行鍵功能程序時,CPU不再響應(yīng)鍵輸入要求。結(jié)合實驗,鍵盤電路如下所示:二、理論知識鏈接 鍵盤掃描程序一般應(yīng)具備下述幾個功能(1)判斷鍵盤上有無鍵按下。其方法為P1.4-P1.7逐列掃描輸出“0”(即低電平)時,讀P1.0-P1.3口狀態(tài),若全為1,則鍵

52、盤無鍵按下,若不全為“1”,則有鍵按下。(2)去除鍵的抖動影響。方法為軟件延時一段時間(一般為10ms左右)后,再判斷鍵盤狀態(tài),如果仍為有鍵按下狀態(tài),則認為有一個確定的鍵被按下,否則按鍵抖動處理。(3)掃描鍵盤,得到按下鍵的鍵號。按照行列式鍵盤的工作原理,圖3-4中16個鍵的鍵值從左上角的數(shù)字“0”鍵開始向右下分布。(4)判別閉合的鍵是否釋放。鍵閉合一次僅進行一次鍵功能操作。等鍵釋放后即將鍵值送入累加器Acc中,然后執(zhí)行鍵功能操作。(5)計算器讀鍵子程序分析: 計算器讀鍵子程序為列掃描方式,具體功能分析如下: KEYTABLE: DB 0EEH,0DEH,0BEH,07EH ;鍵碼定義 DB

53、0EDH,0DDH,0BDH,07DH DB 0EBH,0DBH,0BBH,07BH DB 0E7H,0D7H,0B7H,077HGETKEY: MOV R6,#10 ;設(shè)定內(nèi)延時循環(huán)次數(shù) CALL DELAY ;延時去抖 MOV P0,#0FH ;將鍵盤列值全置“0” MOV A,P0 ;讀取鍵盤端口狀態(tài) CJNE A,#0FH, K12 ;判斷鍵盤端口狀態(tài),有動作,跳轉(zhuǎn)到K12 LJMP MLOOP ;鍵盤無動作,返回主程序,重新檢測K12: MOV B,A ;鍵盤端口值送給B MOV P0,#0EFH ;將鍵盤第一列置“0” MOV A,P0 ;讀取鍵盤端口狀態(tài) CJNE A,#0EFH

54、,K13 ;判斷鍵盤端口狀態(tài),有動作,跳轉(zhuǎn)到K13 MOV P0,#0DFH ;將鍵盤第二列置“0” MOV A,P0 ;讀取鍵盤端口狀態(tài) CJNE A,#0DFH,K13 ;判斷鍵盤端口狀態(tài),有動作,跳轉(zhuǎn)到K13 MOV P1,#0BFH ;將鍵盤第三列置“0”二、理論知識鏈接 、七段數(shù)碼管的顯示過程靜態(tài)串行顯示電路原理與程序在前面已講過,這里不再累述。重點要講解如何獲得顯示的數(shù)據(jù)。本實驗允許的數(shù)值最多為3位。另外,如何將其轉(zhuǎn)換成十進制,為下面的運算做好準備工作。分析如下相關(guān)程序: INC R3 ;按鍵個數(shù)(以下均為主程序部分) CJNE A,#0,NEXT1 ;判斷是否為數(shù)字鍵“0”,為“

55、0”轉(zhuǎn)E1,否則轉(zhuǎn)NEXT1 LJMP E1 ;轉(zhuǎn)數(shù)字鍵處理NEXT1: CJNE A,#1,NEXT2 ;判斷是否為數(shù)字鍵“1”,為“1”轉(zhuǎn)E1,否則轉(zhuǎn)NEXT2 LJMP E1 NEX10: CJNE A,#10,NEX11 ;判斷是否功能鍵“10”,為“10”轉(zhuǎn)E2, 否則轉(zhuǎn)NEXT11 LJMP E2 ;轉(zhuǎn)功能鍵處理NEX11: CJNE A,#11,NEX12 ;判斷是否功能鍵“11”,為“11”轉(zhuǎn)E2, 否則轉(zhuǎn)NEXT12 LJMP E2 NEX15: LJMP E3 ;判斷是否功能鍵“15”,為“15”轉(zhuǎn)E3E1: CJNE R3,#1,N1 ;判斷第幾次按鍵,R3為“1”轉(zhuǎn)E1

56、1,否則轉(zhuǎn)N1 LJMP E11 ;跳轉(zhuǎn)E11N1: CJNE R3,#2,N2 ;判斷第幾次按鍵,R3為“2”轉(zhuǎn)E12,否則轉(zhuǎn)N2 LJMP E12 ;跳轉(zhuǎn)E12N2: CJNE R3,#3,N3 ;判斷第幾次按鍵,R3為“3”轉(zhuǎn)E13,否則轉(zhuǎn)N3 LJMP E13 ;跳轉(zhuǎn)E13N3: LJMP E3 ;第四個數(shù)字輸入則溢出E11: MOV R4,A ;輸入值暫存R4 MOV 34H,A ;輸入值送個位顯示緩存 MOV 33H,#10H ;顯示鍵值“零”送十位顯示緩存 MOV 32H,#10H ;顯示鍵值“零”送百位顯示緩存 LJMP MLOOP ;返回主程序,等待再次輸入E12: MOV

57、R7,A ;個位數(shù)暫存R7 MOV B,#10 ;將十賦予B二、理論知識鏈接 、算術(shù)運算指令(1)加法指令加法指令使用助記符“ADD”。 1)不帶進位的加法指令 指令代碼 ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data 功能 將源操作數(shù)與累加器Acc的內(nèi)容相加,其結(jié)果放于累加器Acc中。 對標志位的影響 加法運算對程序狀態(tài)字寄存器PSW的各標志位有一定的影響:如果位7有進位輸出,則CY=l,否則CY=0;如果位3有進位輸出,則AC=1,否則AC=0;溢出標志位OV=C6C7,如果位6有進位輸出而位7沒有或者位7有進位而位6沒有,則 OV=1,否則OV=0;

58、P標志位始終跟蹤累加器Acc內(nèi)“1”的個數(shù),如果A中有奇數(shù)個“1”,則P=1。注意:程序狀態(tài)字寄存器PSW是十分重要的特殊寄存器。它有一個字節(jié)組成,字節(jié)中的每一位都代表特定的含義:表列出PSW寄存器各位功能B7-CY;b6-AC;b5-F0;b4-RSl;b3-RS0;b2-OV;bl- -;bO-P二、理論知識鏈接 2)帶進位加法指令 指令代碼 ADDC A,Rn ADDC A,direct ADDC A,Ri ADDC A,#data 功能:這組指令同時把源操作數(shù)、進位標志位和累加器Acc的內(nèi)容相加,結(jié)果存放在累加器Acc中 對PSW的影響 如果位7有進位輸出,則進位標志位CY為“1”;否

59、則CY為“0”;如果位3有進位輸出, 則標志位AC=1;若位3無進位輸出,AC=0;如果位6有進位輸出而位7沒有或者位7有進位輸出而位6 沒有,則溢出標志位OV=1,否則OV=0。3)增量指令 指令代碼 INC A INC Rn INC direet INC Ri INC DPTR 功能 這組指令是把源操作數(shù)加1,應(yīng)注意:當用本指令修改輸出口P0P3時,原始口數(shù)據(jù)的值將 從口鎖存器讀入,而不是從引腳讀入。 對標志位影響 若原來為0FFH,加1后將溢出為00H,對A的操作可能影響P外,不影響任何標志。二、理論知識鏈接 4)十進制調(diào)整指令 指令代碼 DA A 功能 若該指令上一條指令是一條加法指令

60、,加數(shù)和被加數(shù)為十進制BCD碼,相加結(jié)果不是十進 制的BCD碼,所以必須將結(jié)果調(diào)整為BCD碼,該指令自動選擇調(diào)整值00H、06H、60H、66H,將結(jié) 果調(diào)整為十進制BCD碼。(2)減法指令 1)帶進位減法指令 指令代碼 SUBB A,Rn SUBB A,direct SUBB A,Ri SUBB A,#data 功能 這組指令功能是從累加器Acc中減去源操作數(shù)和進位標志,結(jié)果在累加器Acc中。 2)減1指令 指令代碼 DEC A DEC Rn DEC direct DEC Ri 功能 將源操作數(shù)減1,若原來為00H,減1后為0FFH 二、理論知識鏈接 3) 乘法指令 指令代碼 MUL AB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論