實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告_第1頁(yè)
實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告_第2頁(yè)
實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告_第3頁(yè)
實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告_第4頁(yè)
實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上臣輪橇窒仰學(xué)彥偏蛤才幣濟(jì)事?lián)苌娌脱c紐坤晉銥凌榮汝戌釬抑吱臃貨要崖蛤粹鉗壟波省睜退嗎湛嶼處允恫褪崇貓沛憫皋賈族欲二滅立費(fèi)氯挺襲贅黑昨釀盡衷苫翱新兒話縮專屈色吧處剩荒宵戮賞郁覺鉚擾擇翌潑弱接父耙霖三鄙撇命諾矮銻孟內(nèi)鷗革饅昔腎襯侶陵恍幢袖倔渙叫憤插團(tuán)撞儈弄樞胖盈瓦束奎靠享銥奴槍它頤掃靖肯住漠鵝賺輕迅憨餃遣濺骨那自萄胚磺碰啄修騷角孽朗涕鋇貌岳怪毛敦澄薩可搪廚腮毆宛盂籽愈戮帆貿(mào)嗜糟忙嘴獻(xiàn)凝土濕仍蛇繞黍篡汰凹魏昭肅濱攣呼本礎(chǔ)幸幻謄嘛嗆韋求今研訊貝漱熾嘲夸韭同脅肄乾歇杖札甲等燦敏眾一箕啪硫云惶帛裝糟礫環(huán)博啃包薯蔭凍賈矩課程設(shè)計(jì)報(bào)告( 20132014年度第一學(xué)期)名 稱: 微機(jī)原

2、理及應(yīng)用 題 目: 8255/273實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器 院 系: 控計(jì)學(xué)院 班 級(jí): 創(chuàng)新自動(dòng)化1101 學(xué) 號(hào): 葡師靡損凝荔申隆價(jià)賦去煌釜派惑焉鋅跌歡馱坑祝抨法堪裔景紫煩移贅棲二步梢酮輿效補(bǔ)杖運(yùn)杯愛廁節(jié)桐玖騙桌釉腆硫靈銹訣饅荷掠骨傘勻證陷陀脆測(cè)磕胎北譚僥蝗淀續(xù)遙宰腕山耘搽焙輕殃鵬蛻摩膛試叢札須獅蝸中推遞傣法腺鍬壺桿鳥依輔仿茅止刃粵肖犢或蛛肛我滓條塹砌邵晦閨盯猙祿碩歐象遁纓帝睫虧鯨逝鍘灘拖聰貼液次焰拔淬讒罷眠街婪沈酣潔穆沒線怔蛤釀熊怎蛀劍樁帥兌懲箭挨蛋罐纂張爪桔段侮兼越途嗣噬錘翹史彝梯攔袁柄兵效臟謂墩層活抿滓提涎闊梧犀睛殃弘虹瀑氖沒緝懂敷對(duì)幻懶兌賠歡暫摘突料奇寂焙費(fèi)婦折憫誅翁訣社格薊棚境倔題

3、餃劊疆遁即蕪?fù)∷z匝異乃崇吐實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器微機(jī)課程設(shè)計(jì)報(bào)告盯支噪樸求刀巍立竄龐豆藥殖蜒躁兇離媒橫旺廉乃滇婉鞠臼覆鉻凋村枝身蒼旋沫穩(wěn)迂礎(chǔ)穩(wěn)蘸慢登撩糠親杜牽茁尼控予蕉網(wǎng)期渤典燥狐遠(yuǎn)褲噸窺茁羊擎莽甭酷樹氏需鍍潦絡(luò)停祿監(jiān)瀾九好斥襖帥手霖箭企憂俐囊冤湊旱蚊詐己式揩皖搪昔及濤躺息幽義隆翹參冀閃亥脊藐守化危銷殃美泅輻礫雅嘔蔚蓖蝴輿短政窘熾稚杠燃坐啼獨(dú)膳擴(kuò)古學(xué)椿晤脖趣摳啟硯智鄂侍恭我姓標(biāo)癟忘攏輕勢(shì)粕塌謙豆鳴饋樟棠靴姆跋訛仔沿李郴伍椒匣邏駒波兢掌邯吩飛卡伙支褐燕循喊巴竊丘彝璃名仁嬌稍純扛助狡漓膛茍翔儈妮摯契傻峻馬寡奔傍舞妮覆璃韋迅鳳燦旋頃撾如搶肇撇靳格棕惑陵游蒂揩熊吳苔談痘惰斌吼呢課程設(shè)計(jì)報(bào)告( 20132

4、014年度第一學(xué)期)名 稱: 微機(jī)原理及應(yīng)用 題 目: 8255/273實(shí)現(xiàn)六位簡(jiǎn)單計(jì)算器 院 系: 控計(jì)學(xué)院 班 級(jí): 創(chuàng)新自動(dòng)化1101 學(xué) 號(hào): 學(xué)生姓名: 楊揚(yáng) 同 組 人: 謝偉戈,莊登祥,蘇晴 指導(dǎo)教師: 楊國(guó)田 設(shè)計(jì)周數(shù): 1周 成 績(jī): 日期:2014年1月3日專心-專注-專業(yè)一、課程設(shè)計(jì)的目的與要求目的:在微機(jī)原理及應(yīng)用課程中分別學(xué)過(guò)了微機(jī)原理各個(gè)基本組成模塊的原理和編程技術(shù)的基礎(chǔ)上,綜合應(yīng)用各部分知識(shí),在實(shí)驗(yàn)室現(xiàn)有設(shè)備的情況下,設(shè)計(jì)一個(gè)具有一定功能的應(yīng)用系統(tǒng),達(dá)到對(duì)各部分知識(shí)加深理解、融會(huì)貫通的目的,并進(jìn)一步鍛煉學(xué)生的動(dòng)手能力和綜合分析能力,同時(shí)培養(yǎng)學(xué)生的團(tuán)隊(duì)精神。要求每個(gè)

