微機(jī)課程設(shè)計(jì)_第1頁
微機(jī)課程設(shè)計(jì)_第2頁
微機(jī)課程設(shè)計(jì)_第3頁
微機(jī)課程設(shè)計(jì)_第4頁
微機(jī)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄1.課程設(shè)計(jì)任務(wù)書22.系統(tǒng)設(shè)計(jì)說明52.1建立簡單微機(jī)系統(tǒng)的思路 52.2確定組成各部件的芯片 62.3存儲器芯片,接口芯片與系統(tǒng)總線連接63.系統(tǒng)詳細(xì)原理63.1系統(tǒng)簡介 63.2 8088工作方式的簡介 73.3 系統(tǒng)時(shí)鐘信號 83.4系統(tǒng)復(fù)位信號 83.5地址和數(shù)據(jù)總路線的分離 93.6 系統(tǒng)存儲器空間分配 93.7 i/o接口電路 93.8接口芯片和鍵盤的連接93.9 led顯示器的工作方式 104硬件連接原理圖 115.軟件原理框圖及程序 115.1定義鍵值和左移顯示數(shù)據(jù)流程圖12 5.2計(jì)算器功能 125.3源程序部分145.3.1對應(yīng)鍵值的顯示145.3.2 計(jì)算器176

2、.主要參考文獻(xiàn) 22任務(wù)書題目名稱計(jì)時(shí)器(timer)學(xué)生學(xué)院專業(yè)班級姓 名學(xué) 號1、課程設(shè)計(jì)的內(nèi)容一. 設(shè)計(jì)要求本課程設(shè)計(jì)內(nèi)容包含兩個方面:系統(tǒng)硬件設(shè)計(jì)和軟件編程1 系統(tǒng)硬件設(shè)計(jì) 設(shè)計(jì)8088計(jì)算機(jī)系統(tǒng),系統(tǒng)包含cpu、eprom、ram、pio、中斷控制器和定時(shí)器等芯片。 要求8088工作于最小模式;eprom為16kb、ram為16kb,其地址分別從0f0000h以及00000h開始;8259的地址為30h和31h;8255的地址為60h、61h、62h、63h、64h;8253定時(shí)器的地址為40h、41h、42h、43h。 顯示器采用六個8段數(shù)碼顯示器;鍵盤采用4 * 4矩陣形式,它們

3、由8255控制。 用35*35cm方格紙制圖。2 軟件編程內(nèi)容 顯示器工作于查詢方式,鍵盤工作于中斷方式。 16個按鍵定義的鍵值為:0 f ,按任意鍵在顯示器上顯示對應(yīng)鍵值。 從鍵盤輸入6個數(shù)字使其能夠在顯示器上從右到左逐位顯示。 實(shí)現(xiàn)計(jì)算功能:l 定義鍵盤按鍵:10個數(shù)字鍵(09);六個功能鍵:+、-、*、=、clear。l 實(shí)現(xiàn)五位十進(jìn)制數(shù)以內(nèi)的連加、連減運(yùn)算。l 實(shí)現(xiàn)被除數(shù)(2位)、除數(shù)(1位)的十進(jìn)制連除運(yùn)算。二、課程設(shè)計(jì)的要求與數(shù)據(jù)(1)鞏固和加深對微機(jī)原理及應(yīng)用課程內(nèi)容的認(rèn)識和理解,提高應(yīng)用水平。(2)掌握匯編語言程序的編程方法。(3)熟悉鍵盤控制和七段數(shù)碼管的使用。三、課程設(shè)計(jì)應(yīng)

