單片機(jī)計算器課程設(shè)計報告_第1頁
單片機(jī)計算器課程設(shè)計報告_第2頁
單片機(jī)計算器課程設(shè)計報告_第3頁
單片機(jī)計算器課程設(shè)計報告_第4頁
單片機(jī)計算器課程設(shè)計報告_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)課程設(shè)計課題名稱:單片機(jī)簡易計算器課程設(shè)計姓名:XXXX學(xué)號:XXXXXX年級專業(yè)班級:XXXXXXX學(xué)院:XXXX設(shè)計時間:XXXXXXX設(shè)計地點(diǎn):XXXXXX指導(dǎo)老師:目錄TOC\o"1-5"\h\z\o"CurrentDocument"一、單片機(jī)課程設(shè)計實(shí)習(xí)目的21、增進(jìn)對單片機(jī)的感性認(rèn)識,加深對單片機(jī)理論方面的理解;22、掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時器/計數(shù)器、中斷、存貯器、I/O口等;23、了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計過程及實(shí)現(xiàn)方法。2\o"CurrentDocument"二、實(shí)習(xí)課題任務(wù)21、課題:簡易計算器的設(shè)計22、設(shè)計基本要求:2利用單片機(jī)試驗(yàn)箱的鍵盤模塊以及顯示模塊實(shí)現(xiàn)百位以內(nèi)加減乘除。2任選一種顯示方式:即中文液晶顯示屏、LED數(shù)碼管可任選一種。2\o"CurrentDocument"3、功能實(shí)現(xiàn):2\o"CurrentDocument"4、設(shè)計任務(wù)2\o"CurrentDocument"5、設(shè)計思路2\o"CurrentDocument"三、系統(tǒng)分析4\o"CurrentDocument"四、硬件系統(tǒng)設(shè)計5\o"CurrentDocument"1、鍵盤接口電路5\o"CurrentDocument"2、數(shù)碼管顯示電路6\o"CurrentDocument"五、軟件系統(tǒng)設(shè)計6\o"CurrentDocument"六、調(diào)試結(jié)果710以內(nèi)計算器7100以內(nèi)計算器7\o"CurrentDocument"七、結(jié)論8\o"CurrentDocument"八、體會與收獲8九、附件(程序):91、程序一:只能進(jìn)行兩位數(shù)與兩位數(shù)格式的四則運(yùn)算9\o"CurrentDocument"2、程序二:能進(jìn)行百位以內(nèi)的四則運(yùn)算,但一位與兩位數(shù)運(yùn)算結(jié)果調(diào)試不對18一、單片機(jī)課程設(shè)計實(shí)習(xí)目的1、增進(jìn)對單片機(jī)的感性認(rèn)識,加深對單片機(jī)理論方面的理解;2、掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時器/計數(shù)器、中斷、存貯器、I/O口等;3、了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計過程及實(shí)現(xiàn)方法。二、實(shí)習(xí)課題任務(wù)1、課題:簡易計算器的設(shè)計2、設(shè)計基本要求:利用單片機(jī)試驗(yàn)箱的鍵盤模塊以及顯示模塊實(shí)現(xiàn)百位以內(nèi)加減乘除。任選一種顯示方式:即中文液晶顯示屏、LED數(shù)碼管可任選一種。3、功能實(shí)現(xiàn):計算器將完成的功能有兩位數(shù)以內(nèi)加、減、乘、除功能,并通過LED數(shù)碼管顯示輸入值及結(jié)果。4、設(shè)計任務(wù)擴(kuò)展4*4鍵盤,其中10個數(shù)字,5個功能鍵,1個清零使用五位數(shù)碼管接口電路完成十進(jìn)制的四則運(yùn)算(加、減、乘、除);實(shí)現(xiàn)低于三位小于255數(shù)字的連續(xù)運(yùn)算;使用keilC軟件編寫程序;最后用ptoteus仿真;具有較強(qiáng)的抗干擾能力;體積小、功耗低,便于嵌入其他系統(tǒng)。2/295、設(shè)計思路1)、了解鍵盤、顯示電路的編程方法2)、了解鍵盤電路工作原理及編程方法3)、調(diào)試鍵盤掃描顯示程序,進(jìn)一步熟悉鍵盤工作原理利用EL-8051-III型單片機(jī)實(shí)驗(yàn)箱上提供的8279,鍵盤電路,數(shù)碼顯示電路,組成一個鍵盤分析電路,編寫程序,要求在鍵盤上按動一個鍵,就將8279對此鍵掃描的掃描碼顯示在數(shù)碼管上。4)、設(shè)計總體流程圖,分模塊編寫程序5)鍵盤掃描流程圖:三、系統(tǒng)分析按照系統(tǒng)設(shè)計的功能的要求,初步確定設(shè)計系統(tǒng)由主控模塊、顯示模塊、鍵掃描接口電路共三個模塊組成,電路系統(tǒng)構(gòu)成框圖如圖1.1所示。主控芯片使用89S51/52單片機(jī),比80C51速度更快,功能更強(qiáng),由先進(jìn)工藝制造,并帶有非