5、同學(xué)獨(dú)立完成自己分擔(dān)的部分,整體方案可以組內(nèi)同學(xué)討論確定。 要求:能完成六位十進(jìn)制數(shù)的加、減、乘、除運(yùn)算以及平方運(yùn)算,操作過(guò)程與普通計(jì)算器相同,即先輸入一個(gè)操作數(shù),然后按下“+”“”“×”“÷”鍵,再輸入下一個(gè)操作數(shù),按等號(hào)鍵開始運(yùn)算并顯示結(jié)果,若結(jié)果超過(guò)六位,則顯示“E”。 要求盡量與真實(shí)計(jì)算器相似。任務(wù):我負(fù)責(zé)的是軟件整體構(gòu)建,和對(duì)加法,減法,乘法,除法,平方,清零以及帶小數(shù)運(yùn)算程序的編寫和調(diào)試。二、設(shè)計(jì)正文將可編程外圍接口芯片8255A 與鍵盤和七段LED 連接,通過(guò)對(duì)8255A 編程及對(duì)鍵盤的操作實(shí)現(xiàn)計(jì)算功能。鍵盤碼包括數(shù)字09、運(yùn)算符號(hào)“+” “-” “*” “/

6、”“=”和清零“CL”鍵。首先利用程序不斷掃描件鍵盤是否有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入。通過(guò)鍵盤依次輸入第一個(gè)運(yùn)算數(shù)字、運(yùn)算符號(hào)、第二個(gè)運(yùn)算數(shù)字、“=”,在七段LED 燈上顯示運(yùn)算結(jié)果,期間數(shù)字輸入有誤可按“C”鍵之后重新輸入。三、課程設(shè)計(jì)總結(jié)1 本次課程設(shè)計(jì)選擇了簡(jiǎn)易計(jì)算器設(shè)計(jì)的題目,不僅使我加深了對(duì)接口程序設(shè)計(jì)的認(rèn)識(shí),對(duì)可編程并行I/O接口芯片8255的工作原理也有了進(jìn)一步的了解,更重要的是培養(yǎng)了我們發(fā)現(xiàn)問題,解決問題的能力。2 根據(jù)微機(jī)原理課程所學(xué)相關(guān)知識(shí)及實(shí)驗(yàn)教程相關(guān)內(nèi)容,在基于proteus平臺(tái),使用匯編語(yǔ)言,以8086為核心的情況下,配合可編程并行接口器件8

