課程設計報告“9秒倒計時設計”_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微機原理及應用</b></p><p>  課 程 設 計</p><p>  課程設計題目:9秒倒計時設計</p><p><b>  一、設計目的</b></p><p>  通過課程設計使學生更進一步掌握微機原理及應用課程的有關知識,提高應用微機解決問題的能

2、力,加深對微機應用的理解。通過查閱資料,結合所學知識進行軟、硬件的設計,使學生初步掌握應用微機解決問題的步驟及方法。為以后學生結合專業(yè)從事微機應用設計奠定基礎。</p><p>  二、設計的原始資料及依據(jù)</p><p>  查閱可編程并行芯片8255、中斷控制等其他相關資料。</p><p>  用簡單的輸入輸出端口等硬件,結合LED顯示計時秒數(shù)。 </p

3、><p>  三、設計的主要內(nèi)容及要求</p><p>  內(nèi)容:利用微機原理實驗箱,采用一組發(fā)光二極管來模擬報警燈。</p><p><b>  要求:</b></p><p>  1.采用8253對307200HZ信號進行分頻作為秒脈沖。</p><p>  2.采用8259中斷管理器對輸入的秒脈

4、沖信號進行管理,及時更新8255的控制1個數(shù)碼管,讓其從9減到0,然后通過揚聲器發(fā)出警報</p><p>  *3.可通過8個開關任意設置初值。</p><p>  四、對設計說明書撰寫內(nèi)容、格式、字數(shù)的要求 </p><p>  1.課程設計說明書(論文)是體現(xiàn)和總結課程設計成果的載體,一般不應少于3000字。</p><p>  2.學

5、生應撰寫的內(nèi)容為:目錄、正文、參考文獻等。課程設計說明書(論文)的結構及各部分內(nèi)容要求可參照《沈陽工程學院畢業(yè)設計(論文)撰寫規(guī)范》執(zhí)行。應做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p><p>  3.說明書(論文)手寫或打印均可。手寫要用學校統(tǒng)一的課程設計用紙,用黑或藍黑墨水工整書寫;打印時按《沈陽工程學院畢業(yè)設計(論文)撰寫規(guī)范》的要求進行打印。</p><p>  4.

6、課程設計說明書(論文)裝訂順序為:封面、任務書、成績評定表、目錄、正文、參考文獻。</p><p>  五、 設計完成后應提交成果的種類、數(shù)量、質(zhì)量等方面的要求;</p><p>  交課程設計說明書一份。在說明書中要有設計原理、硬件電路接線圖、設計的程序及必要注釋等。</p><p><b>  六、時間進度安排;</b></p>

7、<p>  七、主要參考資料(文獻)。</p><p>  [1] 王惠中. 微機原理及應用.武漢:武漢大學出版社,2011</p><p>  [2] 鄒逢興. 微型計算機原理與接口技術實驗指導. 北京:清華大學出版社,2009</p><p>  [3] 趙全利, 呂建平, 鄒雪艷.微型計算機原理及接口技術.北京: 機械工業(yè)出版社,2009<

8、/p><p>  [4] 何宏.微型計算機原理與接口技術.陜西:西安電子科技大學出版社,2009</p><p><b>  摘 要</b></p><p>  本次設計的程序為9秒倒計時設計,是通過并行接口芯片8255、定時/計數(shù)器8254芯片與8086計算機的硬件連接,以及延時方法,來實現(xiàn)倒計時秒表的功能。</p><p&g

9、t;  選用8255A與LED數(shù)碼管相連,構成顯示電路。其中B端口與LED的位線相連,用于控制數(shù)字的輸入,A端口與LED顯示器的段控制口相連,并且通過循環(huán)右移來完成動態(tài)顯示的效果。</p><p>  其中片選接到系統(tǒng)總線的IOY0口。利用8254定時器控制一秒的時間進行倒計時,8254采用方式3輸出方波,用兩個計數(shù)器進行分頻,將有系統(tǒng)提供的1MHZ進行兩次分頻得到1HZ的頻率,即1s。通過尋找上升沿得到1s鐘的

10、時間,完成每過1s減一次數(shù)的效果。再將8254輸出的方波接到8255的PC0接口,即8255采用81H工作方式字,A、B端口輸出,C端口輸入。</p><p>  再利用8259產(chǎn)生中斷,每次按一次開關就進入循環(huán)延時程序,再按一次開關中斷結束,跳出循環(huán)程序。即通過開關控制倒計時的暫停和繼續(xù)。</p><p>  關鍵詞 :循環(huán)、延時、中斷、分頻</p><p>&l

11、t;b>  目 錄</b></p><p><b>  摘 要I</b></p><p><b>  第一章 概述1</b></p><p>  1.1 CPU發(fā)展史1</p><p>  1.2 設計題目1</p><p>  1.3 設計目的1

12、</p><p>  1.4 設計要求2</p><p>  1.5 設計內(nèi)容2</p><p>  第二章 設計器材與芯片3</p><p><b>  2.1設計器材3</b></p><p>  2.2芯片功能介紹3</p><p>  2.2.1 8255

