計算器單片機課設仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機匯編語言源程序如下:
- YJ EQU 50H ;結果存放
- YJ1 EQU 51H ;中間結果存放
- GONG EQU 52H ;功能鍵存放
- ORG 00H
- START: MOV R3,#0 ;初始化顯示為空
- MOV GONG,#0
- MOV 38H,#00H
- MOV 37H,#00H
- MOV 36H,#00H
- MOV 35H,#00H
- MOV 34H,#00H
- MOV 33H,#00H
- MOV 32H,#00H
- MOV 31H,#00H
- MLOOP: CALL DISP ;調顯示子程序
- WAIT: CALL TESTKEY ;判斷有無按鍵
- JZ WAIT
- CALL GETKEY ;讀鍵
- INC R3 ;按鍵個數
- CJNE A,#0,NEXT1 ;判斷是否數字鍵
- LJMP E1 ;轉數字鍵處理
- 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 ;轉功能鍵處理
- 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 ;為第一個數字
- N1: CJNE R3,#2,N2
- LJMP E12 ;為第二個數字
- N2: CJNE R3,#3,N3
- LJMP E13 ;為第三個數字
- N3: LJMP E3 ;第四個數字轉溢出
- E11: MOV R4,A ;輸入值暫存R4
- MOV 38H,A ;輸入值送顯示緩存
- MOV 37H,#00H
- MOV 36H,#00H
- MOV 35H,#00H
- MOV 34H,#00H
- MOV 33H,#00H
- MOV 32H,#00H
- MOV 31H,#00H
- LJMP MLOOP ;等待再次輸入
- E12: MOV R7,A ;個位數暫存R7
- MOV B,#10
- MOV A,R4
- MUL AB ;十位數
- ADD A,R7
- MOV R4,A ;輸入值存R4
- MOV 31H,#00H
- MOV 32H,#00H
- MOV 33H,#00H
- MOV 34H,#00H
- MOV 35H,#00H
- MOV 36H,#00H ;輸入值送顯示緩存
- MOV 37H,38H
- MOV 38H,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 36H,37H ;輸入值送顯示緩存
- MOV 37H,38H
- MOV 38H,R7
- LJMP MLOOP
- E3: MOV R3,#0 ;按鍵次數清零
- MOV R4,#0 ;輸入值清零
- MOV YJ,#0 ;計算結果清零
- MOV GONG,#0 ;功能鍵設為零
- MOV 31H,#00H
- MOV 32H,#00H
- MOV 33H,#00H
- MOV 34H,#00H
- MOV 35H,#00H
- MOV 36H,#00H ;輸入值送顯示緩存
-
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
-
復制代碼
所有資料51hei提供下載:
計算器--單片機課設.rar
(16.79 KB, 下載次數: 44)
2017-9-24 17:12 上傳
點擊文件名下載附件
|