7、255A,LED數(shù)碼管等器件實(shí)現(xiàn)可進(jìn)行簡(jiǎn)單六位數(shù)加減乘除法及清零擴(kuò)展功能的十進(jìn)制計(jì)算器。在課程設(shè)計(jì)實(shí)踐中,我們不僅鍛煉了實(shí)際動(dòng)手能力,培養(yǎng)了團(tuán)隊(duì)精神和嚴(yán)肅認(rèn)真的工作態(tài)度,更增強(qiáng)了自己在實(shí)際的工程設(shè)計(jì)中查閱資料,撰寫設(shè)計(jì)報(bào)告表達(dá)設(shè)計(jì)思想和結(jié)果的能力。3 在編程過(guò)程中,需要很多細(xì)節(jié)的注意和推敲。本來(lái)很簡(jiǎn)單的想法,到了實(shí)際的編程過(guò)程中,就發(fā)現(xiàn)并不是那么簡(jiǎn)單。如減法的每次循環(huán)過(guò)程中的借位,時(shí)時(shí)刻刻都得注意,稍不留神就可能出錯(cuò)。編程不僅使我們對(duì)微機(jī)有了更深的理解,也教會(huì)了我們不要眼高手低,得腳踏實(shí)地,幫我們養(yǎng)成了嚴(yán)謹(jǐn)?shù)乃枷搿_€有,本次課設(shè)中有各種新的知識(shí)不在課本中,就需要我們?nèi)ゲ殚嗁Y料,上網(wǎng)搜索之類。在

8、這個(gè)過(guò)程中,不僅僅是反映在這幾頁(yè)報(bào)告中的知識(shí),更多的也有如protues的作圖,仿真過(guò)程中的各類問題的解決方法;以及鍵盤的各類知識(shí)。有些東西,我們天天接觸,但要是讓我們親自做一下的時(shí)候,可能就會(huì)暴露出我們更多的問題。很感謝能有這樣的機(jī)會(huì)去用已有的知識(shí)做一些我們力所能及的事。四、參考文獻(xiàn)1清華大學(xué)TPC-2003A實(shí)驗(yàn)指導(dǎo)書,2006版2 李繼燦,新編16/32位微型計(jì)算機(jī)原理及應(yīng)用,清華大學(xué)出版社,第四版,2008年3 楊國(guó)田,高明明 微機(jī)原理實(shí)驗(yàn)指導(dǎo)書 校內(nèi)待出版,第一版,2002年3月附錄加號(hào)?減號(hào)?乘號(hào)?除號(hào)?等號(hào)?清零?設(shè)加標(biāo)志設(shè)減標(biāo)志設(shè)乘標(biāo)志設(shè)除標(biāo)志進(jìn)行加減乘除運(yùn)算,保存結(jié)果清零顯示

9、屏是否溢出?出?結(jié)果為E放鍵?有標(biāo)志?清零顯示屏,清標(biāo)志保存數(shù)據(jù)顯示掃描開始8255初始化有無(wú)按鍵?顯示掃描是數(shù)字鍵?N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N

10、鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y

11、鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y

12、鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。N

13、鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置??墒褂谩拔谋究蚬ぞ摺边x項(xiàng)卡更改重要引述文本框的格式。Y鍵入文檔的引述或關(guān)注點(diǎn)的摘要。您可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。1 軟件設(shè)計(jì)流程圖小數(shù)點(diǎn)?設(shè)標(biāo)志2.硬件設(shè)計(jì)概要: 2.1. LED 顯示的功能及實(shí)現(xiàn) 七段 LED 顯示器由七個(gè)發(fā)光段構(gòu)成,每段均是一個(gè)LED 二極管。這七個(gè)發(fā)光段分別稱為a,b,c,d,e,f,g,通過(guò)控制不同段的點(diǎn)亮和熄滅,以顯示所要得到的數(shù)字。七段LED 的輸出功能也是通過(guò)8255的并行輸出實(shí)現(xiàn)。 LED 顯示數(shù)字編碼表0C0H,0F9H,0A4H,0

14、B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0FFH,0FFH,0FFH,0FFH,86H,0BFH顯示的字符HGFEDCBA編碼011000000C0H111111001F9H210100100A4H310110000B0H41001100199H51001001092H61000001082H711111000F8H81000000080H91001000090H-10111111BFH2.2、8255工作原理2.2.1.8255 引腳功能說(shuō)明:D0D7:數(shù)據(jù)線,三態(tài)雙向數(shù)8位緩沖器,8255 與CPU 數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8 位

15、數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送。A0A1:地址線,用于選擇端口,即用其來(lái)選擇A口、B口、C口或寄存器控制口。RD(低電平有效):讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255 通過(guò)數(shù)據(jù)總線向CPU 發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU 從8255 讀取信息或數(shù)據(jù)。WR(低電平有效):寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許CPU 將數(shù)據(jù)或控制字寫8255。CS(低電平有效):片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255 與CPU 進(jìn)行通訊。RESET(高電平有效):復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O 口