4、完成的工作3 完成課程設(shè)計(jì)提交設(shè)計(jì)報(bào)告一份。4 提交的設(shè)計(jì)報(bào)告內(nèi)容包括: 設(shè)計(jì)依據(jù)、系統(tǒng)詳細(xì)原理說明(11.5萬字)、系統(tǒng)原理圖 系統(tǒng)軟件框圖、設(shè)計(jì)的軟件等四、課程設(shè)計(jì)進(jìn)程安排序號設(shè)計(jì)各階段內(nèi)容地點(diǎn)起止日期1布置任務(wù)2熟悉各芯片的工作原理和引腳特性3構(gòu)建簡單微機(jī)系統(tǒng)的思路,芯片的布局和排版4各芯片的連線五、應(yīng)收集的資料及主要參考文獻(xiàn)1 許立鋅等編.微型計(jì)算機(jī)原理及應(yīng)用.北京:機(jī)械工業(yè)出版社,20032.許立梓等編微型計(jì)算機(jī)原理及應(yīng)用 -習(xí)題解答、實(shí)驗(yàn)指導(dǎo)及課程設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2003發(fā)出任務(wù)書日期: 年 月 日 指導(dǎo)教師簽名:計(jì)劃完成日期: 年 月 日 基層教學(xué)單位責(zé)任人簽章:主管

5、院長簽章: 2、系統(tǒng)設(shè)計(jì)說明2.1 構(gòu)建簡單微機(jī)系統(tǒng)的思路 微型計(jì)算機(jī)由微處理器,存儲器,接口電路以及連接在這些部件上的總線組成。微處理器,存儲器和所有io設(shè)備之間的信息交換都通過總線進(jìn)行??偩€包括地址總線,數(shù)據(jù)總線和控制總線,他們始于cpu或終于cpu,現(xiàn)代微機(jī)大部分都是這種以總線為中心的結(jié)構(gòu)。8088cpu的地址數(shù)據(jù)總線ad15-ad0和地址狀態(tài)總線a16/s3-a19/s6是復(fù)用的,必須通過地址鎖存器把地址總線和數(shù)據(jù)總線分離。控制總線直接和8088cpu相連,這樣8088cpu就工作在最小工作方式。 微型計(jì)算機(jī)及外圍設(shè)備組成微型計(jì)算機(jī)系統(tǒng)的硬件,外圍設(shè)備必須通過接口電路才能與系統(tǒng)總線相連

6、,因此構(gòu)建一個基于8088cpu的簡單微型計(jì)算機(jī)系統(tǒng)就是工作于最小工作方式的8088cpu系統(tǒng)總線上掛上一定規(guī)模的存儲器和接口電路,然后在把合適的外圍設(shè)備連接到接口電路上。一個基于8088cpu的簡單微型計(jì)算機(jī)系統(tǒng)框圖如圖所示。圖中鍵盤與顯示器作為外圍設(shè)備通過接口芯片與系統(tǒng)總線相連。 ad0 . ad19 cpu wr rdm/io 鎖存器 romram接口芯片鍵盤顯示器譯碼器譯碼器2.2確定組成各部件的芯片選擇芯片的原則是:要求芯片性能/性價(jià)比較高,市場可以買到。對于小型的微型計(jì)算機(jī)系統(tǒng),程序存儲器一般用eprom,隨機(jī)存儲器一般采用sram。接口有簡單接口(例如74ls244,74ls27

7、3)和可編程接口(例如8255a),根據(jù)需要選擇。2.3.存儲器芯片,接口芯片與系統(tǒng)總線的連接存儲器芯片,接口芯片與系統(tǒng)總線的連接就是如何把存儲器芯片和接口芯片掛到系統(tǒng)的三類總線上。存儲器芯片和接口芯片與數(shù)據(jù)總線的連接比較簡單,因?yàn)槭呛唵蜗到y(tǒng),對數(shù)據(jù)總線的負(fù)載能力沒有特別的要求,所以只要把存儲器芯片和接口芯片的數(shù)據(jù)引腳與數(shù)據(jù)總線相應(yīng)各位作并聯(lián)就可以。連接到芯片上的控制總線不多,常用的有io/.reset等信號,這些信號線也都是與各芯片的有關(guān)引腳做并聯(lián)連接。存儲器芯片,接口芯片與地址總線的連接原則上是一樣的:低地址線與存儲器芯片或接口芯片的地址引腳直接并聯(lián)連接,用來作為芯片內(nèi)部單元的選擇,高位地