13、A芯片主要功能3</p><p>  2.2.2 8254芯片主要功能5</p><p>  2.2.3 8259芯片主要功能…………………………………………………………………………….7</p><p>  第三章 硬件設計11</p><p>  3.1 設計思路11</p><p>  3.2 電路原理圖

14、12</p><p>  第四章 軟件設計13</p><p>  4.1 顯示電路流程圖13</p><p>  4.2 秒控制電路流程圖14</p><p>  4.3 匯編指令介紹15</p><p>  4.4 源程序清單及注釋22</p><p><b>  結

15、論27</b></p><p><b>  致 謝28</b></p><p><b>  參考文獻29</b></p><p><b>  第一章 概述</b></p><p>  1.1 CPU發(fā)展史</p><p>  CPU(C

16、entral Processing Unit)被稱呼為微處理器。微處理器是微型計算機的核心部件,它的性能在很大程度上決定了微型計算機的性能。目前,以Pentium Pro(P6)為代表的微處理器已經(jīng)進入第六代。下面介紹一下CPU的發(fā)展史:第一代(1971-1973年):4位或低檔8位微處理器。第一代微處理器的芯片采用PMOS(Metal-Oxide Semicondutor,金屬氧化物半導體)工藝。第二代(1974-1978年):中高檔

17、8位微處理器。第二代微處理器的芯片采用NMOS工藝。第三代(1978-1983年):16位微處理器。第三代微處理器采用HMOS高密度集成工藝技術。第四代(1983-1993年):32位高檔微處理器。第四代微處理器采用先進的高速CMOS(HCMOS)工藝。第五代(1993年后):準64位高檔微處理器。第五代微處理器采用亞微米的CMOS工藝制造。第六代(1995年后):64位微處理器。第六代微處理器性能優(yōu)異,適應當前對多媒體、網(wǎng)絡、通信等多

18、方面的要求。</p><p>  隨著科學技術的發(fā)展,會不斷地對微處理器提出新的要求,新型、新概念的微處理器定會層出不窮。</p><p><b>  1.2 設計題目</b></p><p>  用七段LED數(shù)碼管顯示9秒倒計時</p><p><b>  1.3 設計目的</b></p&

19、gt;<p>  通過本學期對微機原理的學習,掌握的知識還停留在理論的上。但是這是一門實踐性較強的課程,讓學生在學完該課程之后,進行一次課程設計,使學生將課堂所學的知識和實踐有機結合起來,初步掌握計算機應用系統(tǒng)設計的步驟和接口設計的方法,提高分析和解決實際問題的能力。</p><p>  通過設計實踐,培養(yǎng)學生查閱專業(yè)資料,工具書或參考書,了解有關工業(yè)標準,掌握現(xiàn)代設計手段和軟件工具,并能以圖紙和說

20、明書表達設計思想和結果的能力。</p><p>  通過設計,不但要培養(yǎng)和提高學生解決工程具體問題,動腦動手的技術工作能力,而且還要逐步建立科學正確的設計和科研思想,培養(yǎng)良好的設計習慣,牢固樹立實事求是和嚴肅認真的工作態(tài)度。具體要求如下:</p><p>  1、中斷工作原理,定時計數(shù)原理,并行通信原理工作原理。</p><p>  2、掌握8255芯片,8254芯

21、片功能,結構。</p><p>  3、掌握8255芯片,8254芯片的編程。</p><p>  4、能運用所提到的芯片,設計系統(tǒng)并進行程序開發(fā),滿足用戶需求。</p><p><b>  1.4 設計要求</b></p><p>  1、總體內(nèi)容:設計一電子時鐘,能在數(shù)碼管上顯示時間并實現(xiàn)倒計時。</p>

22、<p>  2、接口設計:根據(jù)題目和所用的接口電路芯片設計出完整的接口電路,并在實驗系統(tǒng)上完成電路的連接和調(diào)試通過.</p><p>  3、程序設計:要求畫出程序框圖,設計出全部程序并給出程序設計說明和程序注釋。</p><p>  4、前期完成的實驗有:8259A中斷控制器實驗,8255并行接口實驗,8254定時器實驗。</p><p><b

23、>  1.5 設計內(nèi)容</b></p><p>  用七段LED數(shù)碼管顯示倒計時從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和倒時序電路。</p><p>  傳統(tǒng)的設計方法有兩種,一是利用組合邏輯電路和時序電路等中小規(guī)模集成電路來設計;一是利用單片機編程技術來設計。這兩種設計都存在硬件復雜,設計周期長,成本高等缺點。并且本學期通過對《微型計算機原理及應用》的學

24、習,利用掌握的知識進行實踐是必要的,以鞏固基礎知識,培養(yǎng)獨立操作能力。</p><p>  本次課程設計要實現(xiàn)的功能為:利用8255A與LED數(shù)碼顯示器連接,開始時輸入初值9秒,利用8254定時器的分頻功能將CPU提供的系統(tǒng)時鐘頻率1.041667MHz,分頻為1HZ,以此來得到1s的準確時間。然后每隔1秒,秒鐘計時減一。在其中又通過對8259中斷程序的應用,來實現(xiàn)通過開關控制暫停計時、繼續(xù)計時的功能。</