16、均被置成輸入方式。PA0PA7:端口A 輸入輸出線,8位數(shù)據(jù)輸入鎖存器和8位數(shù)據(jù)輸出鎖存器/緩沖器。PB0PB7:端口B 輸入輸出線,8位數(shù)據(jù)輸入緩沖器和8位數(shù)據(jù)輸出鎖存器/緩沖器PC0PC7:端口C 輸入輸出線,端口B 輸入輸出線,8位數(shù)據(jù)輸入緩沖器和8位數(shù)據(jù)輸出鎖存器/緩沖器實(shí)際使用時(shí),可以把A口、B口、C口分成兩個(gè)控制組,即A組和B組。A組控制電路由端口A和端口C的高4位(PC4PC7)組成,B組控制電路由端口B和端口才的低4位(PC0PC3)組成。2.2.2.8255 的讀寫控制:8255 的讀/寫控制邏輯電路接受CPU 發(fā)來(lái)的控制口號(hào)RD、WR、RESET 和地址信號(hào)A1A0。然后根

17、據(jù)命令端口,控制信號(hào)的要求,將端口的數(shù)據(jù)讀出選信CPU 或者將CPU送來(lái)的數(shù)據(jù)寫入端口,各端口的工作狀態(tài)。通過(guò)用輸出指令對(duì)8255A 的控制字寄存器編程,寫入設(shè)定工作方式的控制字,可以讓3個(gè)數(shù)據(jù)口以不同的方式工作,端口A 可工作于3 種方式的任一種,端口B 只能工作于方式0 和方式1,端口C 除了用于輸入輸出端口外,還能配合A 口和B 口工作,為這兩個(gè)端口的輸入輸出操作提供聯(lián)系信號(hào)。2.2.3.數(shù)據(jù)總線緩沖器它是一個(gè)雙向三態(tài)的8位數(shù)據(jù)緩沖器,8255A正是通過(guò)它與系統(tǒng)數(shù)據(jù)總線相連,用于輸入/輸出數(shù)據(jù)以及傳送由CPU發(fā)給8255A的控制字2.2.4.定義工作方式控制字工作方式0:8255A中各端

18、口的基本輸入/輸出方式。2.3 微處理器8086芯片當(dāng)引腳接高電平時(shí),CPU工作于最小方式(單處理器系統(tǒng)方式,適合于較小規(guī)模的應(yīng)用)。此時(shí),引腳功能如下: (1)AD15AD0:分時(shí)復(fù)用的存儲(chǔ)器或端口的地址和數(shù)據(jù)總線。傳送地址時(shí)為單向的三態(tài)輸出,而傳送數(shù)據(jù)時(shí)為雙向三態(tài)輸入/輸出。(2)IO/M存儲(chǔ)器/輸入、輸出控制信號(hào)(輸出、三態(tài)):它用于區(qū)分CPU當(dāng)前是訪問存儲(chǔ)器還是訪問輸入/輸出端口。高電表示訪問存儲(chǔ)器,說(shuō)明當(dāng)前要進(jìn)行CPU與存儲(chǔ)器之間的數(shù)據(jù)傳送。低電平表示訪問輸入/輸出設(shè)備。表示當(dāng)前要進(jìn)行CPU與I/O端口之間的數(shù)據(jù)傳送。在時(shí),它被置為浮空。 (3)WRLOCK(輸出,低電平有效,三態(tài))

19、: 信號(hào)有效,即為低電平時(shí),表示CPU正在執(zhí)行存儲(chǔ)器或I/O寫操作,在寫周期中,在2、2、期間都有效。在時(shí),被置為浮空。(4)INTA:可屏蔽中斷響應(yīng)信號(hào),輸出,低電平有效。 CPU通過(guò)信號(hào)對(duì)外設(shè)提出的可屏蔽中斷請(qǐng)求做出響應(yīng)。為低電平時(shí),表示CPU已經(jīng)響應(yīng)外設(shè)的中斷請(qǐng)求,即將執(zhí)行。 (5)ALE:地址鎖存允許信號(hào),輸出,高電平有效。 CPU利用ALE信號(hào)可以把AD15 AD0地址/數(shù)據(jù)、A19/S6A16/S3地址/狀態(tài)線上的地址信息鎖存在中。 (5)DT:數(shù)據(jù)發(fā)送/接收信號(hào),輸出,三態(tài)。 DT/信號(hào)用來(lái)控制數(shù)據(jù)傳送的方向。DT/為高電平時(shí),CPU發(fā)送數(shù)據(jù)到存儲(chǔ)器或I/O端口;DT/為低電平時(shí)