8、址線經(jīng)譯碼器譯碼后一般連接到芯片的片選端,作為芯片的選擇。一般高位地址線的低位部分作為譯碼器的譯碼輸入,高位部分則作為譯碼器譯碼的許可條件。由于8088cpu的端口地址采用獨(dú)立編址方式,為了區(qū)分是存儲器芯片地址還是接口芯片地址,一定要把io/信號參與到芯片的片選端控制。3:系統(tǒng)詳細(xì)原理說明:3.1 系統(tǒng)簡介用8088cpu構(gòu)成最小模式系統(tǒng)所需要的控制信號由cpu提供,如電路原理圖所示,該系統(tǒng)是由8088cpu,時(shí)鐘信號發(fā)生器8284a,地址鎖存器74ls373,數(shù)據(jù)緩沖器74ls245,存儲和i/o譯碼器74ls138以及存儲器和i/o接口等電路組成。系統(tǒng)所需要的控制信號等均由8088cpu直

9、接產(chǎn)生。其時(shí)鐘由8284a時(shí)鐘信號發(fā)生器提供,系統(tǒng)各部件間的信號均通過系統(tǒng)數(shù)據(jù)總線,地址總線和控制總線進(jìn)行傳輸。3.2 8088工作方式簡介當(dāng)把8088的mn/引腳接到+5v時(shí),8088cpu工作于最小工作方式。所謂最小工作方式,就是系統(tǒng)中只有一個微處理器8088。在這種系統(tǒng)中所有的總線控制信號都直接由8088產(chǎn)生,系統(tǒng)中總線控制邏輯電路被減小到最小,這種方式適合于較小規(guī)模的應(yīng)用。最小方式下,24-31引腳功能:(1)中斷響應(yīng)信號(輸出,低電平有效)是cpu對外設(shè)的中斷請求的回答信號。對于8088來說,信號實(shí)際是位于連續(xù)周期中的兩個負(fù)脈沖,在每個中斷響應(yīng)周期的t2、t3和tw狀態(tài),為低電平。第

10、一個負(fù)脈沖通知外圍設(shè)備的接口,它發(fā)出的中斷請求已經(jīng)得到允許;外設(shè)接口收到第二個負(fù)脈沖后,將中斷類型碼送往數(shù)據(jù)總線。(2)ale地址鎖存允許信號(輸出,高電平有效)ale是cpu在每個總線周期的t1狀態(tài)發(fā)出的,其有效電平表示當(dāng)前在地址/數(shù)據(jù)復(fù)用線上輸出的是地址信息,利用它的下降沿把地址信號和信號鎖存在74ls373地址鎖存器中。ale不能被浮置。(3)數(shù)據(jù)允許信號(輸出,低電平有效,三態(tài))有效表示cpu準(zhǔn)備好接受和發(fā)送數(shù)據(jù),是cpu提供雙向數(shù)據(jù)收發(fā)器74ls245的選通信號,在每個訪問存儲器或訪問i/o周期,或中斷相應(yīng)周期均有效。在dma下,被浮置為高阻態(tài)。(4)dt/數(shù)據(jù)收發(fā)信號(輸出,三態(tài))

11、在系統(tǒng)使用雙向收發(fā)器74ls245時(shí),用其控制數(shù)據(jù)的傳送方向。如果dt/為高電平,則進(jìn)行數(shù)據(jù)發(fā)送,如果dt/為低電平,則進(jìn)行數(shù)據(jù)接收.在dma下,被浮置為高阻態(tài)。(5)/io存儲器/io控制信號(輸出,三態(tài))用于區(qū)分是訪問存儲器(低電平),還是訪問i/o(高電平),通常/io被接至存儲器或接口芯片的片選端。當(dāng)dma時(shí),被浮置為高阻態(tài)。(6)wr寫信號(輸出,低電平有效,三態(tài))wr有效時(shí),表示cpu正在執(zhí)行存儲器或訪問存儲器。在任何寫周期,wr只在t2、t3、tw有效,在dma時(shí),wr被浮置為高阻態(tài)。(7)hold總線保持請求信號(輸入,高電平有效)它是系統(tǒng)中的其他總線主控部件向cpu發(fā)出的請求

