單片機(jī)十進(jìn)制加法計(jì)算器設(shè)計(jì)_第1頁(yè)
單片機(jī)十進(jìn)制加法計(jì)算器設(shè)計(jì)_第2頁(yè)
單片機(jī)十進(jìn)制加法計(jì)算器設(shè)計(jì)_第3頁(yè)
單片機(jī)十進(jìn)制加法計(jì)算器設(shè)計(jì)_第4頁(yè)
單片機(jī)十進(jìn)制加法計(jì)算器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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、 目錄一、 設(shè)計(jì)任務(wù)和要求.(2)1、1 設(shè)計(jì)要求. (2)1、2 性能指標(biāo).(2)1、3 設(shè)計(jì)方案的確定.(2) 二、 單片機(jī)簡(jiǎn)要原理.(2)2、1 AT89C51的介紹單片機(jī)最小系統(tǒng).(2)2、2 單片機(jī)最小系統(tǒng).(2)三、 硬件的設(shè)計(jì).(4)3、1 鍵盤(pán)電路的設(shè)計(jì).(4) 3、2 顯示電路的設(shè)計(jì).(5)四、 軟件的設(shè)計(jì).(6) 4、1 系統(tǒng)設(shè)計(jì).(6)4、2 顯示電路的設(shè)計(jì).(8)五、 調(diào)試與仿真.(10)5、1 Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng).(10)5、2 proteus的操作.(10)6、 總結(jié).(11)7、 參考文獻(xiàn).(11)附錄1 程序.(12)附錄2 系統(tǒng)硬件電路圖.(1

2、8) 1、 設(shè)計(jì)任務(wù)和要求1.1 設(shè)計(jì)要求 本次課程設(shè)計(jì),我選擇的課題是單片機(jī)十進(jìn)制加法計(jì)算器軟硬件設(shè)計(jì) ,設(shè)計(jì)任務(wù)為: 設(shè)計(jì)一鍵盤(pán)顯示裝置,鍵盤(pán)上除需定義10個(gè)十進(jìn)制數(shù)字鍵外還要相應(yīng)的功能鍵,其它鍵不定義無(wú)響應(yīng)。利用此系統(tǒng)可分別可輸入十進(jìn)制被加數(shù)與加數(shù),實(shí)現(xiàn)兩數(shù)相加并將結(jié)果以十進(jìn)制形式顯示出來(lái)。1.2 性能指標(biāo) 本課程設(shè)計(jì)的十進(jìn)制加法計(jì)算器的計(jì)算范圍為0255,計(jì)算結(jié)果全為整數(shù),計(jì)算結(jié)果溢出結(jié)果不顯示。 1、加法:三位加法,計(jì)算結(jié)果超過(guò)255溢出不顯示 2、減法:三位減法,計(jì)算結(jié)果若小于零溢出不顯示 3、乘法:三位數(shù)乘法 4、除法:整數(shù)除法 5、有清零功能1.3 設(shè)計(jì)方案的確定 按照1.1的

3、設(shè)計(jì)要求,本課題需要使用數(shù)碼管顯示和擴(kuò)展4*4鍵盤(pán),由于AT89C51芯片的I口不夠多,而且為了硬件電路設(shè)計(jì)的簡(jiǎn)單化,故選擇串行動(dòng)態(tài)顯示和用P1口擴(kuò)展4*4鍵盤(pán),擴(kuò)展的4*4鍵盤(pán)定義十個(gè)數(shù)字鍵,六個(gè)功能鍵,使用串行動(dòng)態(tài)顯示顯示運(yùn)算結(jié)果。 主程序進(jìn)行初始化,采用行列掃描進(jìn)行查表得出鍵值,每次按鍵后調(diào)用顯示子程序。 二、 單片機(jī)簡(jiǎn)要原理在該課程設(shè)計(jì)中,主要用到一個(gè)AT89C51芯片和串接的共陰數(shù)碼管。作為該設(shè)計(jì)的主要部分,下面將對(duì)它們的原理及功能做詳細(xì)介紹和說(shuō)明。2.1 AT89C51的介紹: 圖1 AT89C51外形結(jié)構(gòu)和引腳分布圖芯片AT89C51的外形結(jié)構(gòu)和引腳圖如圖一所示。AT89C51是