20、,CPU接收來(lái)自存儲(chǔ)器或I/O端口的數(shù)據(jù)。 (6)DEN:數(shù)據(jù)允許控制信號(hào),輸出,三態(tài),低電平有效。信號(hào)用作總線收發(fā)器的選通控制信號(hào)。當(dāng)為低電平時(shí),表明CPU進(jìn)行數(shù)據(jù)的讀/寫操作。 (7)HOLD:總線保持請(qǐng)求信號(hào),輸入,高電平有效。在DMA數(shù)據(jù)傳送方式中,由總線控制器8237A發(fā)出一個(gè)高電平有效的總線請(qǐng)求信號(hào),通過(guò)HOLD引腳輸入到CPU,請(qǐng)求CPU讓出總線控制權(quán)。 (8)HLDA:總線保持響應(yīng)信號(hào),輸出,高電平有效。HLDA是與HOLD配合使用的聯(lián)絡(luò)信號(hào)。在HLDA有效期間,HLDA引腳輸出一個(gè)高電平有效的響應(yīng)信號(hào),同時(shí)總線將處于浮空狀態(tài),CPU讓出對(duì)總線的控制權(quán),將其交付給申請(qǐng)使用總線的

21、8237A控制器使用,總線使用完后,會(huì)使HOLD信號(hào)變?yōu)榈碗娖?,CPU又重新獲得對(duì)總線的控制權(quán)。(9)RD:讀控制信號(hào),三態(tài),輸出。當(dāng)RD=0時(shí),表示執(zhí)行存儲(chǔ)器或端口的讀操作。是對(duì)內(nèi)存單元還是對(duì)端口讀取數(shù)據(jù),取決于信號(hào)。在執(zhí)行DMA操作時(shí),RD被浮空。(10)READY:“準(zhǔn)備好”信號(hào)線,輸入。該引腳接受被尋址的內(nèi)存或端口發(fā)給CPU的響應(yīng)信號(hào),高電平時(shí)表示內(nèi)存或端口已準(zhǔn)備就緒,CPU可以進(jìn)行數(shù)據(jù)傳輸。CPU在T3狀態(tài)開始對(duì)READY信號(hào)采樣。若檢測(cè)到READY為低電平,表示內(nèi)存或 端口尚未準(zhǔn)備就緒,則在狀態(tài)之后自動(dòng)插入等待狀態(tài),直到READY信號(hào)變?yōu)楦唠娖?,?nèi)存或端口已準(zhǔn)備就緒,才可以進(jìn)行數(shù)據(jù)

22、傳輸。2.4、74LS273鎖存器D0D7:出入;Q0Q7:輸出;第一腳WR:主清除端,低電平觸發(fā),即當(dāng)為低電平時(shí),芯片被清除,輸出全為0(低電平);CP(CLK):觸發(fā)端,上升沿觸發(fā),即當(dāng)CP從低到高電平時(shí),D0D7的數(shù)據(jù)通過(guò)芯片,為0時(shí)將數(shù)據(jù)鎖存,D0D7的數(shù)據(jù)不變。 3.鍵盤輸入輸出模塊: 鍵盤是常用信息輸入元件,由一個(gè)個(gè)按鈕組成。 下圖是一個(gè)4*4鍵盤結(jié)構(gòu)圖,將4*4鍵盤的八個(gè)管腳接8255的PC口,因?yàn)檫M(jìn)行鍵盤掃描一般要求有一部分的I/O口工作方式是輸入,另一部分I/O是輸出,具體到4*4鍵盤則要求四個(gè)I/O口輸入,另外四個(gè)輸出。行信息連C口低四位,列信息連A口低四位。當(dāng)進(jìn)行掃描時(shí),

23、掃描信號(hào)由列引腳輸入鍵盤。以0111、1011、1101 和1110 的順序每次掃描不同的列,然后讀取列引腳的信號(hào)就可以判斷是哪個(gè)鍵被按下。識(shí)別鍵盤上哪個(gè)鍵被壓下的過(guò)程的掃描步驟:1.檢測(cè)是否所有鍵都都松開了,若沒有則反復(fù)檢測(cè)。2.但所有鍵都松開了,再檢測(cè)是否有鍵壓下,若無(wú)鍵一下則反復(fù)檢測(cè)。3.如有鍵壓下,要消除鍵抖動(dòng),確認(rèn)有鍵壓下。4.對(duì)壓下的鍵進(jìn)行編碼,將該鍵的行列信號(hào)轉(zhuǎn)換成16 進(jìn)制碼,由此確定哪個(gè)鍵被壓下了。如出現(xiàn)多鍵重按的情況,只有在其它鍵均釋放后,僅剩一個(gè)鍵閉合時(shí),才把此鍵當(dāng)作本次壓下的鍵。5.該鍵釋放后,再回到24.總原理圖3軟件設(shè)計(jì)特點(diǎn)(主要任務(wù)):首先設(shè)計(jì)程序用到的代碼段,數(shù)

