簡單計算機(jī)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
360截圖20190618115707311.jpg (127.77 KB, 下載次數(shù): 57)
下載附件
2019-6-18 11:58 上傳
單片機(jī)匯編語言源程序如下:
- DBUF EQU 30H
- TEMP EQU 40H
- YJ EQU 50H ;結(jié)果存放
- YJ1 EQU 51H ;中間結(jié)果存放
- GONG EQU 52H ;功能鍵存放
- DIN BIT 0B0H ;P3.0
- CLK BIT 0B1H ;P3.1
- ORG 00H
- START: MOV R3,#0 ;初始化顯示為空
- MOV GONG,#0
- MOV 30H,#10H
- MOV 31H,#10H
- MOV 32H,#10H
- MOV 33H,#10H
- MOV 34H,#10H
- MLOOP: CALL DISP ;PAN調(diào)顯示子程序
- WAIT: CALL TESTKEY ;判斷有無按鍵
- JZ WAIT
- CALL GETKEY ;讀鍵
- INC R3 ;按鍵個數(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
- NEXT3: 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
- 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 ;為第一個數(shù)字
- N1: CJNE R3,#2,N2
- LJMP E12 ;為第二個數(shù)字
- N2: CJNE R3,#3,N3
- LJMP E13 ;為第三個數(shù)字
- N3: LJMP E3 ;第四個數(shù)字轉(zhuǎn)溢出
- E11: MOV R4,A ;輸入值暫存R4
- MOV 34H,A ;輸入值送顯示緩存
- MOV 33H,#10H
- MOV 32H,#10H
- LJMP MLOOP ;等待再次輸入
- E12: MOV R7,A ;個位數(shù)暫存R7
- MOV B,#10
- MOV A,R4
- MUL AB ;十位數(shù)
- ADD A,R7
- MOV R4,A ;輸入值存R4
- MOV 32H,#10H ;輸入值送顯示緩存
- 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 ;輸入值送顯示緩存
- MOV 33H,34H
- MOV 34H,R7
- LJMP MLOOP
- E3: MOV R3,#0 ;按鍵次數(shù)清零
- MOV R4,#0 ;輸入值清零
- MOV YJ,#0 ;計算結(jié)果清零
- MOV GONG,#0 ;功能鍵設(shè)為零
- MOV 30H,#10H ;顯示清空
- MOV 31H,#10H
- MOV 32H,#10H
- MOV 33H,#10H
- MOV 34H,#10H
- LJMP MLOOP
- E2: MOV 34H,#10H
- MOV 33H,#10H
- MOV 32H,#10H
- MOV R0,GONG ;與上次功能鍵交換
- MOV GONG,A
- MOV A,R0
- CJNE A,#10,N21 ;判斷功能鍵
- LJMP 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 YJ,R4 ;輸入值送結(jié)果
- MOV R3,#0 ;按鍵次數(shù)清零
- LJMP DISP1 ;結(jié)果處理
- JIA: MOV A,YJ ;上次結(jié)果送累加器
- ADD A,R4 ;上次結(jié)果加輸入值
- JB CY,N4 ;溢出
- MOV YJ,A ;存本次結(jié)果
- MOV R3,#0 ;按鍵次數(shù)清零
- LJMP DISP1
- JIAN: MOV A,YJ
- SUBB A,R4 ;上次結(jié)果減輸入值
- JB CY,N4 ;負(fù)數(shù)溢出
- MOV YJ,A
- MOV R3,#0
- LJMP DISP1
- CHENG: MOV A,YJ
- MOV B,A
- MOV A,R4
- MUL AB ;上次結(jié)果乘輸入值
- JB OV,N4 ;溢出
- MOV YJ,A
- LJMP DISP1
- CHU: MOV A,R4
- MOV B,A
- MOV A,YJ
- DIV AB ;上次結(jié)果除輸入值
- MOV YJ,A
- MOV R3,#0
- LJMP DISP1
- DEN: MOV R3,#0
- LJMP DISP1
- DISP1: MOV B,#10
- MOV A,YJ ;結(jié)果送累加器
- DIV AB ;結(jié)果除10
- MOV YJ1,A ;暫存“商”
- MOV A,B ;取個位數(shù)
- MOV 34H,A ;個位數(shù)送顯示緩存
- MOV A,YJ1
- JZ DISP11 ;結(jié)果是否為一位數(shù)
- MOV B,#10
- MOV A,YJ1
- DIV AB
- MOV YJ1,A
- MOV A,B
- MOV 33H,A ;十位送顯示緩存
- MOV A,YJ1
- JZ DISP11 ;結(jié)果是否為二位數(shù)
- MOV 32H,A ;百位數(shù)送顯示緩存
- DISP11: LJMP MLOOP
- DISP: MOV R0,#DBUF ;顯示子程序
- MOV R1,#TEMP+4
- MOV R2,#5
- DP10: MOV DPTR,#SEGTAB
- MOV A,@R0
- MOVC A,@A+DPTR
- MOV @R1,A
- INC R0
- DEC R1
- DJNZ R2,DP10
- MOV R0,#TEMP
- MOV R1,#5
- DP12: MOV R2,#8
- MOV A,@R0
- DP13: RLC A
- MOV DIN,C
- CLR CLK
- SETB CLK
- DJNZ R2,DP13
- INC R0
- DJNZ R1,DP12
- RET
- SEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH ;段碼定義
- DB 7DH,07H,7FH,6FH,77H,7CH
- DB 39H,5EH,79H,71H,00H,40H
- TESTKEY:
- MOV P1,#0FH ;讀入鍵狀態(tài)
- MOV A,P1
- CPL A
- ANL A,#0FH ;高四位不用
- RET
- KEYTABLE:
- DB 0DEH,0EDH,0DDH,0BDH ;鍵碼定義
- DB 0EBH,0DBH,0BBH,0E7H
- DB 0D7H,0B7H,07EH,07DH
- DB 07BH,077H,0BEH,0EEH
- GETKEY: ;讀鍵子程序
- MOV R6,#10
- ACALL DELAY
- MOV P1,#0FH
- MOV A,P1
- CJNE A,0FH,K12
- LJMP MLOOP
- K12: MOV B,A
- MOV P1,#0EFH
- MOV A,P1
- CJNE A,#0EFH,K13
- MOV P1,#0DFH
- MOV A,P1
- CJNE A,#0DFH,K13
- MOV P1,#0BFH
- MOV A,P1
- CJNE A,#0BFH,K13
- MOV P1,#07FH
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png (10.94 KB, 下載次數(shù): 57)
下載附件
2019-6-18 18:04 上傳
所有資料51hei提供下載:
計算機(jī).rar
(40.08 KB, 下載次數(shù): 32)
2019-6-18 11:55 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|