4、一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。2.2 單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小部分,包括主控芯片、復(fù)位電路和晶振電路。 (一) 復(fù)位電路 圖2 復(fù)位電路 本設(shè)計(jì)

5、采用上電與手動(dòng)復(fù)位電路,電阻分別選取100和10K,電容選取10uF,系統(tǒng)一上電,芯片就復(fù)位,或者中途按按鍵也可以進(jìn)行復(fù)位。(2) 晶振電路 圖3 晶振電路晶振電路是單片機(jī)的心臟,它用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào)。單片機(jī)的晶振選取11.0592MHz,晶振旁電容選取30pF。 三、 硬件設(shè)計(jì)簡(jiǎn)易數(shù)字計(jì)算器系統(tǒng)硬件設(shè)計(jì)主要包括:鍵盤(pán)電路,顯示電路以及其他輔助電路。下面分別進(jìn)行設(shè)計(jì)。 3.1 鍵盤(pán)電路的設(shè)計(jì) 鍵盤(pán)可分為兩類(lèi):編碼鍵盤(pán)和非編碼鍵盤(pán)。編碼鍵盤(pán)是較多按鍵(20個(gè)以上)和專(zhuān)用驅(qū)動(dòng)芯片的組合,當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問(wèn)題,直接輸出按鍵的編碼,無(wú)需系統(tǒng)軟件干預(yù)。通用計(jì)算

6、機(jī)使用的標(biāo)準(zhǔn)鍵盤(pán)就是編碼鍵盤(pán)。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時(shí),采用編碼鍵盤(pán)可以簡(jiǎn)化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個(gè)以?xún)?nèi)),為了降低成本和簡(jiǎn)化電路通常采用非編碼鍵盤(pán)。非編碼鍵盤(pán)的接口電路有設(shè)計(jì)者根據(jù)需要自行決定,按鍵信息通過(guò)接口軟件來(lái)獲取。本課題需要的是16個(gè)按鍵,故選擇用非編碼鍵盤(pán)。計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤(pán)的方案。矩陣鍵盤(pán)采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤(pán),在行線和列線的每個(gè)交叉點(diǎn)上設(shè)

7、置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的個(gè)數(shù)就為4×4個(gè)。這種行列式鍵盤(pán)結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率。矩陣鍵盤(pán)的工作原理:計(jì)算器的鍵盤(pán)布局如圖五所示:一般有16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。具體電路連接如圖五所示: 圖5 4*4鍵盤(pán)接口電路3.2 顯示電路的設(shè)計(jì) 當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LED數(shù)碼管進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。數(shù)碼管顯示有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方法。為了減少端口的使用,故選擇動(dòng)態(tài)顯示。 電路如下圖六所示: 圖6 三位數(shù)碼管的顯示電路四、 軟件設(shè)計(jì)在十進(jìn)制加法計(jì)算器的軟件規(guī)劃要求下,簡(jiǎn)易計(jì)算器的程