12、占用總線的申請信號。(8)hlda總線保持響應(yīng)信號(輸出,高電平有效)它是cpu對系統(tǒng)中其他總線主控部件向其請求總線使用權(quán)的響應(yīng)信號。3.3 8284時(shí)鐘信號發(fā)生器時(shí)鐘發(fā)生器8284除了提供頻率恒定的單相時(shí)鐘脈沖clk給cpu外還具有系統(tǒng)復(fù)位信號reset產(chǎn)生電路和準(zhǔn)備好信號ready控制電路。如果f/c接+5v,則由fei輸入外加脈沖,如果f/c接地,由x1和x2連接的石英晶體震蕩器提供脈沖源,圖中有石英晶體振蕩器提供輸入脈沖給8284.3.4.系統(tǒng)復(fù)位信號 圖中,由r(560k)、c1(10uf)和d1同8284a組成了系統(tǒng)復(fù)位電路,當(dāng)系統(tǒng)上電工作時(shí),系統(tǒng)電源通過r、c1是res端電位由低

13、變高,該信號經(jīng)8284a內(nèi)部電路處理后,輸出的reset信號作為8088cpu的復(fù)位信號。 根據(jù)cpu 對reset 信號的要求,系統(tǒng)上電后8284a輸出reset由低電平變?yōu)楦唠娖降膹?fù)位時(shí)間要大于4個時(shí)鐘周期,因此合理選擇r、c1數(shù)值是確保8088cpu上電可靠復(fù)位的重要條件。復(fù)位電路d1是用于當(dāng)系統(tǒng)電源瞬間掉電時(shí),將c1中存儲的電荷快速放掉,這樣當(dāng)系統(tǒng)再次上電時(shí),即保證r和c1的充電時(shí)間使8284a輸出的reset時(shí)間大于4個時(shí)鐘周期,確保cpu可靠復(fù)位,k為手動復(fù)位開關(guān)。3.5.地址和數(shù)據(jù)總線的分離 根據(jù)8088讀寫周期,cpu在t1時(shí)鐘周期輸出的地址鎖存信號ale將ad15-ad0和a

14、19s6-a16s3輸出的地址信息鎖存在圖中的地址鎖存器74ls373,地址鎖存器輸出的地址信號通過系統(tǒng)地址總線同存儲器和io接口地址輸入端連接,并在t2t4時(shí)鐘周期內(nèi)保持由t1時(shí)鐘周期輸出的地址信息不變,直到下個總線周期的t1時(shí)鐘周期才發(fā)生變化。在t2-t4總線周期,cpu通過系統(tǒng)數(shù)據(jù)總線同存儲器或io接口交換數(shù)據(jù)。若數(shù)據(jù)總線負(fù)載較重時(shí),cpu通過輸出den和dt/r信號,對數(shù)據(jù)收/發(fā)驅(qū)動器74ls245的輸出輸入數(shù)據(jù)進(jìn)行控制。即den有效,dt/r為低電平時(shí),cpu通過74ls245讀取系統(tǒng)存儲器或i/o接口中的數(shù)據(jù)。當(dāng)den有效,dt/r為高電平時(shí),cpu通過74ls245對系統(tǒng)存儲器或

15、i/o接口寫入數(shù)據(jù)。3.6、系統(tǒng)存儲器空間分配圖中rom用于系統(tǒng)存儲常駐程序,ram用于存放用戶非常駐程序,數(shù)據(jù)或作為系統(tǒng)堆棧區(qū)使用。根據(jù)題目要求的容量選用一片eprom27128和兩片ram6264,八位數(shù)據(jù)總線和cpu的低八位數(shù)據(jù)總線相連,cpu地址總線的a13-a0用于芯片的字選和存儲器的地址線相連,a19-a14譯碼后用做片選,和io引腳經(jīng)過譯碼器譯碼后用作片選。3.7.i/o接口電路接口電路是cpu和外圍設(shè)備進(jìn)行數(shù)據(jù)交換的緩沖區(qū)域,圖中的8255a是一個有3個數(shù)據(jù)口、1個控制/狀態(tài)口的8位并行輸入輸出接口可編程芯片,能接通鍵盤、打印機(jī)、顯示器等外圍設(shè)備等。8255a的數(shù)據(jù)線接系統(tǒng)總線