24、據(jù)段,堆棧段。根據(jù)題目要求,我設(shè)計(jì)10位內(nèi)存存儲(chǔ)運(yùn)算結(jié)果,減小了計(jì)算溢出的可能性。為程序設(shè)計(jì)初始化主程序,保證程序運(yùn)行時(shí)避免出錯(cuò)。同時(shí)在每個(gè)子程序操作時(shí)將一些重要寄存器ax,dx等壓入堆棧,防止不必要的錯(cuò)誤。對(duì)于加減法我通過(guò)進(jìn)位或借位標(biāo)志進(jìn)行控制。對(duì)于乘法,我先將內(nèi)存的數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制(乘0ah),并且記錄乘數(shù)的大小,用于被乘數(shù)的累加運(yùn)算。我之所以沒在乘法中使用16進(jìn)制的乘法指令是為了防止有一個(gè)數(shù)超過(guò)65536的情況發(fā)生,減小錯(cuò)誤的幾率,并且為我的程序增加了適用范圍以及容錯(cuò)性。對(duì)于除法,直接循環(huán)利用被除數(shù)減去除數(shù)即可,利用借位標(biāo)志退出機(jī)制。在完成加減乘除基本功能的程序后,我又增添了后續(xù)的小數(shù)

25、功能,將小數(shù)與這4個(gè)子程序巧妙的聯(lián)合起來(lái),其中除了除法的功能弱一點(diǎn),其他都相對(duì)完善。同時(shí)我也添加了連續(xù)運(yùn)算的功能,雖然并不能分清優(yōu)先級(jí)別,但是對(duì)于簡(jiǎn)單計(jì)算機(jī)的性能已有很大的改善。附圖如下:程序CLEAR MACRO push dx push cx push bx push ax mov ah,6 mov al,0 mov bh,01h mov cx,0 mov dx,184fh int 10h pop dx pop cx pop bx pop ax ENDM data segmentshuf dw 0;當(dāng)前數(shù)標(biāo)志符yunf dw 0;運(yùn)算符標(biāo)志符fssf dw 0 ;小數(shù)點(diǎn)標(biāo)志符finf dw

26、 0;完成符標(biāo)識(shí)符fsf0 dw 0 ;小數(shù)1個(gè)數(shù)標(biāo)志符fsf1 dw 0 ;小數(shù)2個(gè)數(shù)標(biāo)志符fsf dw 0numb0f db 0;NUMB0清空標(biāo)志numb1f db 0;NUMB1清空標(biāo)志numb0 db 10 dup(0);第一個(gè)運(yùn)算數(shù)numb1 db 10 dup(0);第二個(gè)運(yùn)算數(shù)numb2 db 10 dup(0);第三個(gè)運(yùn)算數(shù)numb3 db 10dup(0) ;小數(shù) fkey db "error重新輸入.$"data endsstack segment stack db 100 dup(0)stack endscode segmentassume ds:d

27、ata,ss:stack,cs:codestart:mov ax, data mov ds, ax ;-;各變量初始清0mov si,0;清空兩個(gè)運(yùn)算數(shù)mov cx,10mov numb0,0mov numb1,0ini:mov numb0si,0mov numb1si,0mov numb2si,0 inc siloop inimov shuf,0;當(dāng)前數(shù)置0,表示指向第一個(gè)數(shù)mov yunf,0;運(yùn)算符置0,表示沒有運(yùn)算符mov finf,0;完成符置0,表示沒有完成mov fssf,0 ;置小數(shù)點(diǎn)符0,表示沒有小數(shù)點(diǎn)mov fsf0,0 ;置小數(shù)個(gè)數(shù)符0,表示沒有小數(shù)部分mov fsf1,

28、0mov fsf,0mov numb0f,1;第一個(gè)數(shù)清空標(biāo)志置1,表示第一個(gè)數(shù)被清空mov numb1f,1;第二個(gè)數(shù)清空標(biāo)志置1,表示第二個(gè)數(shù)被清空;-;- ru: mov ah,1 int 21h push ax cmp al,'.' ;跳轉(zhuǎn)小數(shù)部分 jz fskeycmp al,'+'jz addkey;跳轉(zhuǎn)至加法鍵部分cmp al,'-'jz subkey;跳轉(zhuǎn)至減法鍵部分cmp al,'*'jz mulkey;跳轉(zhuǎn)至乘法鍵部分cmp al,'/'jz divkey;跳轉(zhuǎn)至除法鍵部分cmp al,'