25、p><p>  第二章 設計器材與芯片</p><p><b>  2.1設計器材</b></p><p>  1、PC微機一臺:用于對程序的編譯測試等,同時還需要對實驗設備進行控制,提供整個程序的運行平臺,并且收集和釋放硬件信號,實現(xiàn)程序功能。</p><p>  2、微機原理實驗箱一臺:此設備必須能提8255A、8254

26、芯片和數(shù)碼管等必要芯片。并且能通過接受PC機傳來的信息,顯示出相應的功能。以支持LED顯示管倒計時的實現(xiàn)。</p><p>  3、導線若干條:用于電路和芯片之間的連接。</p><p><b>  2.2芯片功能介紹</b></p><p>  2.2 .1 8255簡介</p><p>  8255可編程外圍接口芯片

27、是Intel公司生產(chǎn)的通用并行I/O接口芯片,它具有A、B、C三個并行接口,用+5V單電源供電,能在以下三種工作方式下工作,下面將具體說明這三種工作方式:</p><p>  方式0—基本輸入/輸出方式;</p><p>  方式1—選通輸入/輸出方式;</p><p>  方式2—雙向選通輸入/輸出方式。</p><p>  1 . 825

28、5工作方式</p><p>  工作方式分別為工作方式0,工作方式1和工作方式2。</p><p>  1、工作方式0,又稱為基本工作方式。在此方式下,可分別將A口的8條線,B口的8條線,C口高4位對應的4條線和C口的低四位對應的四條線定義為輸入或輸出。故它們的輸入輸出共有16種不同的組合。</p><p>  表2.1 8255輸入輸出組合</p>

29、<p>  2:工作方式1,既選通輸入輸出方式。在這種方式下,A口和B口仍作為數(shù)據(jù)的輸出口和輸入口,同時還要利用C口的某些位作為控制和狀態(tài)信號。</p><p>  3:工作方式2,又稱雙向輸入輸出方式。這種方式只有8255的口A才有。在A口工作于雙向輸入輸出方式時,要利用C口的5條線才能實現(xiàn)。因此,B口只能工作在工作方式0或工作方式1,而C口剩下的3條線可以作為輸入輸出線使用或B口方式1下的控制線。

30、</p><p>  2 . 8255的控制字</p><p>  圖2.2 8255的控制字</p><p>  8255 工作方式控制字和C口按位置位/復位控制字格式</p><p>  說明:當控制字BIT7=1時,控制字的BIT6~BIT3這4位用來控制A組,即A口的8位和C口的高4位,而控制字的低3位BIT2~BIT0用來控制B

31、組,包括B口的8位和C口的低4位。</p><p>  8255的C口具有位控功能,即端口C的8位中的任一位都可通過CPU向8255的控制寄存器寫入一個按位置位/復位控制字來置1或清0,而C口中其他位的狀態(tài)不變。其格式注意8255的C口按位置位/復位控制字的最高位D7(特征位)應為0。</p><p>  2.2.2 8254芯片主要功能</p><p> ?。ㄒ唬?/p>

32、8254定時/計數(shù)器的引腳及功能</p><p>  8254是NMOS工藝制成,采用單一+5V電源,24引腳雙列直插式封裝,外部引腳如下所示:</p><p>  圖2.3 8254定時/計數(shù)器的引腳</p><p>  1、8254與CPU的接口引線</p><p>  D7~D0:雙向數(shù)據(jù)線:可直接與數(shù)據(jù)總線相連,用于傳遞各種數(shù)據(jù)信息;

33、</p><p>  /WR:寫信號,輸入,低電平有效,用于控制CPU對8254的寫操作;</p><p>  /RD:讀信號,輸入低電平有效。用于控制CPU對8254的讀操作;</p><p>  A1、A0:地址線,輸入信號;</p><p>  /CS:片選信號,輸入信號,低電平有效。當/CS為0時,8254被選中,允許CPU對其進行讀

34、/寫操作。</p><p>  2、8254與外設的接口引線</p><p>  CLKO~CLK2:時鐘輸入信號;GATE0~GATE2:門控輸入信號;OUT0~OUT2:計數(shù)輸出端。</p><p><b>  3、定時與計數(shù)方式</b></p><p><b> ?。ǘ﹥?nèi)部結構</b><

35、;/p><p>  數(shù)據(jù)總線緩沖器 讀/寫邏輯電路 控制字寄存器 計數(shù)器。</p><p>  (三)8254方式控制字</p><p>  定時/計數(shù)器8254的每個計數(shù)通道根據(jù)CPU發(fā)命令寫入控制寄存器的控制字確定工作方式和計數(shù)格式。8254控制字的格式如下所示:</p><p>  D7、D6:計數(shù)器選擇位SC1、SC0。8254的3

36、個計數(shù)器相互獨立,并且都有一個控制寄存器。但這三個控制寄存器占用同一個端口地址,即A1A0=11;</p><p>  D5、D4:讀/寫指示位RW1、RW0。CPU向某個計數(shù)器寫入初值和讀取它們的當前值時不同的格式;</p><p>  D3、D2、D1:工作方式選擇位M2、M1、M0。8254有6種工作方式,選擇哪種工作方式由M2、M1、M0編碼確定;</p><p