16、的低八位,控制端口和系統(tǒng)的相應(yīng)控制端口相連3.8接口芯片和鍵盤的連接圖中有2行4列,4根線于pa口相連,2根列線與pb口的pb2,pb3相連。按鍵設(shè)置在行、列交點(diǎn)處(數(shù)字或字符為其鍵號),行、列線分別連接到按鍵開關(guān)的兩端。當(dāng)列線通過上拉電阻接+5v時(shí),就被鉗位在高電平狀態(tài)。鍵盤中有無鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來判斷的。這就是:給行線所有i/o線均置成低電平,然后讀入列線電平狀態(tài)。如果有鍵按下,總會有一根列線電平被拉至低電平,從而使列線輸入不全為1。鍵盤中哪一個鍵按下是由行線逐行置低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為1

17、,則所按下之鍵不在次行。如果不全為1,則所按下之鍵必在次行。而且是在與0電平行線相交點(diǎn)上的那個鍵。鍵盤的工作方式采用編程掃描工作方式,即通過調(diào)用鍵盤子程序來響應(yīng)鍵輸入的要求,在鍵盤掃描子程序中完成下述功能:1) 判斷鍵盤上有無鍵按下。其方法是先使pa3pa60,然后讀pb2、pb3的狀態(tài),若全為1,則鍵盤中無鍵按下;若不全為1,則說明鍵盤中有鍵按下。2) 去除按鍵的抖動影響。對于由機(jī)械觸點(diǎn)構(gòu)成的按鍵,由于機(jī)械觸點(diǎn)的彈性作用,觸點(diǎn)在閉合及斷開瞬間有一個抖動過程,一般為510ms時(shí)間。為了消除抖動影響可作這樣處理:當(dāng)判斷有鍵按下后,軟件延時(shí)一段時(shí)間在判斷鍵盤狀態(tài),如果仍有鍵按下狀態(tài),則認(rèn)為有一個確

18、定的鍵按下,否則按鍵抖動處理。3) 求按下鍵的鍵值及鍵號。鍵盤上的每個鍵都對應(yīng)一個鍵值。鍵值的組成:低8位為掃描該鍵時(shí)的行線輸出值,高8位為該鍵按下時(shí)的列線輸入值(有效位為0,其余位令其為1)。由于鍵盤中鍵號排列無規(guī)律,不能通過對鍵值直接運(yùn)算得到鍵號。因此必須先判斷按下鍵是使pb2=0還是pb3=0,然后再查為零的列線上鍵按下時(shí)其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵的鍵值及鍵號的目的是使程序轉(zhuǎn)到相應(yīng)的地址去完成該鍵的操作。一般,對數(shù)字鍵就是直接將該號送到顯示緩沖區(qū)進(jìn)行顯示,對功能鍵則必須先找到該功能鍵處理程序入口地址,并轉(zhuǎn)去執(zhí)行該鍵的命令。因此當(dāng)鍵號求到后,還必須找到功能處理

19、入口。4) 為保證鍵閉合依次cpu僅進(jìn)行依次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號送累加器ah。3.9 led顯示器的工作方式led數(shù)碼管是目前最常用的數(shù)字顯示器,圖a、b為共陰管和共陽管的電路,圖c為兩種不同出線形式的引出腳功能圖。一個led數(shù)碼管可用來顯示一位09十進(jìn)制數(shù)和一個小數(shù)點(diǎn)。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為22.5v,每個發(fā)光二極管的點(diǎn)亮電流在510ma。led數(shù)碼管要顯示bcd碼所表示的十進(jìn)制數(shù)字就需要有一個專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當(dāng)?shù)尿?qū)動能力。圖a 共陰連