易失性Flash程序存儲器。它是一種高性能、低功耗的8位COMS微處理芯片,市場應(yīng)用最多。鍵盤電路采用4*4矩陣鍵盤電路。顯示模塊采用4枚共陽極數(shù)碼管和74ls273鎖存芯片構(gòu)成等器件構(gòu)成。四、硬件系統(tǒng)設(shè)計單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小電路部分,包括主控芯片、復(fù)位電路和晶振電路。主控芯片選取74LS164芯片,因其具有良好的性能及穩(wěn)定性,價格便宜應(yīng)用方便。晶振選取11.0592MHz,晶振旁電容選取22pF。采用按鍵復(fù)位電路,電阻分別選取560Q和10K,電容選取10UF。1、鍵盤接口電路計算器所需按鍵有:數(shù)字鍵:“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”功能鍵:“A(+)”“B(一)”“C(*)”“D(/)”“E(=)”鍵盤共計15個按鍵,其中15個按鍵采用到,采用4*4矩陣鍵盤,鍵盤的行和列之間都有公共端相連,四行和四列的8個公共端分別接P1.0?P1.7,這樣掃描P1口就可以完成對矩陣鍵盤的掃描,通過對16個按鍵進(jìn)行編碼,從而得到鍵盤的口地址,對比P1口的掃描結(jié)果和各按鍵的地址,我們就可以得到是哪個鍵按下,從而完成鍵盤掃描的功能。

2、數(shù)碼管顯示電路采用6位數(shù)碼管對計算數(shù)據(jù)和結(jié)果的顯示,這里選取共陽數(shù)碼管,利用NPN三極管對數(shù)碼管進(jìn)行驅(qū)動,為了節(jié)省I/O資源,采取動態(tài)顯示的方法來顯示計算數(shù)據(jù)及結(jié)果,動態(tài)掃描。為了實(shí)現(xiàn)數(shù)碼管的動態(tài)顯示,P2口輸出顯示值,通過P2口的二進(jìn)制代碼送到數(shù)碼管進(jìn)行顯示。P3.0?P3.5用來作為位選端,控制哪幾位數(shù)碼管進(jìn)行顯示。比如當(dāng)P3.2為高電平時,其他位全給0,具體的在軟件中會有說明。此時就將掃描的數(shù)據(jù)送給指定數(shù)碼管顯示。五、軟件系統(tǒng)設(shè)計1、判斷第三輸入(R3)的運(yùn)算符號。2、計算R1*10+R2,并儲存在R2中。3、計算R4*10+R5,并存儲在R4中。4、根據(jù)R3的運(yùn)算符號,計算R2與R4之間的加、減、乘或除運(yùn)