8、序主要包括以下功能模塊:(1)    主模塊,為系統(tǒng)的初始化。(2)   顯示與讀鍵模塊,分為判鍵程序段、運(yùn)算操作子程序、顯示子程序等部分;4.1 系統(tǒng)設(shè)計(jì)輸入模塊單片機(jī)(一) 系統(tǒng)模塊圖 運(yùn)算模塊顯示模塊 圖六 系統(tǒng)模塊圖 此系統(tǒng)包括輸入、運(yùn)算和顯示模塊,由單片機(jī)控制。其中通過(guò)輸入鍵盤(pán)模塊將數(shù)字09和運(yùn)算符號(hào)“+”、“-”、“*”、“/”輸入單片機(jī)進(jìn)行運(yùn)算;運(yùn)算模塊分別根據(jù)輸入的運(yùn)算符進(jìn)行加減乘除運(yùn)算;顯示模塊將運(yùn)算后的數(shù)值通過(guò)動(dòng)態(tài)掃描使之在數(shù)碼管上輸出。(2) 系統(tǒng)總流程圖主程序主要是用來(lái)進(jìn)行初始化的,調(diào)用其他子程序,清空各個(gè)標(biāo)志

9、位,清空緩存區(qū),讀取鍵碼,判斷功能,在LED上作出回應(yīng),主程序流程圖如圖六所示。(1)數(shù)字送顯示緩沖程序設(shè)計(jì)簡(jiǎn)易計(jì)算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷數(shù)值大小和位數(shù),如果是超過(guò)三位或大于255,將不顯示數(shù)字??芍匦螺斎霐?shù)字,再次計(jì)算。(2)運(yùn)算程序的設(shè)計(jì)開(kāi)始首先初始化參數(shù),送LED三位顯示“0”,其它位不顯示。然后掃描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵,是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存相對(duì)運(yùn)算程序的首地址。初始化參數(shù) LED顯示功能鍵

10、 否按鍵輸入?根據(jù)上次功能鍵和輸入鍵的數(shù)據(jù)計(jì)算結(jié)果是功能鍵是初始化參數(shù)保存結(jié)果和功能鍵1是數(shù)字鍵分析鍵值結(jié)果送顯示緩存是清零鍵清零鍵數(shù)字鍵等待數(shù)值輸入狀態(tài)清零輸入數(shù)值數(shù)值送顯示緩存圖7 主程序流程圖 4.2 顯示與按鍵設(shè)計(jì)(1) LED顯示程序設(shè)計(jì) LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也稱(chēng)為七段LED顯示器。為了顯示數(shù)字或符號(hào),要為L(zhǎng)ED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的長(zhǎng)度正好是一個(gè)字節(jié)。簡(jiǎn)易計(jì)算器用到的數(shù)字09的共陽(yáng)極字形代碼如下表:顯示字型gfedcba段碼001111110c0h100001100f9h210

11、110110a4h310011110b0h4110011099h5110110192h6111110182h700001110f8h8111111180h9110111190h 表1 共陽(yáng)極數(shù)碼管段碼對(duì)照表(2) 讀鍵子程序設(shè)計(jì)為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。其程序框圖如圖八:讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤(pán)矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有列線均輸出低電平,從所有讀入鍵盤(pán)信息(行信息);第二次所有行線均輸出低電平,從所有行線讀入鍵盤(pán)信息(列信息)。將兩次讀鍵信息進(jìn)行組合就可

12、以得到按鍵的特征編碼,然后通過(guò)查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一張表,然后用當(dāng)前讀得的特征碼來(lái)查表。當(dāng)表中有該特征碼時(shí),它的位置就是對(duì)應(yīng)的順序編碼;當(dāng)表中沒(méi)有該特征碼時(shí),說(shuō)明這是一個(gè)沒(méi)有定義的鍵碼,與沒(méi)有按鍵(0FFH)同等看待。 開(kāi)始初始化地址參數(shù)輸出列掃描信號(hào)列掃描信號(hào)移位讀入行信號(hào)是該列有輸入?按照行列計(jì)算鍵值否四列掃描完?查表得鍵值否是返回等待按鍵釋放開(kāi)始 圖8 計(jì)算鍵值子程序流程圖五、 調(diào)試與仿真下面用KEIL uVision3與 proteus仿真軟件介紹十進(jìn)制加法計(jì)算器的仿真與調(diào)試。5.1Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)(一) 系統(tǒng)的整體結(jié)構(gòu)C51工具包的整