20、接(“1”電平驅(qū)動) 圖b 共陽連接(“0”電平驅(qū)動)圖c led數(shù)碼管符號及引腳功能圖led顯示器有靜態(tài)和動態(tài)兩種工作方式led顯示器工作在靜態(tài)顯示方式下,共陰極或共陽極連接在一起,然后接地或+5v;每位的段選線(a,b,g,h)與一個8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。在多位led顯示時(shí),為了化簡電路,降低成本,將所有位的斷選線并聯(lián)在一起,由一個8位的i/o口控制,即控制段選碼而共陰極或共陽極點(diǎn)分別由相應(yīng)的i/o線控制即控制位選碼,這就是動態(tài)顯示。4位led動態(tài)顯示電路只需一個8位i/o口及一個4位i/o口,其中8個i/o控制段選碼,4位

21、i/o控制位選。進(jìn)行4位字符顯示時(shí),采用掃描顯示方式,即在每一瞬間只使某一位顯示相應(yīng)字符,在此瞬間,段選控制i/o口輸出相應(yīng)字符段選碼,位選控制i/o口在該顯示位送入選通電平(共陰極送低電平,共陽極送高電平),以保證該位顯示相應(yīng)字符。如此輪流,使每位顯示該位應(yīng)顯示字符,并保持延遲一段時(shí)間(15ms),以造成視覺暫留效果。不斷循環(huán)送出相應(yīng)的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。4.硬件連接原理圖(見附頁)5.軟件原理框圖和程序5.1定義鍵值和左移顯示數(shù)據(jù)流程圖開始8255/8259初始化有無中斷顯示對應(yīng)鍵盤值ny 5.2計(jì)算器功能開始8255/8259初始化有無中斷顯示掃描是數(shù)字鍵?有標(biāo)

22、志?加號?減號?設(shè)加標(biāo)志設(shè)減標(biāo)志清零顯示器,清標(biāo)志位保存數(shù)據(jù)放鍵?顯示掃描清零顯示器除號?yyyyyyynnnnnn設(shè)除標(biāo)志等號?n進(jìn)行加、減、除運(yùn)算,保存結(jié)果先于運(yùn)算符清零十六進(jìn)制轉(zhuǎn)換yynn關(guān)中斷開中斷5.3 源程序部分說明:顯示鍵盤單個對應(yīng)數(shù)值是顯示六個數(shù),因而合并成一個程序來寫,而那個十進(jìn)制與十六進(jìn)制的轉(zhuǎn)換與十六進(jìn)制的加減除運(yùn)算可以合并成一個,用那個等號來區(qū)分即可,從流程圖可以看出他們的大概實(shí)現(xiàn)過程。至于那個十進(jìn)制轉(zhuǎn)化為十六進(jìn)制的原理是像實(shí)驗(yàn)課程設(shè)計(jì)那樣,在實(shí)驗(yàn)課程設(shè)置我們也是同樣用一個鍵定義兩種功能,具體的方法見實(shí)驗(yàn)課程設(shè)計(jì)的有關(guān)部分。5.3.1對應(yīng)鍵值的顯示stack segmen

23、t stack dw 64 dup(?)stack endsdata segmenttable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,6fh,77h,7ch,39h,5eh,79h,71hvar1 db 0a0h,80h,60h,40h,20h,00h;存放片選代碼,從右邊到左邊的led數(shù)碼管var2 db 3fh,3fh,3fh,3fh,3fh,3fh ;將要顯示的數(shù)據(jù)的存放段data endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax cli m

24、ov al,80h out 63h,al mov al,0f0h out al,62h push ds mov ax,0000h mov ds,ax mov ax,offset irq0 mov si,003ch mov si,ax mov ax,cs pop ds ;8255初始化和中斷向量表的設(shè)置 in al,31h and al,0feh out 31h,al ;寫ocw1a1: sti call disp ;調(diào)用顯示功能 hlt jump a1irq0:mov al,01h out 62h,al in al,61h cmp al,0e0h jnz key_2 ;測試第二個鍵 call

