基于51单片机的计算器设计程序代码(汇编)[特选材料].doc

上传人:rrsccc 文档编号:9727119 上传时间:2021-03-20 格式:DOC 页数:7 大小:51.50KB
返回 下载 相关 举报
基于51单片机的计算器设计程序代码(汇编)[特选材料].doc_第1页
第1页 / 共7页
基于51单片机的计算器设计程序代码(汇编)[特选材料].doc_第2页
第2页 / 共7页
基于51单片机的计算器设计程序代码(汇编)[特选材料].doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于51单片机的计算器设计程序代码(汇编)[特选材料].doc》由会员分享,可在线阅读,更多相关《基于51单片机的计算器设计程序代码(汇编)[特选材料].doc(7页珍藏版)》请在三一文库上搜索。

1、DBUFEQU 30HTEMP EQU 40HYJ EQU50H ;结果存放YJ1 EQU51H ;中间结果存放GONG EQU52H ;功能键存放ORG 00HSTART:MOV R3,#0 ;初始化显示为空MOV GONG,#0MOV 30H,#10HMOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#10HMLOOP:CALL DISP ;PAN调显示子程序WAIT:CALL TESTKEY ;判断有无按键JZ WAIT CALL GETKEY ;读键INC R3 ;按键个数CJNE A,#0,NEXT1 ;判断是否数字键LJMP E1 ;转数字键处

2、理NEXT1:CJNE A,#1,NEXT2LJMP E1NEXT2:CJNE A,#2,NEXT3LJMP E1NEXT3:CJNE A,#3,NEXT4LJMP E1NEXT4:CJNE A,#4,NEXT5LJMP E1NEXT5:CJNE A,#5,NEXT6LJMP E1NEXT6:CJNE A,#6,NEXT7LJMP E1NEXT7:CJNE A,#7,NEXT8LJMP E1NEXT8:CJNE A,#8,NEXT9LJMP E1NEXT9:CJNE A,#9,NEXT10LJMP E1NEXT10:CJNE A,#10,NEXT11 ;判断是否功能键LJMP E2 ;转功能键

3、处理NEXT11:CJNE A,#11,NEXT12LJMP E2NEXT12:CJNE A,#12, NEXT13LJMP E2NEXT13:CJNE A,#13,NEXT14LJMP E2NEXT14:CJNE A,#14,NEXT15LJMP E2NEXT15:LJMP E3 ;判断是否清除键E1:CJNE R3,#1,N1 ;判断第几次按键LJMP E11 ;为第一个数字N1:CJNE R3,#2,N2LJMP E12 ;为第二个数字N2:CJNE R3,#3,N3 LJMP E13 ;为第三个数字N3:LJMP E3 ;第四个数字转溢出E11:MOV R4,A ;输入值暂存R4MOV

4、 34H,A ;输入值送显示缓存MOV 33H,#10HMOV 32H,#10HLJMP MLOOP ;等待再次输入E12: MOV R7,A ;个位数暂存R7MOV B,#10MOV A,R4MUL AB ;十位数ADDA,R7MOV R4,A ;输入值存R4MOV 32H,#10H ;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE13:MOV R7,AMOV B,#10MOV A,R4MUL ABJB OV,E3 ;输入溢出ADD A,R7JB CY,E3 ;输入溢出MOV R4,AMOV 32H,33H;输入值送显示缓存MOV 33H,34HMOV 34

5、H,R7LJMP MLOOPE3:MOV R3,#0 ;按键次数清零MOV R4,#0 ;输入值清零MOV YJ,#0 ;计算结果清零MOV GONG,#0 ;功能键设为零MOV 30H,#10H ;显示清空MOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#10HLJMP MLOOPE2:MOV 34H,#10HMOV 33H,#10HMOV 32H,#10HMOV R0,GONG ;与上次功能键交换MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判断功能键LJMP JIA ;N21: CJNE A,#11,N22LJMP JIAN