算。5、運(yùn)算結(jié)果通過數(shù)碼管前三位顯示出來。(具體程序于附件中)六、調(diào)試結(jié)果1)10以內(nèi)計算器加法:實(shí)現(xiàn)10以內(nèi)任意兩數(shù)相加,例如02+03=5,結(jié)果顯示在顯示器后三位。減法:實(shí)現(xiàn)10以內(nèi)任意兩數(shù)相減,如:06-03=3,結(jié)果顯示在顯示器后三位。乘法:實(shí)現(xiàn)10以內(nèi)任意兩數(shù)相乘,例如:03*05=15,結(jié)果顯示在顯示器后三位。除法:實(shí)現(xiàn)10以內(nèi)任意兩數(shù)相除,例如:06/02=3,結(jié)果顯示在顯示器后三位。2)100以內(nèi)計算器加法:實(shí)現(xiàn)100以內(nèi)任意兩數(shù)相加,如口:11+34=45,結(jié)果顯示在顯示器后三位。減法:實(shí)現(xiàn)100以內(nèi)任意兩數(shù)相減,如:50-25=25,結(jié)果顯示在顯示器后三位。乘法:實(shí)現(xiàn)100以內(nèi)任意兩數(shù)相乘,如:20*10=200,結(jié)果顯示在顯示器后三位。(結(jié)果小于256)。

除法:實(shí)現(xiàn)100以內(nèi)任意兩數(shù)相除,如:50/25=2,結(jié)果顯示在顯示器后三位。七、結(jié)論完成硬件和軟件的設(shè)計和制作后,進(jìn)行系統(tǒng)的調(diào)試,并處理不斷出現(xiàn)的問題。對于計算器的性能,主要的衡量指標(biāo)就在于計算的精度,本次制作的計算器性能情況如下:10以內(nèi)計數(shù)器可以實(shí)現(xiàn)10以內(nèi)任意兩個數(shù)的加法、減法、乘法、除法運(yùn)算。100以內(nèi)計數(shù)器可以實(shí)現(xiàn)100以內(nèi)任意兩個數(shù)的加法、減法、乘法、除法運(yùn)算八、體會與收獲通過這次課程設(shè)計,我們最大的一點(diǎn)體會是單片機(jī)學(xué)的不夠扎實(shí),不會的很多,當(dāng)然這次的課程設(shè)計做計算器程序用的是匯編語言,不是上學(xué)期學(xué)過的c語言,所以很難適應(yīng)。一開始真的很著急,毫無頭緒,后來找了很多資料,也參考了同學(xué)的程序,其中每一個子程序

模塊都認(rèn)真去讀,去分析,化為己用,最重要的按鍵掃描和顯示程序,還有包括加減乘除的運(yùn)算程序。盡管大家都知道匯編編這個程序也很困難,但還是互相學(xué)習(xí),到處找資料看,問同學(xué),所以我們組的軟件主程序才能編譯成功,系統(tǒng)才能調(diào)試出結(jié)果。很感謝那些熱心教導(dǎo)我們的同學(xué)和指導(dǎo)我們的老師。老師的專心教導(dǎo),是我們值得一生典藏的記憶。這次課程設(shè)計讓我們互相分工、協(xié)調(diào)工作的能力得到了提高,更加重要的是我們增進(jìn)了對單片機(jī)的了解,也更深入地運(yùn)用了匯編語言,學(xué)到了很多課本上學(xué)不到的知識,大大提高了使用單片機(jī)的能力!九、附件(程序):總共按兩種思路編寫了兩種程序,盡管最終都沒達(dá)到較好的要求,但總的來說,通過編程,的確學(xué)到了很多知識,熟悉了匯編語言,從一開始不知如何下手,到逐漸領(lǐng)會到編寫要領(lǐng)1、程序一:只能進(jìn)行兩位數(shù)與兩位數(shù)格式的四則運(yùn)算CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVDPTR,#00CFE9H;8279命令字MOVA,#0D1H;清顯示MOVX@DPTR,ALOOP1:MOVXA,@DPTRMOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR1,AMOVDPTR,#0CFE9H

;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值加個F;寫顯示RAM命令MOVA,#80H;選中LED1MOVX@DPTR,AMOVA,R1ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LOOP2:MOVXA,@DPTRANLA,#0FHJZLOOP2MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,A