37、>  DO:數(shù)值計數(shù)格式,用來選擇計數(shù)格式。DO=O,計數(shù)器按二進制格式計數(shù);D0=1,計數(shù)器按BCD碼格式計數(shù)。</p><p>  2.2.3 8259簡介</p><p>  8259是一種可編程的中斷控制器。每塊芯片可管理8級向量中斷,同時,可通過多片級連實現(xiàn)多達64級的中斷管理。 中斷控制器8259有四種主要工作方式,即全嵌套、循環(huán)優(yōu)先級、特定屏蔽和程序查詢方式。

38、同時,它還有一4種從屬工作方式,即結束中斷、讀狀態(tài)、中斷請求觸發(fā)和數(shù)據(jù)緩沖方式。</p><p>  1. 8259的工作方式</p><p><b> ?。?)特殊屏蔽方式</b></p><p>  在正常情況下,當一個中斷請求被響應時,8259將被禁止所有同級及更低優(yōu)先級中斷請求這就稱為一般屏蔽方式。但是,在一特殊情況下,希望也允許較低

39、優(yōu)先級的中斷請求產(chǎn)生中斷。</p><p><b>  (2)中斷結束</b></p><p>  中斷結束分自動結束和利用命令結束</p><p><b> ?。?)優(yōu)先級循環(huán)</b></p><p>  它有兩種優(yōu)先級規(guī)定:循環(huán)優(yōu)先級和固定優(yōu)先級。</p><p>  固

40、定優(yōu)先級規(guī)定8個中斷源以IR0的優(yōu)先級最高依次降低。</p><p>  循環(huán)優(yōu)先級有3個結構:</p><p>  自動優(yōu)先級循環(huán)用于中斷源具有相等優(yōu)先級的情況。</p><p>  指定優(yōu)先級循環(huán)可以利用命令一次性改變優(yōu)先級。</p><p>  自動結束方式下的優(yōu)先級循環(huán),其優(yōu)先權控制方式與自動優(yōu)先級循環(huán)的相同。</p>

41、<p><b> ?。?)查詢狀態(tài)</b></p><p>  通過將操作命令字OCW3中的P位置1,可以查詢8259的狀態(tài)。</p><p>  2 . 8259的內(nèi)部控制字</p><p>  8259工作之前必須通過CPU來命令它。</p><p>  CPU命令分為兩大類:一類是初始化命令字(ICW),

42、主要是為了讓8259處于初始化狀態(tài);另一類是操作命令字(OCW),使初始化的8259去執(zhí)行具體的某種操作方式。</p><p><b> ?、懦跏蓟钭?lt;/b></p><p>  初始化命令字ICW1(寫入偶地址)</p><p><b>  1:需要ICW4</b></p><p><b

43、>  0:不需要ICW4</b></p><p>  1:單片8259 </p><p>  0:多片8259級聯(lián)</p><p><b>  1:間隔為4</b></p><p><b>  0:間隔為8</b></p><p><b&g

44、t;  1:電平觸發(fā)</b></p><p><b>  0:邊沿觸發(fā)</b></p><p>  8080/85模式下,中斷</p><p><b>  低口低8編程位</b></p><p>  圖2.4 8259初始化命令字ICW1</p><p>  ②

45、 初始化命令字ICW2(寫入奇地址)</p><p>  8086/88模式下,僅用ICW2提供不同中斷源的中斷向量碼。當中斷響應時,根據(jù)中斷向量表獲得入口地址。</p><p> ?、?初始化命令字ICW3(寫入奇地址)</p><p>  該命令字用于多片8259的級聯(lián)。</p><p>  1:相應IR接從屬8259</p>

46、<p><b>  0:不接8259</b></p><p><b>  主控ICW3</b></p><p><b>  3位編碼對應從屬</b></p><p>  8259接主控的IR編號 </p><p><b>  從屬ICW3</b&g

47、t;</p><p>  圖2.5 8259初始化命令字ICW3</p><p> ?、?初始化命令字ICW4(寫入奇地址)</p><p>  [2] 操作命令字OCW (可單獨使用)</p><p>  對8259初始化之后,該芯片就進入工作狀態(tài),準備好接收IR端進入的中斷請求。</p><p>  操作命令字O

48、CW1(寫入奇地址)</p><p>  它用于設置對8259中斷的屏蔽操作。該八位的操作字的某一位為1時,它就屏蔽相對應的IR輸入。</p><p>  操作命令字OCW2(寫入偶地址)</p><p>  該命令字用來設置優(yōu)先級是否循環(huán)、循環(huán)的方式及中斷結束的方式。</p><p><b>  編碼對應IR的</b>

49、</p><p><b>  最低優(yōu)先級</b></p><p>  0 0 1 一般EOI</p><p>  0 1 1 特殊EOI 中斷結束命令</p><p>  1 0 1 循環(huán)優(yōu)先級的一般EOI命令</p><p&