13、體結(jié)構(gòu)中,其中uVision是C51 for Windows的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。(二) 采用KEIL 開(kāi)發(fā)的89c51單片機(jī)應(yīng)用程序步驟:1. 在

14、uVision 集成開(kāi)發(fā)環(huán)境中創(chuàng)建新項(xiàng)目(Project),擴(kuò)展文件名為.UV2,并為該項(xiàng)目選定合適的單片機(jī)CPU器件(本設(shè)計(jì)采用ATMEL 公司下的AT89C51) 2. 用uVision 的文本編輯器編寫(xiě)源文件,可以是匯編文件(.ASM),也可以使C語(yǔ)言文件(擴(kuò)展名.C),并將該文件添加到項(xiàng)目中去。一個(gè)項(xiàng)目文件可以包含多個(gè)文件,除了源程序文件外,還可以是庫(kù)文件、頭文件或文本說(shuō)明文件。 3. 通過(guò)uVision 3 的相關(guān)選擇項(xiàng),配置編譯環(huán)境、連接定位器以及Debug調(diào)試器的功能。 4. 對(duì)項(xiàng)目中的源文件進(jìn)行編譯連接,生成絕對(duì)目標(biāo)代碼和可選的HEX文件,如果出現(xiàn)編譯連接錯(cuò)誤則返回到第2步,修

15、改源文件中的錯(cuò)誤后重構(gòu)整個(gè)項(xiàng)目。 5. 對(duì)沒(méi)有語(yǔ)法錯(cuò)誤的程序進(jìn)行仿真調(diào)試,調(diào)試成功后將HEX文件寫(xiě)入到單片機(jī)應(yīng)用系統(tǒng)的ROM中。5.2 proteus的操作 (一)硬件電路圖的接法操作 1.放置選擇(刪除)元器件2.移動(dòng)元器件3.縮放視圖4.連接導(dǎo)線5.仿真,調(diào)試 (二) 單片機(jī)系統(tǒng)PROTEUS設(shè)計(jì)與仿真過(guò)程Proteus強(qiáng)大的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真功能,使它可成為單片機(jī)系統(tǒng)應(yīng)用開(kāi)發(fā)和改進(jìn)手段之一。全部過(guò)程都是在計(jì)算機(jī)上通過(guò)Proteus來(lái)完成的。其過(guò)程一般也可分為三步:1.在ISIS平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)電路設(shè)計(jì)、選擇元器件、接插件、連接電路和電氣檢測(cè)等,簡(jiǎn)稱(chēng)Proteus電路設(shè)計(jì)。2.在Ke

16、il平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)程序設(shè)計(jì)、編輯、匯編編譯、代碼級(jí)調(diào)試,最后生成目標(biāo)代碼文件(*.hex)。簡(jiǎn)稱(chēng)Proteus源程序設(shè)計(jì)和生成目標(biāo)代碼文件。3.在ISIS平臺(tái)上將目標(biāo)代碼文件加載到單片機(jī)系統(tǒng)中,并實(shí)現(xiàn)單片機(jī)系統(tǒng)的實(shí)時(shí)交互、協(xié)同仿真。它在相當(dāng)程度上反映了實(shí)際單片機(jī)系統(tǒng)的運(yùn)行情況。簡(jiǎn)稱(chēng)Proteus仿真。(三) Proteus中課程設(shè)計(jì)的仿真結(jié)果在Proteus中將硬件電路全部接好以后,將Keil中生成的.hex文件導(dǎo)入到單片機(jī)中,點(diǎn)擊開(kāi)始仿真按鈕,電路開(kāi)始仿真??梢杂^察到:數(shù)碼管顯示“000”;分別依次按下按鍵“5”、“+”、“6”和“=”,可以看到數(shù)碼管顯示“11”;也可以分別調(diào)試其它功

