




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)報(bào)告課程名稱: 微機(jī)原理實(shí)驗(yàn) 指導(dǎo)老師: 成績(jī): 實(shí)驗(yàn)名稱: 加法計(jì)算器及顯示 實(shí)驗(yàn)類型: 同組學(xué)生姓名: 一、實(shí)驗(yàn)?zāi)康暮鸵螅ū靥睿┒?、?shí)驗(yàn)內(nèi)容和原理(必填)三、主要儀器設(shè)備(必填)四、操作方法和實(shí)驗(yàn)步驟五、實(shí)驗(yàn)數(shù)據(jù)記錄和處理六、實(shí)驗(yàn)結(jié)果與分析(必填)七、討論、心得一、 實(shí)驗(yàn)?zāi)康暮鸵?. 掌握基于狀態(tài)機(jī)的編程方法2. 實(shí)現(xiàn)數(shù)字運(yùn)算、鍵盤輸入、LED顯示的多任務(wù)協(xié)調(diào)編程二、 實(shí)驗(yàn)內(nèi)容和原理1. 編寫程序,輸入兩個(gè)兩位十進(jìn)制數(shù)并顯示,按確認(rèn)鍵后顯示運(yùn)算結(jié)果2. 基本功能:能夠輸入輸入數(shù)字(非數(shù)字無(wú)效)并顯示結(jié)果3. 附加功能:光標(biāo)指示功能(通過(guò)LED閃爍實(shí)現(xiàn))以及退格功能三、 程序代碼OR
2、G 0000HSTART: MOV 78H,#0 ;初始化:78H放0的段碼,其余放熄滅碼MOV 79H,#10MOV 7AH,#10MOV 7BH,#10MOV 7CH,#10MOV R5,#0 ;R5是按鍵次數(shù),初始置0MOV R6,#0 ;將0置入R6中MOV R7,#0 ;將0置入R7中MOV 30H,#0 ;30H是功能鍵存放單元,置為0MOV 31H,#0 ;31H單元初始置為0MOV 40H,#0 ;40H單元初始置為0MOV 41H,#0 ;41H單元初始置為0LOOP: LCALL DIR ;調(diào)用顯示子程序LCALL KEY ;調(diào)用鍵盤檢測(cè)程序INC R5 ;按鍵次數(shù)加1S1
3、: CJNE A,#10,S2 ;不是"+"鍵,跳到S2LJMP FUN ;是"+"鍵,跳到FUNS2: CJNE A,#11,S3 ;不是"-"鍵,跳到S3LJMP FUN ;是"-"鍵,跳到FUNS3: CJNE A,#12,S4 ; 不是"*"鍵,跳到S4LJMP FUN ; 是"*"鍵,跳到FUNS4: CJNE A,#13,S5 ; 不是"/"鍵,跳到S5LJMP FUN ; 是"/"鍵,跳到FUNS5: CJNE A,#14
4、,S6 ; 不是"="鍵,跳到S6LJMP FUN ;是"="鍵,跳到FUNS6: CJNE A,#15,N1 ; 不是"CL"鍵,跳到N1LJMP START ; 是"CL"鍵,跳到STARTN1: CJNE R5,#1,N2 ;若按鍵次數(shù)不等于1,跳到N2LJMP D11 ;跳到D11N2: CJNE R5,#2,START;若按鍵次數(shù)不等于2,跳到STARTLJMP T1 ;跳到T1D11: MOV R4,A ;將A寫入R4MOV 78H,A ;輸入值送顯示個(gè)位緩存MOV 79H,#10 ;將10送到79H單
5、元LJMP LOOP ;跳轉(zhuǎn)到循環(huán)T1: MOV 53H,A ;將A寫入53HMOV B,#10 ;將10置入BMOV A,R4 ;將上一次輸入的R4寫進(jìn)AMUL AB ;A乘以10ADD A,53H ;53H里面的值與A相加MOV R4,A ;將新的值置入到R4MOV 79H,78H ;個(gè)位到十位MOV 78H,53H ;新數(shù)為個(gè)位LJMP LOOP ;跳轉(zhuǎn)到循環(huán)FUN:MOV 78H,#10 ;將10置入到78HMOV 79H,#10 ;將10置入到79HMOV R0,30H ;與上次功能鍵交換MOV 30H,A MOV A,R0CJNE A,#10,FUN1 ;判斷功能鍵LJMP ADD
6、Y ;""FUN1: CJNE A,#11,FUN2LJMP SUBT ;""FUN2: CJNE A,#12,FUN3LJMP MULT ;"*"FUN3: CJNE A,#13,FUN4LJMP DIVI ;"/"FUN4: CJNE A,#14,FUN5 ;首次按功能鍵,即A=#0LJMP EQUA ;"="FUN5: MOV 40H,R4 ;保存第一個(gè)數(shù)MOV R5,#0 ;按鍵次數(shù)清零LJMP BCD ;將其拆為BCD碼,以便后來(lái)將其顯示OF: LJMP START ;跳轉(zhuǎn)回開始ADD
7、Y: MOV A,40H ;加法,第一個(gè)數(shù)送累加器ADD A,R4 ;第一個(gè)數(shù)加第二個(gè)數(shù)MOV 40H,A ;存本次結(jié)果MOV R5,#0 ;按鍵次數(shù)清零LJMP BCD ;跳轉(zhuǎn)到BCD程序SUBT: MOV A,40H ;減法,第一個(gè)數(shù)送累加器CLR C ;借位清零SUBB A,R4 ;帶借位的減法,第一個(gè)數(shù)減第二個(gè)數(shù)JB CY,BCD2 ;借位為1,跳轉(zhuǎn)到BCD2MOV 40H,A ;將減的結(jié)果送40HMOV R5,#0 ;按鍵次數(shù)清零LJMP BCD ;跳轉(zhuǎn)到BCDMULT: MOV A,40H ;乘法,第一個(gè)數(shù)送累加器MOV B,A ;將A送BMOV A,R4 ;將第二個(gè)數(shù)送累加器MU
8、L AB ;第一個(gè)數(shù)乘以第二個(gè)數(shù)MOV R5,#0 ;按鍵次數(shù)清零JB OV,BCD1 ;若乘法結(jié)果溢出,則跳轉(zhuǎn)到BCD1MOV 40H,A ;將A送40HLJMP BCD ;跳轉(zhuǎn)到BCDDIVI: MOV A,R4 ;除法,第二個(gè)數(shù)送累加器MOV B,A ;將第二個(gè)數(shù)送BMOV A,40H ;將第一個(gè)數(shù)送ADIV AB ;A除以BJB OV,OF ;當(dāng)B為0時(shí)跳到OFMOV 40H,A ;將A送40HMOV R5,#0 ;按鍵次數(shù)清零LJMP BCD ;跳轉(zhuǎn)到BCDEQUA: MOV R5,#0 ;按鍵次數(shù)清零MOV 31H,A ;將A送31HLJMP BCD ;跳轉(zhuǎn)到BCD;-乘法溢出時(shí)的
9、處理程序BCD1: ;乘法溢出時(shí)的處理程序MOV 78H, B ;將高8位送78HMOV 79H, A ;將低8位送79HLCALL HEX2BCD ;調(diào)用子程序把78H、79H中的數(shù)字,轉(zhuǎn)換成BCD碼,送到7AH 7BH 7CH MOV A, 7CH ;下面,把萬(wàn)千百十個(gè)位,分別存入7CH 7BH 7AH 79H 78HMOV B, #16 DIV AB ;除以16,目的是分離出高、低四位MOV 79H, A ;存放十位MOV 78H, B ;存放個(gè)位MOV A, 7AHMOV 7CH, A ;存放萬(wàn)位MOV A, 7BHMOV B, #16DIV ABMOV 7BH, AMOV 7AH,
10、BLJMP LOOPHEX2BCD: ;子程序:把78H、79H中的數(shù)字,轉(zhuǎn)換成BCD碼,送到7AH 7BH 7CH CLR AMOV 7AH, A ;先清零MOV 7BH, AMOV 7CH, AMOV R6, #16 ;共轉(zhuǎn)換十六位數(shù) LOOPP:CLR CMOV A, 79H ;從待轉(zhuǎn)換數(shù)的高端移出一位到CyRLC AMOV 79H, AMOV A, 78HRLC AMOV 78H, AMOV A, 7CH ;送到BCD碼的低端ADDC A, 7CH ;帶進(jìn)位加。自身相加,相當(dāng)于左移一位DA A ;十進(jìn)制調(diào)整,變成BCD碼MOV 7CH, AMOV A, 7BHADDC A, 7BHDA
11、 AMOV 7BH, AMOV A, 7AHADDC A, 7AHMOV 7AH, ADJNZ R6,LOOPP ;共轉(zhuǎn)換十六位數(shù)RETBCD2:MOV A,#100 ;減法第七位有借位時(shí)的處理程序CLR C ;借位清零SUBB A,R4 ;100-被減數(shù)MOV R4,A ;將結(jié)果存在R4中MOV A,40H ;將減數(shù)給AADD A,R4 ;減數(shù)+(100-被減數(shù))MOV R4,A ;將結(jié)果給R4MOV A,#100 ;將100給ACLR C ;將CY清零SUBB A,R4 ;100-(減數(shù)+(100-被減數(shù))MOV B,#10 ;將10給BDIV AB ;A除以10MOV 7AH,#11 ;
12、將11給7AH,以便顯示符號(hào)MOV 79H,A ;將A給79HMOV 78H,B ;將B給78HLJMP LOOP ;跳轉(zhuǎn)到LOOP;-拆為BCD碼的程序BCD: MOV B,#10 ;將10給BMOV A,40H ;結(jié)果送累加器DIV AB ;結(jié)果除10MOV 41H,A ;41H暫存"商"MOV A,B ;取余數(shù)MOV 78H,A ;余數(shù)送78HMOV B,#10 ;將10送BMOV A,41H ;將商送ADIV AB ;A除以10CJNE A,#0,PANDUAN1 ;若A不等于0,則跳轉(zhuǎn)到PANDUAN1MOV 79H,B ;若A等于0,則將B送79HLJMP RE
13、TURN ;跳轉(zhuǎn)到RETURNPANDUAN1:MOV 7AH,A ;A送7AHMOV 79H,B ;B送79HRETURN:LJMP LOOP ;跳轉(zhuǎn)到LOOP;-動(dòng)態(tài)顯示子程序DIR: MOV DPTR,#TAB ;數(shù)碼管譯碼表首址MOV R0,#78H ;待顯緩沖區(qū)個(gè)位地址CJNE R5,#1,ANJIAN2 ;判斷按鍵次數(shù)是否為1,不是則跳轉(zhuǎn)到ANJIAN2ANJIAN1: MOV A,R0 ;將顯示區(qū)的個(gè)位地址給AMOVC A,A+DPTR ;查表CLR P2.3 ;點(diǎn)亮P2.3MOV P3,A ;字段碼送P3口LCALL DELAY1ms ;調(diào)延時(shí)1ms 子程序SETB P2.3
14、;關(guān)閉P2.3MOV P3,#0FFH ;將P3口熄滅LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序;-按鍵1次時(shí)光標(biāo)閃爍功能INC R6 ;將R6加1CJNE R6,#70,SHANSHUO1 ;若R6不等于70,則跳轉(zhuǎn)到SHANSHUO1SETB P2.2 ;將P2.2關(guān)閉MOV P3,#0FFH ;將P2口熄滅LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序DEC R6 ;R6就減1INC R7 ;R7加1CJNE R7,#70,FANHUI ;判斷R7是否等于70,若不等于70,則跳轉(zhuǎn)到FANHUIMOV R6,#0 ;將R6置0MOV R7,#0 ;將R7置0FANHUI:
15、RET ;子程序返回SHANSHUO1:CLR P2.2 ;打開P2.2MOV P3,#0EFH ;顯示“-”LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.2 ;關(guān)閉P2.2MOV P3,#0FFH ;熄滅P3RET ;返回;-按鍵次數(shù)為2顯示ANJIAN2:CJNE R5,#2,ANJIANDENG;如果R5不等于0,則跳轉(zhuǎn)到ANJIANDENGMOV A,R0 ;將顯示區(qū)的個(gè)位地址給AMOVC A,A+DPTR ;查表CLR P2.3 ;點(diǎn)亮P2.3MOV P3,A ;將個(gè)位顯示LCALL DELAY1ms ;調(diào)用延時(shí)1msSETB P2.3 ;關(guān)閉P2.3MOV P
16、3,#0FFH ;關(guān)閉顯示INC R0 ;R0加1MOV A,R0 ;將顯示區(qū)的十位地址給AMOVC A,A+DPTR ;查表CLR P2.2 ;打開P2.2MOV P3,A ;將十位送P3顯示LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.2 ;關(guān)閉P2.2MOV P3,#0FFH ;關(guān)閉顯示;-按鍵兩次時(shí)光標(biāo)閃爍功能INC R6 ;R6加1CJNE R6,#70,SHANSHUO2 ;判斷R6是否為70,若否跳轉(zhuǎn)到SHANSHUO2SETB P2.1 ;將P2.1關(guān)閉MOV P3,#0FFH ;關(guān)閉顯示LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序DEC R6 ;
17、R6減1INC R7 ;R7加1CJNE R7,#70,FANHUI2 ;若R7不等于70,則跳轉(zhuǎn)到FANHUI2MOV R6,#0 ;將0送R6MOV R7,#0 ;將R7置0FANHUI2:RET ;子程序返回SHANSHUO2:CLR P2.1 ;打開P2.1MOV P3,#0EFH ;顯示“-”LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.1 ;關(guān)閉P2.1MOV P3,#0FFH ;關(guān)閉顯示RET ;返回;-按“=”鍵后的顯示ANJIANDENG:MOV A,31H ;將31H送ACJNE A,#0,ANJIAN0 ;A不等于0時(shí)跳轉(zhuǎn)到ANJIAN0MOV A,
18、R0 ;將個(gè)位的地址送AMOVC A,A+DPTR ;查表CLR P2.3 ;打開P2.3MOV P3,A ;顯示個(gè)位LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.3 ;關(guān)閉P2.3MOV P3,#0FFH ;關(guān)閉顯示INC R0 ;R0加1MOV A,R0 ;將十位的地址送AMOVC A,A+DPTR ;查表CLR P2.2 ;打開P2.2MOV P3,A ;顯示十位LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.2 ;關(guān)閉P2.2MOV P3,#0FFH ;關(guān)閉顯示INC R0 ;R0加1MOV A,R0 ;將百位地址送AMOVC A,A+DPTR
19、 ;查表CLR P2.1 ;打開P2.1MOV P3,A ;顯示百位LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.1 ;關(guān)閉P2.1MOV P3,#0FFH ;關(guān)閉顯示INC R0 ;R0加1MOV A,R0 ;將千位的地址送AMOVC A,A+DPTR ;查表CLR P2.0 ;打開P2.0MOV P3,A ;顯示千位LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.0 ;關(guān)閉P2.0MOV P3,#0FFH ;關(guān)閉顯示RET ;返回;-沒(méi)按鍵時(shí)的顯示ANJIAN0: MOV A,R0 ;將R0的地址送AMOVC A,A+DPTR ;查表CLR P2.
20、3 ;打開P2.3MOV P3,A ;顯示LCALL DELAY1ms ;調(diào)用延時(shí)1ms子程序SETB P2.3 ;關(guān)閉P2.3MOV P3,#0FFH ;關(guān)閉顯示RET ;返回TAB: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H,0FFH,0F7H ;共陽(yáng)極譯碼表DELAY1ms: MOV 50H,#2 ;延時(shí)1ms子程序LOOP1: MOV 53H,#248NOPLOOP2:DJNZ 53H,LOOP2DJNZ 50H,LOOP1RETDELAY1:MOV 51H,#5 ;延時(shí)子程序DELAY1DELAY3:DJNZ 51H,DELAY3RET;
21、-鍵盤子程序KEY: LCALL KS ;調(diào)用檢測(cè)按鍵子程序JNZ K1 ;有鍵按下繼續(xù)LCALL DELAY2 ;無(wú)鍵按調(diào)用延時(shí)去抖ACALL DIR ;調(diào)用動(dòng)態(tài)顯示AJMP KEY ;返回繼續(xù)檢測(cè)按鍵K1: LCALL DELAY2 ;有鍵按下延時(shí)去抖動(dòng)LCALL KS ;再調(diào)用檢測(cè)按腱子程序JNZ K2 ;確認(rèn)有按鍵進(jìn)行下一步ACALL DIR ;調(diào)用動(dòng)態(tài)顯示AJMP KEY ;無(wú)鍵按下返回繼續(xù)檢測(cè)K2: MOV R2,#0EFH ;將掃描值送入R2暫存MOV R3,#00H ;將第一列值送入R3暫存K3: MOV P1,R2 ;將R2值送入P1口L0: JB P1.0,L1 ;P1.0等于1跳轉(zhuǎn)到L1MOV A,#00H ;將第一行值送入ACCAJMP LK ;跳轉(zhuǎn)到鍵值處理程序L1: JB P1.1,L2 ;P1.1等于1跳轉(zhuǎn)到L2MOV A,#04H ;將第二行的行值送入ACCAJMP LK ;跳轉(zhuǎn)到鍵值處理程序L2: JB P1.2,L3 ;P1.2等于1跳轉(zhuǎn)到L3MOV A,#08H ;將第三行行值送入ACCAJMP LK ;跳轉(zhuǎn)到鍵值處理程序L
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)護(hù)士考試常見(jiàn)藥物查詢?cè)囶}與答案
- 2025年語(yǔ)文考試復(fù)習(xí)的成功經(jīng)驗(yàn)試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試主觀題試題及答案
- 努力前行衛(wèi)生資格考試試題及答案
- 行政法與社會(huì)服務(wù)模式再造的聯(lián)系試題及答案
- 行政法學(xué)的法律適用與實(shí)踐指導(dǎo)試題及答案
- 2025年經(jīng)濟(jì)法概論測(cè)試模擬試題及答案
- 2025年經(jīng)濟(jì)法考試模擬試卷試題及答案
- 2025年主管護(hù)師考試全方位試題及答案
- 為2025年經(jīng)濟(jì)法概論考試準(zhǔn)備的試題與答案
- 實(shí)+用法律基礎(chǔ)-形成性考核任務(wù)一-國(guó)開(ZJ)-參考資料
- 農(nóng)業(yè)昆蟲學(xué)-形考測(cè)試一-國(guó)開(ZJ)-參考資料
- 環(huán)保組織項(xiàng)目監(jiān)督管理制度
- GB/T 23473-2024林業(yè)植物及其產(chǎn)品調(diào)運(yùn)檢疫規(guī)程
- 山東虛擬電廠商業(yè)模式介紹
- 低分子肝素注射方法
- 人教版八年級(jí)體育 1.2常見(jiàn)運(yùn)動(dòng)損傷的預(yù)防和緊急處理 教案
- 【課件】在奉獻(xiàn)中成就精彩人生 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2024至2030年成都市酒店市場(chǎng)前景調(diào)查及投資研究報(bào)告
- 網(wǎng)絡(luò)安全保障服務(wù)方案(網(wǎng)絡(luò)安全運(yùn)維、重保服務(wù))
- 創(chuàng)傷愈合的相關(guān)知識(shí)
評(píng)論
0/150
提交評(píng)論