;輸入顯示符號;有鍵按下?沒有則循環(huán)等待;顯示'消隱命令;讀FIFO命令MOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR2,A;保存鍵值MOVDPTR,#0CFE9H;寫顯示RAM命令LOOP3:LOOP4:MOVA,R2ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9HMOVXA,@DPTRANLA,#0FHJZLOOP3MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR3,AMOVDPTR,#0CFE9HMOVA,#82HMOVX@DPTR,AMOVA,R3ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9HMOVXA,@DPTR;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令;第二個數(shù);有鍵按下?沒有則循環(huán)等待;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值;寫顯示RAM命令;選中LED3;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR4,AMOVDPTR,#0CFE9H;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值;寫顯示RAM命令;選中LED4;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令;第二個數(shù);有鍵按下?沒有則循環(huán)等待;;選中LED4;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令;第二個數(shù);有鍵按下?沒有則循環(huán)等待;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值;寫顯示RAM命令LOOP5:MOVXA,@DPTRANLA,#0FHJZLOOP5MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR5,AMOVDPTR,#0CFE9H

MOVA,R5ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LOOP6:MOVXA,@DPTR;====ANLA,#0FHJZLOOP6;有鍵按下?沒有則循環(huán)等待MOVA,#0A0H;顯示'消隱命令MOVX@DPTR,AMOVA,#40H;讀FIFO命令MOVX@DPTR,AMOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR6,A;保存鍵值MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#85H;選中LED6MOVX@DPTR,AMOVA,R6ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令

MOVA,R2ANLA,#0FHMOVR2,AMOVA,R4ANLA,#0FHMOVR4,AMOVA,R5ANLA,#0FHMOVR5,AMOVB,#0AHMOVA,R1MULABADDA,R2MOVR7,A;把12放到R7MOVB,#0AHMOVA,R4MULABADDA,R5MOVR1,A;把45放到R1CJNER3,#0CAH,JIAN1MOVA,R7ADDCA,R1LJMPXIANSHIJIAN1:CJNER3,#0CBH,CHENG1MOVA,R7SUBBA,R1LJMPXIANSHICHENG1:CJNER3,#0CCH,CHU1LOOP5:MOVB,R1MULABLJMPXIANSHICHU1:MOVA,R7MOVB,R1DIVABLJMPXIANSHIXIANSHI:;MOVR1,A;MOVDPTR,#00CFE9H;8279命令字;MOVA,#0D1H;清顯示;MOVX@DPTR,A;MOVA,R1MOVR0,A;把結(jié)果賦給R0SUBBA,#64H;判斷要顯示數(shù)的個數(shù)JCXTWO;判斷是否小于100MOVA,R0MOVB,#64H;百位數(shù)DIVABMOVR4,A;百位數(shù)R4MOVA,BMOVB,#0AHDIVAB;十位數(shù)MOVR5,A;十位數(shù)放R5MOVR6,B;個位數(shù)放R6MOVX@DPTR,AMOVA,R4ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令顯示十位MOVA,#84H;選中LED5MOVX@DPTR,AMOVA,R5ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令顯示個位MOVA,#86H;選中LED6MOVX@DPTR,AMOVA,R6ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVR7,#00HMOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#80H選中LED1

ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LJMPLOOP1XTWO:MOVA,R0CLRC;上面借位清CLRCSUBBA,#0AHJCXONEMOVA,R0MOVB,#0AHDIVABMOVR4,A;SHIWEIGEIR4MOVR5,B;GEWEIGEIR5顯示十位顯示十位MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#84H;選中LED5MOVX@DPTR,AMOVA,R4ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令;MOVDPTR,#0CFE9H;寫顯示RAM命令顯示個位ieMOVA,#85H;選中LED6ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令;LJMPLOOP1XONE:MOVA,R0MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#85H;選中LED6MOVX@DPTR,AMOVA,R0ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令;LJMPLOOP1TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;段顯碼表db7fh,6fh,77h,7ch,39h,5eh,79h,71hEND2、程序二:能進(jìn)行百位以內(nèi)的四則運(yùn)算,但一位與兩位數(shù)運(yùn)算結(jié)果調(diào)試不對NAMET11;8279鍵盤實(shí)驗(yàn)二;將鍵盤的KA10?KA12接8259的KA0?KA2;RL10?RL17接8255A的RL0?RL7;T118279鍵盤顯示接口實(shí)驗(yàn)二CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVR7,#10;8279命令字MOVDPTR,#00CFE9H;8279命令字LOOP1:LOOP2:LOOP3:MOVA,#0D1HMOVX@DPTR,AMOVXA,@DPTRANLA,#0FHJZLOOP1MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR1,AMOVDPTR,#0CFE9HMOVA,#80HMOVX@DPTR,AMOVA,R1ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9HMOVXA,@DPTRANLA,#0FHJZLOOP2MOVA,#0A0HMOVX@DPTR,AMOVA,#40HMOVX@DPTR,AMOVDPTR,#0CFE8HMOVXA,@DPTRMOVR2,AMOVDPTR,#0CFE9HMOVA,#81HMOVX@DPTR,AMOVA,R2ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9HMOVXA,@DPTRANLA,#0FH;有鍵按下?沒有則循環(huán)等待;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值加個F;寫顯示RAM命令;選中LED1;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令;輸入顯示符號;有鍵按下?沒有則循環(huán)等待;顯示'消隱命令;讀FIFO命令;讀鍵值;保存鍵值;寫顯示RAM命令;選中LED2;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令;第二個數(shù)JZLOOP3;有鍵按下?沒有則循環(huán)等待MOVA,#0A0H;顯示'消隱命令MOVX@DPTR,AMOVA,#40H;讀FIFO命令MOVX@DPTR,AMOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR3,A;保存鍵值MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#82H;選中LED3MOVX@DPTR,AMOVA,R3ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LOOP4:MOVXA,@DPTR;====ANLA,#0FHJZLOOP4;有鍵按下?沒有則循環(huán)等待MOVA,#0A0H;顯示'消隱命令MOVX@DPTR,AMOVA,#40H;讀FIFO命令MOVX@DPTR,AMOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR4,A;保存鍵值MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#83H;選中LED4MOVX@DPTR,AMOVA,R4ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LOOP5:MOVXA,@DPTR;====ANLA,#0FHJZLOOP5;有鍵按下?沒有則循環(huán)等待MOVA,#0A0H;顯示'消隱命令MOVX@DPTR,A