50、gt;  1 0 0 在自動EOI下置循環(huán)優(yōu)先級 自動循環(huán) </p><p>  0 0 0 在自動EOI下清循環(huán)優(yōu)先級</p><p>  1 1 1 循環(huán)優(yōu)先級的特殊EOI命令</p><p>  1 1 0 設置優(yōu)先級 特殊

51、循環(huán)</p><p>  0 1 無效</p><p>  圖2.6 8259初始化命令字OCW2</p><p><b>  第三章 硬件設計</b></p><p><b>  3.1 設計思路</b></p><p>  設計倒計時秒表,利用8255A

52、與LED數(shù)碼管相連,構成顯示電路。其中B端口與LED的位線相連,用于控制數(shù)字的輸入,A端口與LED顯示器的段控制口相連,并且通過循環(huán)右移來完成動態(tài)顯示的效果。</p><p>  其中片選接到系統(tǒng)總線的IOY0口。利用8254定時器控制一秒的時間進行倒計時,8254采用方式3輸出方波,用兩個計數(shù)器進行分頻,將有系統(tǒng)提供的1MHZ進行兩次分頻得到1HZ的頻率,即1s。通過尋找上升沿得到1s鐘的時間,完成每過1s減一

53、次數(shù)的效果。再將8254輸出的方波接到8255的PC0接口,即8255采用81H工作方式字,A、B端口輸出,C端口輸入。</p><p>  再利用8259產(chǎn)生中斷,每次按一次開關就進入循環(huán)延時程序,再按一次開關中斷結束,跳出循環(huán)程序。即通過開關控制倒計時的暫停和繼續(xù)。</p><p><b>  3.2 電路原理圖</b></p><p>&

54、lt;b>  8254</b></p><p>  8255A LED顯示器</p><p><b>  圖3.1電路原理圖</b></p><p><b>  第四章 軟件設計</b></p><p>  4.1 顯示電路流程圖</p>

55、<p>  圖4.1顯示電路流程圖</p><p>  4.2 秒控制電路流程圖</p><p>  圖4.1 秒控制電路流程圖</p><p>  4.3 匯編指令介紹</p><p><b>  一、數(shù)據(jù)傳送指令</b></p><p>  1、通用數(shù)據(jù)傳送指令</p>

56、;<p>  MOV(Move)傳送</p><p>  PUSH(Push onto the stack)進棧</p><p>  POP(Pop from the stack)出棧</p><p><b>  MOV指令</b></p><p>  格式為:MOV  DST,SRC</p

57、><p>  執(zhí)行的操作:(DST)<-(SRC)</p><p><b>  PUSH進棧指令</b></p><p>  格式:PUSH  SRC</p><p>  執(zhí)行的操作:(SP)<-(SP)-2</p><p>  ((SP)+1,(SP))<-(SRC)&l

58、t;/p><p><b>  .POP出棧指令</b></p><p>  格式為:POP  DST</p><p>  執(zhí)行的操作:(DST)<-((SP+1),(SP))</p><p>  (SP)<-(SP)+2</p><p>  2、累加器專用傳送指令</p&g

59、t;<p>  IN(Input)  輸入</p><p>  OUT(Output)  輸出</p><p>  這組指令只限于使用累加器AX或AL傳送信息.</p><p><b>  IN 輸入指令</b></p><p>  長格式為: IN  AL,PORT(字節(jié))&

60、lt;/p><p>  IN  AX,PORT(字)</p><p>  執(zhí)行的操作: (AL)<-(PORT)(字節(jié))</p><p>  (AX)<-(PORT+1,PORT)(字)</p><p>  短格式為:IN  AL,DX(字節(jié))</p><p>  IN  AX,D

61、X(字)</p><p>  執(zhí)行的操作: AL<-((DX))(字節(jié))</p><p>  AX<-((DX)+1,DX)(字)</p><p><b>  OUT 輸出指令</b></p><p>  長格式為: OUT  PORT,AL(字節(jié))</p><p>  OU

62、T   PORT,AX(字)</p><p>  執(zhí)行的操作:(PORT)<-(AL)(字節(jié))</p><p>  (PORT+1,PORT)<-(AX)(字)</p><p>  短格式為: OUT  DX,AL(字節(jié))</p><p>  OUT  DX,AX(字)</p

63、><p>  執(zhí)行的操作:((DX))<-(AL)(字節(jié))</p><p>  ((DX)+1,(DX))<-AX(字)</p><p>  3、有效地址送寄存器指令</p><p>  LEA(Load effective address)有效地址送寄存器</p><p>  LDS(Load DS with

64、 Pointer)指針送寄存器和DS</p><p>  LES(Load ES with Pointer)指針送寄存器和ES</p><p>  LEA 有效地址送寄存器</p><p>  格式為: LEA   REG,SRC</p><p>  執(zhí)行的操作:(REG)<-SRC</p><p

65、>  指令把源操作數(shù)的有效地址送到指定的寄存器中</p><p>  LDS 指針送寄存器和DS指令</p><p>  格式為: LDS  REG,SRC</p><p>  執(zhí)行的操作:(REG)<-(SRC)</p><p>  (DS)<-(SRC+2)</p><p>  把源操作