17、能鍵,結(jié)果發(fā)現(xiàn)調(diào)試結(jié)果與預(yù)期的理論值相吻合,即本次課設(shè)已成功??偟姆抡嬖黼娐穲D見(jiàn)附錄1圖九。6、 總結(jié)第一次做課程設(shè)計(jì),一周的時(shí)間很快過(guò)去,通過(guò)這次課程設(shè)計(jì),我進(jìn)一步加深了對(duì)電子自動(dòng)控制的了解。并進(jìn)一步熟練了對(duì)Keil和Proteus軟件的操作。也掌握了做課程設(shè)計(jì)的一般流程,為接下來(lái)兩周的課設(shè)積累了一定的經(jīng)驗(yàn)。同時(shí)發(fā)現(xiàn)自己有很多不足。對(duì)知識(shí)的掌握還不夠全面。四處查資料,找同學(xué)幫忙,終于是艱難的完成了課設(shè)。每一份課設(shè)都不容易,必須要花時(shí)間好好做,才能有成果。7、 參考文獻(xiàn)1,徐春輝單片微機(jī)原理及應(yīng)用2,百度文庫(kù)十進(jìn)制加法計(jì)算 附錄1 程序RESULT EQU 60H RESULT1 EQU 6

18、1H FUNCTIONKEY EQU 62H ORG 00H START: MOV R3,#0 MOV FUNCTIONKEY,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00HMLOOP: CALL DISP ;調(diào)顯示子程序 WAIT: CALL TESTKEY ;判斷有無(wú)按鍵 JZ WAIT CALL GETKEY ;讀鍵 INC R3 ;按鍵個(gè)數(shù) CJNE A,#0,NEXT1 ;判斷是否數(shù)字鍵 LJMP E1 ;轉(zhuǎn)數(shù)字鍵處理 NEXT1: CJNE A,#1,NEXT2 LJMP E1 NEXT2: CJNE A,#2,NEXT3 LJMP E1 NEX

19、T3: CJNE A,#3,NEXT4 LJMP E1 NEXT4: CJNE A,#4,NEXT5 LJMP E1 NEXT5: CJNE A,#5,NEXT6 LJMP E1 NEXT6: CJNE A,#6,NEXT7 LJMP E1 NEXT7: CJNE A,#7,NEXT8 LJMP E1 NEXT8: CJNE A,#8,NEXT9 LJMP E1 NEXT9: CJNE A,#9,NEXT10 LJMP E1 NEXT10: CJNE A,#10,NEXT11 ;判斷是否功能鍵 LJMP E2 ;轉(zhuǎn)功能鍵處理 NEXT11: CJNE A,#11,NEXT12 LJMP E2

20、NEXT12: CJNE A,#12, NEXT13 LJMP E2 NEXT13: CJNE A,#13,NEXT14 LJMP E2 NEXT14: CJNE A,#14,NEXT15 LJMP E2 NEXT15: LJMP E3 ;判斷是否清除鍵 E1: CJNE R3,#1,N1 ;判斷第幾次按鍵 LJMP E11 ;為第一個(gè)數(shù)字 N1: CJNE R3,#2,N2 LJMP E12 ;為第二個(gè)數(shù)字 N2: CJNE R3,#3,N3 LJMP E13 ;為第三個(gè)數(shù)字 N3: LJMP E3 ;第四個(gè)數(shù)字轉(zhuǎn)溢出 E11: MOV R4,A ;輸入值暫存R4 MOV 34H,A ;輸入

21、值送顯示緩存 MOV 33H,#00H MOV 32H,#00H LJMP MLOOP ;等待再次輸入 E12: MOV R7,A ;個(gè)位數(shù)暫存R7 MOV B,#10 MOV A,R4 MUL AB ;十位數(shù) ADD A,R7 MOV R4,A ;輸入值存R4 MOV 32H,#00H ;輸入值送顯示緩存 MOV 33H,34H MOV 34H,R7 LJMP MLOOP E13: MOV R7,A MOV B,#10 MOV A,R4 MUL AB JB OV,E3 ;輸入溢出 ADD A,R7 JB CY,E3 ;輸入溢出 MOV R4,A MOV 32H,33H ;輸入值送顯示緩存 M