25、key1 ;對第一個鍵定義數(shù)值和顯示 ;同樣地對其他鍵進(jìn)行定義和顯示 disp:mov si,offset var1 ;顯示子程序,si為選通的 mov di,offset var2 mov dl,di+5 cmp dl,3fh jnz dir6mov dl,di+4 cmp dl, 3fh jnz dir5mov dl,di+3 cmp dl,3fh jnz dir4 mov dl,di+2 cmp dl, 3fh jnz dir3mov dl,di+1 cmp dl,3fh jnz dir2jmp dir1dir6:mov cx,0006h jmp dirdir5:mov cx,0005h

26、 jmp dirdir4:mov cx,0004h jmp dirdir3:mov cx,0003h jmp dirdir2:mov cx,0002h jmp dirdir1:mov cx,0001h jmp dirdir: mov al,siout 62h,al;mov al,diout 60h,alcall timeinc siinc diloop dirret;-time: push ax ;延時(shí)子程序 push cx mov cx,0002htime1: mov ax,0020htime2: dec axjnz time2loop time1pop cxpop axret;-sttk:

27、 call disp ;放鍵測試程序 mov al,00hout 61h,alin al,60hand al,0chcmp al,0chjnz sttkjmp a1code ends end start5.3.2 計(jì)算器鍵盤的鍵值+-*=c9876543210stack segment stack dw 64 dup(?)stack endsdata segmenttable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb 7fh,6fh,77h,7ch,39h,5eh,79h,71hvar1 db 0a0h,80h,60h,40h,20h,00h;存放片選代碼,從右

28、邊到左邊的led數(shù)碼管var2 db 3fh,3fh,3fh,3fh,3fh,3fh ;將要顯示的數(shù)據(jù)的存放段var3 db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h ;存放新數(shù)var4 db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h ;存放舊數(shù)data endscode segment assume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax ;中斷測試 ;鍵盤定義(順序如上圖所示) tr: leasi,var3;10進(jìn)制轉(zhuǎn)16進(jìn)制子程序,var3存放著將

29、要被轉(zhuǎn)換的數(shù),var2是用來做顯示用的段,數(shù)字高位對應(yīng)段的高位,底位對應(yīng)段低位leadi,var2clc mov ax,0 mov bx,0mov al,si+5 mov ah,si+4 shl ah,4 add al,ah and ax,000fh mov cx,4 tr1:cwd div 16 mov di+4,al mov al,dl mul 10 mov bl,si+3 add ax,bx dec si dec di loop tr1 mov di,al call disp ;調(diào)用顯示子程序 retad: mov dh,01h ;加法標(biāo)志位lea si,var3 ;加法子程序 lea

30、di,var4 ;var3用于存放新輸入將要被加的數(shù),var4用于存放上次的加出的結(jié)果,由于要進(jìn)位,為了保證運(yùn)算的正確,此程序采用的是兩個不超過5位的數(shù)字相加(或連加)! clc mov ax,0 mov bx,0 mov cx,3ad1: mov al,si shl al,4 add al,si+1 mov bl,di add bl,di+1 adc al,bl mov ah,al and al,0fh shr ah,4 mov di,al mov di+1,ah inc si inc di loop ad1 mov cx,6 cld lea si,var3 lea di,var2 rep

31、movs ;將其轉(zhuǎn)到顯示段 call disp ;調(diào)用功能程序 ret su: mov dh,02h;設(shè)減法標(biāo)志 lea si,var3 ;減法子程序 lea di,var4 ;var3用于存放新輸入的減數(shù),var4用于存放上次的減出的結(jié)果,由于要借位,為了保證運(yùn)算的正確,此程序不要采用兩個6位的數(shù)字相減(或連減)! clc mov ax,0 mov bx,0 mov cx,3su1: mov bl,si shl bl,4 add bl,si+1 mov al,di add al,di+1 sbb al,bl mov ah,al and al,0fh shr ah,4 mov di,al mov di+1,ah inc si inc di loop su1 mov cx,6 cld lea si,var3 lea di,var2 rep movs ;將其轉(zhuǎn)到顯示段 call disp ;調(diào)用功能程序 retmu: mov dh,03h;乘法標(biāo)志 lea si,var3 ;乘法子程序 lea di,var4 push dx mov dx,0 mov cx,2mu1:mov al

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論