66、數(shù)指定的4個相繼字節(jié)送到由指令指定的寄存器及DS寄存器中.該指令常指定SI寄存器。</p><p>  LES 指針送寄存器和ES指令</p><p>  格式為: LES  REG,SRC</p><p>  執(zhí)行的操作:(REG)<-(SRC)</p><p>  (ES)<-(SRC+2)</p>&

67、lt;p>  把源操作數(shù)指定的4個相繼字節(jié)送到由指令指定的寄存器及ES寄存器中.該指令常指定DI寄存器</p><p>  4、標志寄存器傳送指令</p><p>  LAHF(Load AH with flags)標志送AH</p><p>  SAHF(store AH into flags)AH送標志寄存器</p><p>  P

68、USHF(push the flags) 標志進棧</p><p>  POPF(pop the flags) 標志出棧</p><p>  LAHF 標志送AH</p><p><b>  格式為:LAHF</b></p><p>  執(zhí)行的操作:(AH)<-(PWS的低字節(jié))</p><p&

69、gt;  SAHF AH送標志寄存器格式為:SAHF</p><p>  執(zhí)行的操作:(PWS的低字節(jié))<-(AH)</p><p>  PUSHF 標志進棧</p><p><b>  格式為:PUSHF</b></p><p>  執(zhí)行的操作:(SP)<-(SP)-2</p><p&

70、gt;  ((SP)+1(SP))<-(PSW)</p><p><b>  POPF 標志出棧</b></p><p><b>  格式為: POPF</b></p><p>  執(zhí)行的操作:(PWS)<-((SP)+1,(SP))</p><p>  (SP)<-(SP+2)&

71、lt;/p><p><b>  二、算術指令</b></p><p><b>  1、加法指令</b></p><p>  ADD(add)加法</p><p>  ADC(add with carry)帶進位加法</p><p>  INC(increment)加1</p

72、><p><b>  ADD  加法指令</b></p><p>  格式:ADD   DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(SRC)+(DST)</p><p>  ADC  帶進位加法指令</p><p>  格式: 

73、;ADC   DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(SRC)+(DST)+CF</p><p>  .ADD  加1指令</p><p>  格式:INC   OPR</p><p>  執(zhí)行的操作:(OPR)<-(OPR)+1</p>&l

74、t;p><b>  2、減法指令</b></p><p>  SUB(subtract)減法</p><p>  SBB(subtract with borrow)帶借位減法</p><p>  DEC(Decrement)減1</p><p>  NEG(Negate)求補</p><p>

75、;  CMP(Compare)比較</p><p><b>  SUB  減法指令</b></p><p>  格式: SUB  DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(DST)-(SRC)</p><p>  SBB  帶借位減法指令</p>&

76、lt;p>  格式: SBB  DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(DST)-(SRC)-CF</p><p>  DEC  減1指令格式:  DEC  OPR</p><p>  執(zhí)行的操作:(OPR)<-(OPR)-1</p><p><b>

77、  NEG  求補指令</b></p><p>  格式:NEG  OPR</p><p>  執(zhí)行的操作:(OPR)<- -(OPR)</p><p><b>  CMP  比較指令</b></p><p>  格式:CMP  OPR1,OPR2</p&g

78、t;<p>  執(zhí)行的操作:(OPR1)-(OPR2)</p><p>  該指令與SUB指令一樣執(zhí)行減法操作,但不保存結果,只是根據(jù)結果設置條件標志。</p><p><b>  3、乘法指令</b></p><p>  MUL(Unsigned Multiple)無符號數(shù)乘法</p><p>  IMU

79、L(Signed Multiple)帶符號數(shù)乘法</p><p>  MUL 無符號數(shù)乘法指令</p><p>  格式: MUL  SRC</p><p><b>  執(zhí)行的操作:</b></p><p>  字節(jié)操作數(shù):(AX)<-(AL)*(SRC)</p><p>  字操

80、作數(shù):(DX,AX)<-(AX)*(SRC)</p><p>  IMUL 帶符號數(shù)乘法指令</p><p>  格式: IMUL  SRC</p><p>  執(zhí)行的操作:與MUL相同,但必須是帶符號數(shù),而MUL是無符號數(shù)。</p><p><b>  4、除法指令</b></p><

81、;p>  DIV(Unsigned divide)無符號數(shù)除法</p><p>  IDIV(Signed divide)帶符號數(shù)除法CBW(Convert byte to word)字節(jié)轉換為字</p><p>  CWD(Contert word to double word)字轉換為雙字</p><p>  DIV  無符號數(shù)除法指令</

82、p><p>  格式:DIV  SRC</p><p><b>  執(zhí)行的操作:</b></p><p>  字節(jié)操作:(AL)<-(AX)/(SRC)的商</p><p>  (AH)<-(AX)/(SRC)的余數(shù)</p><p>  字操作:(AX)<-(DX,AX)/

83、(SRC)的商</p><p>  (AX)<-(DX,AX)/(SRC)的余數(shù)</p><p>  IDIV  帶符號數(shù)除法指令</p><p>  格式:DIV  SRC</p><p>  執(zhí)行的操作與DIV相同,但操作數(shù)必須是帶符號數(shù),商和余數(shù)也均為帶符號數(shù),且余數(shù)的符號與被除數(shù)的符號相同。</p>

