标题: 计算器单片机课设汇编语言程序+仿真 超过255清零 [打印本页]

作者: yangyanru    时间: 2017-9-24 17:12
标题: 计算器单片机课设汇编语言程序+仿真 超过255清零
计算器单片机课设仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

单片机汇编语言源程序如下:
  1. YJ             EQU                50H                                ;结果存放
  2. YJ1            EQU                51H                                ;中间结果存放
  3. GONG          EQU                52H                           ;功能键存放

  4.                 ORG           00H
  5. START:        MOV           R3,#0                     ;初始化显示为空
  6.                 MOV           GONG,#0               
  7.                 MOV           38H,#00H
  8.                 MOV           37H,#00H
  9.                 MOV           36H,#00H
  10.                 MOV           35H,#00H
  11.                 MOV           34H,#00H
  12.                 MOV           33H,#00H
  13.                 MOV           32H,#00H                        
  14.                 MOV           31H,#00H

  15. MLOOP:        CALL           DISP                      ;调显示子程序
  16. WAIT:        CALL           TESTKEY                   ;判断有无按键
  17.                 JZ      WAIT                  
  18.                 CALL    GETKEY              ;读键
  19.                 INC     R3                        ;按键个数
  20.                 CJNE    A,#0,NEXT1              ;判断是否数字键
  21.                 LJMP    E1                         ;转数字键处理
  22. NEXT1:        CJNE    A,#1,NEXT2
  23.                 LJMP    E1
  24. NEXT2:        CJNE    A,#2,NEXT3
  25.                 LJMP    E1
  26. NEXT3:        CJNE    A,#3,NEXT4
  27.                 LJMP    E1
  28. NEXT4:        CJNE    A,#4,NEXT5
  29.                 LJMP    E1
  30. NEXT5:        CJNE    A,#5,NEXT6
  31.                 LJMP    E1
  32. NEXT6:        CJNE    A,#6,NEXT7
  33.                 LJMP    E1
  34. NEXT7:        CJNE    A,#7,NEXT8
  35.                 LJMP    E1
  36. NEXT8:        CJNE    A,#8,NEXT9
  37.                 LJMP    E1
  38. NEXT9:        CJNE    A,#9,NEXT10
  39.                 LJMP    E1
  40. NEXT10:        CJNE           A,#10,NEXT11        ;判断是否功能键
  41.                 LJMP    E2                        ;转功能键处理
  42. NEXT11:        CJNE           A,#11,NEXT12
  43.                 LJMP    E2
  44. NEXT12:        CJNE           A,#12, NEXT13
  45.                 LJMP           E2
  46. NEXT13:        CJNE           A,#13,NEXT14
  47.                 LJMP           E2
  48. NEXT14:        CJNE           A,#14,NEXT15
  49.                 LJMP           E2
  50. NEXT15:        LJMP           E3                         ;判断是否清除键
  51. E1:                CJNE           R3,#1,N1                   ;判断第几次按键
  52.                 LJMP    E11                        ;为第一个数字
  53. N1:                CJNE           R3,#2,N2
  54.                 LJMP    E12                       ;为第二个数字
  55. N2:                CJNE    R3,#3,N3
  56.                 LJMP    E13                       ;为第三个数字
  57. N3:                LJMP    E3                        ;第四个数字转溢出
  58. E11:        MOV            R4,A                       ;输入值暂存R4
  59.                 MOV           38H,A                     ;输入值送显示缓存
  60.                 MOV           37H,#00H
  61.                 MOV           36H,#00H
  62.                 MOV           35H,#00H
  63.                 MOV           34H,#00H
  64.                 MOV           33H,#00H
  65.                 MOV           32H,#00H
  66.                 MOV           31H,#00H

  67.                 LJMP          MLOOP                     ;等待再次输入
  68. E12:          MOV           R7,A                      ;个位数暂存R7
  69.                 MOV           B,#10
  70.                 MOV           A,R4
  71.                 MUL           AB                                         ;十位数
  72.                 ADD                A,R7
  73.                 MOV           R4,A                    ;输入值存R4
  74.                 MOV           31H,#00H
  75.                 MOV           32H,#00H
  76.                 MOV           33H,#00H
  77.                 MOV           34H,#00H
  78.                 MOV           35H,#00H
  79.                 MOV           36H,#00H                       ;输入值送显示缓存
  80.                 MOV           37H,38H
  81.                 MOV           38H,R7

  82.                 LJMP           MLOOP
  83. E13:        MOV          R7,A
  84.                 MOV           B,#10
  85.                 MOV           A,R4
  86.                 MUL           AB
  87.                 JB             OV,E3                          ;输入溢出
  88.                 ADD           A,R7
  89.                 JB             CY,E3                   ;输入溢出
  90.                 MOV           R4,A
  91.                 MOV           36H,37H                                ;输入值送显示缓存
  92.                 MOV           37H,38H
  93.                 MOV           38H,R7
  94.                 LJMP           MLOOP
  95. E3:                MOV           R3,#0                   ;按键次数清零
  96.                 MOV           R4,#0                    ;输入值清零
  97.                 MOV           YJ,#0                    ;计算结果清零
  98.                 MOV           GONG,#0                  ;功能键设为零            
  99.                 MOV           31H,#00H
  100.                 MOV           32H,#00H
  101.                 MOV           33H,#00H
  102.                 MOV           34H,#00H
  103.                 MOV           35H,#00H
  104.                 MOV           36H,#00H                       ;输入值送显示缓存
  105.                

  106. …………限于本文篇幅 余下代码请从51黑下载附件…………
  107.                
复制代码

所有资料51hei提供下载:
计算器--单片机课设.rar (16.79 KB, 下载次数: 44)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1