6、;N22: CJNE A,#12,N23LJMP CHENG ;*N23:CJNE A,#13,N24LJMP CHU ;/N24:CJNE A,#0,N25LJMP FIRST ;首次按功能键N25:LJMP DEN ;=N4:LJMP E3FIRST:MOV YJ,R4 ;输入值送结果MOV R3,#0 ;按键次数清零LJMP DISP1 ;结果处理JIA:MOV A,YJ;上次结果送累加器ADD A,R4;上次结果加输入值JB CY,N4;溢出MOV YJ,A;存本次结果MOV R3,#0;按键次数清零LJMP DISP1JIAN:MOV A,YJSUBB A,R4;上次结果减输入值JB

7、 CY,N4;负数溢出MOV YJ,AMOV R3,#0LJMP DISP1CHENG:MOV A,YJMOV B,AMOV A,R4MUL AB;上次结果乘输入值JB OV,N4;溢出MOV YJ,ALJMP DISP1CHU:MOV A,R4MOV B,AMOV A,YJDIV AB;上次结果除输入值MOV YJ,AMOV R3,#0LJMP DISP1DEN:MOV R3,#0LJMP DISP1DISP1:MOVB,#10MOVA,YJ;结果送累加器DIVAB;结果除10MOVYJ1,A;暂存商MOVA,B;取个位数MOV34H,A;个位数送显示缓存MOVA,YJ1JZDISP11;结

8、果是否为一位数MOVB,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,A;十位送显示缓存MOVA,YJ1JZDISP11;结果是否为二位数MOV32H,A;百位数送显示缓存DISP11:LJMPMLOOPDISP:MOVR0,#DBUF;显示子程序MOVR1,#TEMP+4MOVR2,#5DP10:MOVDPTR,#SEGTABMOVA,R0MOVCA,A+DPTRMOVR1,AINCR0DECR1DJNZR2,DP10MOVR0,#TEMPDP12:MOV A,R0MOV P0,Aclr P2.7CALL D1MSsetb P2.7INC R0MOV A,R0MO

9、V P0,Aclr P2.6CALL D1MSsetb P2.6INC R0MOV A,R0MOV P0,Aclr P2.5CALL D1MSsetb P2.5INC R0MOV A,R0MOV P0,Aclr P2.4CALL D1MSsetb P2.4INC R0MOV A,R0MOV P0,Aclr P2.3CALL D1MSsetb P2.3RETD1MS: MOV R7,#02HDMS: MOV R6,#0FFH DJNZ R6,$DJNZ R7,DMS RETSEGTAB:DB 028H,7eH,0A2H,062H DB 74H, 61H, 21H, 7aH DB 20H, 60H

10、, 88H, 83H DB 0C6H, 0A1H, 86H, 8EH,0ffHTESTKEY:ACALL DISPMOVP1,#0FH;读入键状态MOVA,P1CPLAANLA,#0FH;高四位不用RETKEYTABLE:DB0DEH,0EDH,0DDH,0BDH;键码定义DB0EBH,0DBH,0BBH,0E7HDB0D7H,0B7H,07EH,07DHDB07BH,077H,0BEH,0EEHGETKEY:;读键子程序MOVR6,#10ACALLDELAYMOVP1,#0FHMOVA,P1CJNEA,0FH,K12LJMPMLOOPK12: MOVB,AMOVP1,#0EFHMOVA,P1

11、CJNEA,#0EFH,K13MOVP1,#0DFHMOVA,P1CJNEA,#0DFH,K13MOVP1,#0BFHMOVA,P1CJNEA,#0BFH,K13MOVP1,#07FHMOVA,P1CJNEA,#07FH,K13LJMPMLOOPK13: ANL A,#0F0HORLA,BMOVB,AMOVR1,#16MOVR2,#0MOVDPTR,#KEYTABLEK14:MOVA,R2MOVCA,A+DPTRCJNEA,B,K16MOVP1,#0FHK15:MOVA,P1CJNEA,#0FH,K15MOVR6,#10ACALLDELAYMOVA,R2RETK16:INCR2DJNZR1,K14AJMPMLOOPDELAY:MOVR7,#80;延时子程序DLOOP:DJNZR7,DLOOPDJNZR6,DLOOPRETEND7材料a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1