84、;<p>  CBW 字節(jié)轉換為字指令</p><p><b>  格式:CBW</b></p><p>  執(zhí)行的操作:AL的內(nèi)容符號擴展到AH.即如果(AL)的最高有效位為0,則(AH)=00;如(AL)的最高有效位為1。則(AH)=0FFH</p><p>  CWD 字轉換為雙字指令</p><p>

85、;<b>  格式:CWD</b></p><p>  執(zhí)行的操作:AX的內(nèi)容符號擴展到DX,即如(AX)的最高有效位為0,則(DX)=0;否則(DX)=0FFFFH。</p><p><b>  三、邏輯指令</b></p><p><b>  1、邏輯運算指令</b></p><

86、;p>  AND(and)          邏輯與</p><p>  OR(or)           邏輯或</p><p>  NOT(not)   

87、0;     邏輯非</p><p>  XOR(exclusive or)異或</p><p>  TEST(test)       測試</p><p>  AND  邏輯與指令</p><p>  格式:AND 

88、60; DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(DST)^(SRC)</p><p><b>  OR  邏輯或指令</b></p><p>  格式:OR   DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(DST)V(SRC)</

89、p><p>  NOT  邏輯非指令</p><p>  格式:  NOT   OPR</p><p>  執(zhí)行的操作:(OPR)<-(OPR)</p><p><b>  XOR  異或指令</b></p><p>  格式:XOR 

90、  DST,SRC</p><p>  執(zhí)行的操作:(DST)<-(DST)V(SRC)</p><p>  TEST  測試指令</p><p>  格式:TEST   OPR1,OPR2</p><p>  執(zhí)行的操作:(DST)^(SRC)</p><p>  兩個操

91、作數(shù)相與的結果不保存,只根據(jù)其特征置條件碼</p><p><b>  2、移位指令</b></p><p>  SHL(shift logical left)          邏輯左移</p><p>  SAL(shift arithmetic le

92、ft)      算術左移</p><p>  SHR(shift logical right)        邏輯右移</p><p>  SAR(shift arithmetic right)     算術右移</p>

93、;<p>  ROL(Rotate left)                 循環(huán)左移</p><p>  ROR(Rotate right)        &

94、#160;       循環(huán)右移</p><p>  RCL(Rotate left through carry)  帶進位循環(huán)左移</p><p>  RCR(Rotate right through carry) 帶進位循環(huán)右移</p><p><b>  3、循環(huán)指令</b&

95、gt;</p><p><b>  LOOP 循環(huán)指令</b></p><p>  格式:LOOP  OPR</p><p>  測試條件:(CX)<>0</p><p>  LOOPZ/LOOPE 當為零或相等時循環(huán)指令</p><p>  格式: LOOPZ(或LOOPE

96、)  OPR</p><p>  測試條件:(CX)<>0且ZF=1</p><p>  LOOPNZ/LOOPNE 當不為零或不相等時循環(huán)指令</p><p>  格式: LOOPNZ(或LOOPNE)  OPR</p><p>  測試條件: (CX)<>0且ZF=0</p>&l

97、t;p>  這三條指令的步驟是:</p><p>  1) (CX)<-(CX)-1</p><p>  2) 檢查是否滿足測試條件,如滿足則(IP)<-(IP)+D8的符號擴充.</p><p><b>  4、子程序</b></p><p><b>  CALL調(diào)用指令</b>

98、</p><p><b>  RET返回指令</b></p><p><b>  5、中斷</b></p><p><b>  INT指令</b></p><p>  格式:INT TYPE或 INT</p><p>  執(zhí)行的操作:

99、(SP)<-(SP)-2</p><p>  ((SP)+1,(SP))<-(PSW)</p><p>  (SP)<-(SP)-2</p><p>  ((SP)+1,(SP))<-(CS)</p><p>  (SP)<-(SP)-2</p><p>  ((SP)+1,(SP))&l

100、t;-(IP)</p><p>  (IP)<-(TYPE*4)</p><p>  (CS)<-(TYPE*4+2)</p><p>  4.4 源程序清單及注釋</p><p>  MY8255_MODE EQU 0606H ;宏定義</p><p>  

101、MY8255_A EQU 0600H </p><p>  MY8255_B EQU 0602H </p><p>  MY8255_C EQU 0604H</p><p>  A8254 EQU

102、06C0H</p><p>  B8254 EQU 06C2H</p><p>  C8254 EQU 06C4H</p><p>  CON8254 EQU 06C6H</p><p>  SSTACKSEGMENT STACK ;堆棧段</p><p&

103、gt;  DW 32 DUP(?)</p><p>  SSTACKENDS </p><p>  DATA SEGMENT ;數(shù)據(jù)段</p><p>  GF DB 9 </p><p>  TT DB

104、(?) </p><p>  QDXSDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;七段顯示定義</p><p>  DB 7FH,6FH</p><p>  DATA ENDS ;代碼段

105、 </p><p>  CODE SEGMENT </p><p>  ASSUME CS:CODE,DS:DATA</p><p>  START: MOV AX,DATA ;初始化