22、OV 33H,34H MOV 34H,R7 LJMP MLOOP E3: MOV R3,#0 ;按鍵次數(shù)清零 MOV R4,#0 ;輸入值清零 MOV RESULT,#0 ;計(jì)算結(jié)果清零 MOV FUNCTIONKEY,#0 ;功能鍵設(shè)為零 MOV 32H,#00H ;顯示清空 MOV 33H,#00H MOV 34H,#00H LJMP MLOOP E2: MOV 34H,#00H MOV 33H,#00H MOV 32H,#00H MOV R0,FUNCTIONKEY ;與上次功能鍵交換 MOV FUNCTIONKEY,A MOV A,R0 CJNE A,#10,N21 ;判斷功能鍵 LJ

23、MP JIA ;"" N21: CJNE A,#11,N22 LJMP JIAN ;"" N22: CJNE A,#12,N23 LJMP CHENG N23: CJNE A,#13,N24 LJMP CHU ;"/" N24: CJNE A,#0,N25 LJMP FIRST ;首次按功能鍵 N25: LJMP DEN ;"=" N4: LJMP E3 FIRST: MOV RESULT,R4 ;輸入值送結(jié)果 MOV R3,#0 ;按鍵次數(shù)清零 LJMP DISP1 ;結(jié)果處理 JIA: MOV A,RESULT

24、 ;上次結(jié)果送累加器 ADD A,R4 ;上次結(jié)果加輸入值 JB CY,N4 ;溢出 MOV RESULT,A ;存本次結(jié)果 MOV R3,#0 ;按鍵次數(shù)清零 LJMP DISP1 JIAN: MOV A,RESULT SUBB A,R4 ;上次結(jié)果減輸入值 JB CY,N4 ;負(fù)數(shù)溢出 MOV RESULT,A MOV R3,#0 LJMP DISP1 CHENG: MOV A,RESULT MOV B,A MOV A,R4 MUL AB ;上次結(jié)果乘輸入值 JB OV,N4 ;溢出 MOV RESULT,A LJMP DISP1 CHU: MOV A,R4 MOV B,A MOV A,R

25、ESULT DIV AB ;上次結(jié)果除輸入值 MOV RESULT,A MOV R3,#0 LJMP DISP1 DEN: MOV R3,#0 LJMP DISP1 DISP1: MOV B,#10 MOV A,RESULT ;結(jié)果送累加器 DIV AB ;結(jié)果除10 MOV RESULT1,A ;暫存"商" MOV A,B ;取個(gè)位數(shù) MOV 34H,A ;個(gè)位數(shù)送顯示緩存 MOV A,RESULT1 JZ DISP11 ;結(jié)果是否為一位數(shù) MOV B,#10 MOV A,RESULT1 DIV AB MOV RESULT1,A MOV A,B MOV 33H,A ;十位

26、送顯示緩存 MOV A,RESULT1 JZ DISP11 ;結(jié)果是否為二位數(shù) MOV 32H,A ;百位數(shù)送顯示緩存 DISP11: LJMP MLOOP DISP: MOV R0,#34H DIR1: MOV DPTR,#SEGTAB MOV A,R0 MOVC A,A+DPTR MOV P0,A CJNE R0,#34H,DIR2 SETB P2.0 CALL D1MS CLR P2.0 DEC R0 SJMP DIR1 DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 DEC R0 SJMP DIR1 DIR3: SETB P2.2 CALL D1MS CLR P2.2 RET D1MS: MOV R7,#02H DMS: MOV R6,#0F0H DJNZ R6,$ DJNZ R7,DMS RET SEGTAB: DB 0C0H

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論