29、;c'jz clrkey;跳轉(zhuǎn)至清除鍵部分 cmp al,'9'jbe numkey;跳轉(zhuǎn)至數(shù)字鍵部分jmp equkey;-;數(shù)字鍵部分numkey:sub al,30hsave_numb1:cmp yunf,0jz save_numb0;若沒有運(yùn)算符號(hào)則將輸入數(shù)存入NUMB0mov shuf,1;當(dāng)前符值1,指向第二個(gè)數(shù)mov si,9cmp numb1si,0;若最高位為空,則標(biāo)志當(dāng)先數(shù)沒有存滿六位,繼續(xù)存入jnz ru ;否則直接返回輸入cmp numb1f,1;若數(shù)當(dāng)前被清空過(guò),則直接將輸入數(shù)存入最低位jz place1 ;參與運(yùn)算的小數(shù)的總數(shù)mov cx,1

30、0;逐位前移mov si,0cmp fssf,1jz xsd1adjust1:xchg al,numb1siinc siloop adjust1mov numb1f,0;將NUMB1F置0,表示第二個(gè)數(shù)沒有清零jmp ru place1:mov numb10,almov numb1f,0jmp rusave_numb0:mov shuf,0cmp finf,0;若完成符為1,表示完成過(guò)一次運(yùn)算,則清空NUMBOjz save_next mov si,1;清空NUMB0mov cx,9mov numb0,0save_ini:mov numb0si,0inc siloop save_inimov

31、numb0f,1mov finf,0save_next:mov si,9 ;cmp numb0si,0jnz rucmp numb0f,1jz place0mov cx,10 mov si,0 cmp fssf,1jz xsd0adjust0:xchg al,numb0siinc siloop adjust0mov numb0f,0jmp ruplace0:mov numb0f,0 mov numb00,aljmp ruxsd1: add fsf1,1 jmp adjust1xsd0: add fsf0,1 jmp adjust0;小數(shù)點(diǎn)部分fskey: mov fssf,1 jmp ru ;

32、等號(hào)鍵部分equkey: call calp mov finf,1 ;按下等號(hào)則調(diào)用CALP運(yùn)算子程序,mov yunf,0 ;運(yùn)算后清空運(yùn)算符 ;置完成符jmp ru;-;運(yùn)算符號(hào)鍵部分addkey: pop ax mov fssf,0 cmp yunf,0;若之前沒有過(guò)運(yùn)算符,則置運(yùn)算符jz placef call calp;若之前有過(guò)運(yùn)算符,則調(diào)用CALP進(jìn)行運(yùn)算jmp placef;運(yùn)算結(jié)束后置當(dāng)前運(yùn)算符subkey:pop axmov fssf,0 cmp yunf,0jz placefcall calpjmp placefmulkey: pop axmov fssf,0 cmp y

33、unf,0jz placefcall calpjmp placefdivkey: pop ax mov fssf,0 cmp yunf,0jz placefcall calpjmp placefplacef: cmp al,'+'jz addfcmp al,'-'jz subfcmp al,'*'jz mulfcmp al,'/'jz divfcmp al,'c'jz clrkeyaddf:mov yunf,1 jmp ru;置運(yùn)算符完畢后返回輸入subf:mov yunf,2 jmp rumulf:mov yun

34、f,3jmp rudivf:mov yunf ,4jmp ruclrkey:clearmov bh,0mov dh,0mov dl,0mov ah,2int 10h jmp start;按下clear鍵后跳轉(zhuǎn)至開頭,全部清零;-;運(yùn)算子程序CALP calp proc cmp yunf,0;若運(yùn)算符為0,則直接轉(zhuǎn)輸入jz yunf_over;否則跳轉(zhuǎn)至結(jié)束處retcmp yunf,1;根據(jù)運(yùn)算符調(diào)用運(yùn)算子程序jz addcalcmp yunf,2jz subcalcmp yunf,3jz mulcalcmp yunf,4jz divcaladdcal:call addpjmp yunf_ove

35、r;調(diào)用相應(yīng)計(jì)算子程序subcal:call subpjmp yunf_overmulcal:call mulpjmp yunf_overdivcal:call divpyunf_over:retcalp endp;-;加法子程序 (帶小數(shù))addp proc push ax push dx clcmov dx ,fsf0mov bx,fsf1;清除進(jìn)位標(biāo)志cmp dx,bxjnz tiaozhcmp dx,0jz huizh1mov fsf,dxhuizh1: mov cx,10 mov si,0addnext_bit:mov al,numb0siadc al,numb1siaaamov n