106、</p><p><b>  MOV DS,AX</b></p><p>  MOV BP,00H </p><p>  MOV DX,MY8255_MODE ;選擇8255工作方式</p><p>  MOV AL

107、,81H ;A、B端口輸出C口輸入</p><p>  OUT DX,AL </p><p>  MOV BX,OFFSET QDXS ;將QDXS首地址送入BX</p><p>  MOV DX, CON8254

108、 ;初始化8254</p><p>  MOV AL, 36H ;計數(shù)器0,方式3</p><p>  OUT DX, AL</p><p>  MOV DX, A8254 ;A端口分頻一次</p><p&g

109、t;  MOV AL, 0E8H ;送出1000HZ</p><p>  OUT DX, AL</p><p>  MOV AL, 03H</p><p>  OUT DX, AL</p><p>  MOV DX, CON8254 </p

110、><p>  MOV AL, 76H ;計數(shù)器1,方式3</p><p>  OUT DX, AL </p><p>  MOV DX, B8254 ;B端口第二次分頻</p><p>  MOV AL, 0E8H

111、 ;送出1HZ</p><p>  OUT DX, AL</p><p>  MOV AL, 03H</p><p>  OUT DX, AL</p><p>  PUSH DS ;8259中斷向量表初始化</p><p&g

112、t;  MOV AX, 0000H</p><p>  MOV DS, AX</p><p>  MOV SI, 003CH</p><p>  MOV DX, OFFSET JJSGIR7 ;中斷矢量地址</p><p>  MOV [SI], DX ;填IR

113、Q7的偏移矢量</p><p>  MOV AX, SEG JJSGIR7 ;段地址</p><p>  MOV SI, 003EH</p><p>  MOV [SI], AX ;填IRQ7的段地址矢量</p><p><b>  CLI</b&

114、gt;</p><p><b>  POP DS</b></p><p>  MOV AL, 11H ;初始化主片8259</p><p>  OUT 20H, AL ;ICW1</p><p>  MOV A

115、L, 08H</p><p>  OUT 21H, AL ;ICW2</p><p>  MOV AL, 04H</p><p>  OUT 21H, AL ;ICW3</p><p>  MOV AL, 01H</p><p&

116、gt;  OUT 21H, AL ;ICW4</p><p>  MOV AL, 6FH ;OCW1</p><p>  OUT 21H, AL</p><p>  STI ;中斷開始<

117、;/p><p>  A2: AND BP,01H ;取BP最后一位</p><p>  JZ KZ ;結果為0開始程序</p><p>  JMP REX ;

118、結果不為0進入中斷</p><p>  KZ: CALL DIS ;調(diào)用子程序DIS</p><p>  MOV DX,MY8255_C ;讀取C端口</p><p>  IN AL,DX

119、 </p><p>  AND AL,01H ;取最后一位</p><p>  CMP AL,1 ;AL進行減1指令</p><p>  JNZ ABC

120、 ;結果不為零,跳轉到ABC</p><p>  MOV AH,TT ;TT值送入AH</p><p>  CMP AH,0 ;AH進行減1指令</p><p>  JNZ ABC

121、 ;結果不為零送到ABC</p><p>  PUSH AX ;保護現(xiàn)場</p><p>  DEC GF ;秒個位減1</p><p>  CMP GF,BYTE PTR 0

122、 ;結果與0比</p><p>  JNL ABB ;不小于0跳到ABB</p><p>  MOV GF, 9 ;小于0,秒個位置9</p><p>  ABB: POP AX

123、 ;恢復現(xiàn)場</p><p>  ABC: MOV TT,AL ;AL值給TT</p><p>  JMP A2 ;跳轉到A2</p><p>  DIS: MOV SI,

124、OFFSET GF ;GF的首地址送到SI中</p><p>  MOV CL,0F7H ;CL置11110111H</p><p>  LP1: MOV DX,MY8255_B ;初始8255B端口</p>

125、;<p>  MOV AL,[SI] ;將SI送到第8位</p><p>  MOV AH,0 ;高8位清零</p><p>  MOV DI,BX <

126、/p><p><b>  ADD DI,AX</b></p><p>  MOV AL,[DI] ;B端口控制LED的線控制</p><p><b>  OUT DX,AL</b></p><p>  MOV DX,MY8255_A

127、 ;初始化8255A端口</p><p>  MOV AL,CL ;CL送入AL</p><p><b>  OUT DX,AL</b></p><p>  CALL DLY

128、 ;調(diào)用延時子程序</p><p>  ROR CL,1 ;循環(huán)右移</p><p>  TEST CL,80H ;檢測</p><p>  JZ LP2

129、 ;結果為零,重新開始顯示</p><p>  INC SI ;結果不為零,顯示下一個數(shù)</p><p><b>  JMP LP1</b></p><p><b>  LP2:RET</b></p><p>  DLY:PU

130、SH CX ;延時程序</p><p><b>  PUSH AX</b></p><p>  LP3:MOV CX,000FH</p><p>  T1:MOV AX,009FH</p><p>  T2:DEC AX</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論