MOVA,#40H;讀FIFO命令MOVX@DPTR,AMOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR5,A;保存鍵值MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#84H;選中LED5MOVX@DPTR,AMOVA,R5ANLA,#0FH;取后半字節(jié)MOVDPTR,#TABMOVCA,@A+DPTR;取段顯碼MOVDPTR,#0CFE8H;寫顯示RAMMOVX@DPTR,AMOVDPTR,#0CFE9H;寫顯示RAM命令LOOP6:MOVXA,@DPTR;====ANLA,#0FHJZLOOP5;有鍵按下?沒有則循環(huán)等待MOVA,#0A0H;顯示'消隱命令MOVX@DPTR,AMOVA,#40H;讀FIFO命令MOVX@DPTR,AMOVDPTR,#0CFE8H;讀鍵值MOVXA,@DPTRMOVR5,AMOVA,#40H;讀FIFO命令MOVDPTR,#0CFE9H;寫顯示RAM命令MOVA,#85HMOVX@DPTR,AMOVA,R5ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9H;選中LED6;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令CJNER4,#0EH,L1;判斷R4是否為“=”,進(jìn)一步判斷R2符號LJMPjialLl:CJNER5,#OEH,L2;判斷R5是否為“=”CJNER2,#OAH,jian3MOVA,R1ANLA,#0FHMOVR1,AMOVA,R3ANLA,#0FH

MOVB,R7MULAB;計算R3*10MOVR3,AMOVA,R4ANLA,#0FHMOVR4,AMOVA,R3ADDA,R4;計算R3*10+R4MOVR3,A;R3*10+R4的結(jié)果放在R3中jia3:MOVA,R3ANLA,#0FHMOVR3,AMOVA,R1ANLA,#0FHADDA,R3LJMPXIANSHIjian3:CJNER2,#0BH,chen3MOVA,R3ANLA,#0FHMOVR3,AMOVA,R1ANLA,#0FHSUBBA,R3LJMPXIANSHIchen3:CJNER2,#0CH,chu3MOVA,R3ANLA,#0FHMOVR3,AMOVB,R3MOVA,R1ANLA,#0FHMOVR1,AMULABLJMPXIANSHIchu3:CJNER2,#0DH,PAN3MOVA,R3ANLA,#0FHMOVR3,AMOVB,R3MOVA,R1ANLA,#0FHMOVR1,ADIVABLJMPXIANSHI