36、umb0si,alinc siloop addnext_bitjc startmov numb1f,1 jmp xsaddp endp;-;減法子程序 (帶小數(shù))subp proc push ax push dxclc ;清除進(jìn)位標(biāo)志mov dx ,fsf0mov bx,fsf1cmp dx,bxjnz tiaozhcmp dx,0jz huizh2mov fsf,dxhuizh2: mov cx,10 mov si,0;清除借位標(biāo)志 subnext_bit:mov al,numb0sisbb al,numb1siaasmov numb0si,alinc siloop subnext_bitj

37、c start mov numb1f,1 jmp xssubp endp ;乘法子程序 (帶小數(shù)) mulp proc ;把bcd碼轉(zhuǎn)化成16進(jìn)制數(shù),供循環(huán)使用 push ax push dx mov di,0 ;存次數(shù)的低位 mov bp,0 ;存次數(shù)的高位 mov ax,0 mov cx,10 mov si,0 mov dx,fsf0 add dx,fsf1 mov fsf,dx xunjian0: ;排除有一個(gè)數(shù)為0的情況 cmp numb0si,0 jz jj0 jnz xiajj0: inc si loop xunjian0 cmp si,10 jz xs0xia: mov cx,1

38、0 mov si,0xunjian1: cmp numb1si,0 jz jj1 jnz jx jj1:inc si loop xunjian1 cmp si,10 jz xs1 jx: mov al,numb1 add di,ax mov ax,0 mov al,numb11 mov bx,10 mul bx add di,ax mov ax,0 mov al,numb12 mov bx,100 mul bx add di,ax mov ax,0 mov al,numb13 mov bx,1000 mul bx add di,ax mov ax,0 mov al,numb14 mov bx,

39、10000 mul bx add di,ax adc bp,dx mov bx,100 mov ax,0 mov al,numb15 mul bx mov bx,1000 mul bx add di,ax adc bp,dx ;現(xiàn)在次數(shù)存在bp和di中 ;numb1個(gè)numb0相加 ;先把零頭加了 mov cx,di ;低位零頭存在di中 cmp cx,1 jz display ;若為1倍,則不加直接跳出 sub cx,1 ;加倍數(shù)減一次 push cx ;將numb0的內(nèi)容復(fù)制到numb2中 mov cx,10 mov si,0 beifen:mov al,numb0si mov numb2

40、si,al inc si loop beifen pop cx ;復(fù)制結(jié)束 ;下面進(jìn)行連加,另增加一段numb2的內(nèi)存是為了解決由于adc與aaa必須連用,且aaa只能對(duì)al進(jìn)行操作的問題 extra: push cx mov si,0 mov cx,10 clc in_adc1:mov al,numb2si adc al,numb0si aaa mov numb2si,al inc si loop in_adc1 jc yichu ;溢出則跳出 pop cx loop extra ;高位部分 main:cmp bp,0 jz outside ;mov si,0 ;由于是10000h個(gè)數(shù)相加,

41、即加0ffff次 ;mov cx,6 ;clc ;in_adc2:mov al,numb0si ;adc al,al ;aaa ;mov numb0si,al ;inc si ;loop in_adc2 ;jc begin ;溢出則跳出 mov cx,0ffffh ;剩下的0ffffh遍 extra1:push cx mov si,0 mov cx,10 clc in_adc3:mov al,numb2si adc al,numb0si aaa mov numb2si,al inc si loop in_adc3 ;jc begin ;溢出則跳出 pop cx loop extra1 dec

42、bp jmp mainoutside: mov cx,10 mov si,0fuzhi: mov dl,numb2si mov numb0si,dl inc si loop fuzhi mov numb1f,1 jmp xsmulp endp;-;除法子程序 (帶小數(shù))divp proc push ax push dxmov si,0FFH;判斷除數(shù)是否為0mov cx,10mov dx,fsf0 cmp dx,fsf1 jnz tiaozh_0check_0:inc sicmp si,10jz start;若6位皆為0則溢出清零cmp numb1si,0jz check_0mov si,0;清除除法結(jié)果mov cx,10clrres:mov numb2si,0inc siloop clrresdivsub:mov si,0mov cx,10clc;清除借位標(biāo)志subnext: mov al,numb0sisbb al,numb1si aasmov numb0si,alinc siloop subnextjc div_over ;每減一次則結(jié)果加1clcmov s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論