PAN3:CJNER3,#0AH,jian4MOVA,R4ANLA,#0FHMOVR4,AMOVA,R1ANLA,#0FHMOVB,R7MULAB;計算R1*10MOVR1,AMOVA,R2ANLA,#0FHMOVR2,AMOVA,R1ADDA,R2;計算R1*10+R2MOVR1,A;R1*10+R2的結(jié)果放在R3中jia3:MOVA,R4ANLA,#0FHMOVR4,AMOVA,R1ANLA,#0FHADDA,R4LJMPXIANSHIjian3:CJNER2,#0BH,chen3MOVA,R4ANLA,#0FHMOVR4,AMOVA,R1ANLA,#0FHSUBBA,R4LJMPXIANSHIchen3:CJNER2,#0CH,chu3MOVA,R4ANLA,#0FHMOVR4,AMOVB,R4MOVA,R1ANLA,#0FHMOVR1,AMULABLJMPXIANSHIchu3:MOVA,R4ANLA,#0FHMOVR4,AMOVB,R4

MOVA,R1ANLA,#0FHMOVR1,ADIVABLJMPXIANSHIL2:MOVA,R1;分別計算R1*10+R2和R4*10+R5ANLA,#0FHMOVB,R7MULABMOVR1,A;計算R1=R1*10MOVA,R2ANLA,#0FHMOVR2,AMOVA,R1ADDA,R2;計算R1*10+R2MOVR1,A;R1存放R1*10+R2MOVA,R4ANLA,#0FHMOVB,R7MULABMOVR4,A;計算R4=R4*10MOVA,R5ANLA,#0FHMOVR5,AMOVA,R4ADDA,R5;計算R4*10+R5MOVR4,A;R1存放R4*10+R5CJNER3,#0AH,jian2jia2:MOVA,R1;兩位數(shù)的計算ANLA,#0FHMOVR1,AMOVMOVA,#85HMOVX@DPTR,AMOVA,R5ANLA,#0FHMOVDPTR,#TABMOVCA,@A+DPTRMOVDPTR,#0CFE8HMOVX@DPTR,AMOVDPTR,#0CFE9H;選中LED6;取后半字節(jié);取段顯碼;寫顯示RAM;寫顯示RAM命令MOVR4,AMOVA,R1SUBBA,R4LJMPXIANSHIchen2:CJNER3,#0CH,chu2MOVA,R1ANLA,#0FHMOVR1,AMOVA,R4ANLA,#0FHMOVR4,AMOVA,R1MOVB,R4MULABLJMPXIANSHIchu2:MOVA,R1ANLA,#0FHMOVR1,AMOVA,R4ANLA,#0FHMOVR4,AMOVA,R1MOVB,R4DIVABLJMPXIANSHIjia1:CJNER2,#0cAH,jian1;一位加一位的計算MOVA,R1ANLA,#0FHMOVR1,AMOVA,R3ANLA,#0FHMOVR3,AMOVA,R1ADDA,R3LJMPXIANSHIjian1:CJNER2,#0cBH,cheng1MOVA,R1ANLA,#0FHMOVR1,AMOVA,R3ANLA,#0FHMOVR3,AMOVA,R1SUBBA,R3LJMPXIANSHIcheng1:CJNER2,#0CcH,chu1MOVA,R1ANLA,#0FHMOVR1,AMOVA,R3ANLA,#0FHMOVR3,AMOVA,R1MOVB,R3MULABLJMPXIANSHIchu1:MOVA,R1ANLA,#0FHMOVR1,AMOVA,R3ANLA,#0FHMOVR3,AMOVA,R1MOVB,R3DIVABLJMPXIANSHIXIANSHI:MOVR1,AMOVDPTR,#00CFE9HMOVA,#0D1HMOVX@DPTR,AMOVA,R1MOVR0,ATHREE:SUBBA,#64HJCTWOMOVA,R0MOVB,#64HDIVABMOVR4,AMOVA,BMOVB,#0AHDIVABMOVR5,AMOVR6,B;8279命令字;判斷A的位數(shù);小于100繼續(xù)判斷;給B賦值100;百位放R4;余

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論