找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3365|回复: 2
收起左侧

单片机计算机仿真+汇编语言程序

[复制链接]
ID:435101 发表于 2019-6-18 11:56 | 显示全部楼层 |阅读模式
简单计算机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
360截图20190618115707311.jpg

单片机汇编语言源程序如下:
  1. DBUF        EQU            30H
  2. TEMP          EQU            40H
  3. YJ             EQU                50H                                ;结果存放
  4. YJ1            EQU                51H                                ;中间结果存放
  5. GONG          EQU                52H                           ;功能键存放
  6. DIN            BIT                0B0H                          ;P3.0
  7. CLK           BIT            0B1H                          ;P3.1
  8.                 ORG           00H
  9. START:        MOV           R3,#0                     ;初始化显示为空
  10.                 MOV           GONG,#0
  11.                 MOV           30H,#10H
  12.                 MOV           31H,#10H
  13.                 MOV           32H,#10H
  14.                 MOV           33H,#10H
  15.                 MOV           34H,#10H
  16. MLOOP:        CALL           DISP                      ;PAN调显示子程序
  17. WAIT:        CALL           TESTKEY                   ;判断有无按键
  18.                 JZ      WAIT                  
  19.                 CALL    GETKEY              ;读键
  20.                 INC     R3                        ;按键个数
  21.                 CJNE    A,#0,NEXT1              ;判断是否数字键
  22.                 LJMP    E1                         ;转数字键处理
  23. NEXT1:        CJNE    A,#1,NEXT2
  24.                 LJMP    E1
  25. NEXT2:        CJNE    A,#2,NEXT3
  26.                 LJMP    E1
  27. NEXT3:        CJNE    A,#3,NEXT4
  28.                 LJMP    E1
  29. NEXT4:        CJNE    A,#4,NEXT5
  30.                 LJMP    E1
  31. NEXT5:        CJNE    A,#5,NEXT6
  32.                 LJMP    E1
  33. NEXT6:        CJNE    A,#6,NEXT7
  34.                 LJMP    E1
  35. NEXT7:        CJNE    A,#7,NEXT8
  36.                 LJMP    E1
  37. NEXT8:        CJNE    A,#8,NEXT9
  38.                 LJMP    E1
  39. NEXT9:        CJNE    A,#9,NEXT10
  40.                 LJMP    E1
  41. NEXT10:        CJNE           A,#10,NEXT11        ;判断是否功能键
  42.                 LJMP    E2                        ;转功能键处理
  43. NEXT11:        CJNE           A,#11,NEXT12
  44.                 LJMP    E2
  45. NEXT12:        CJNE           A,#12, NEXT13
  46.                 LJMP           E2
  47. NEXT13:        CJNE           A,#13,NEXT14
  48.                 LJMP           E2
  49. NEXT14:        CJNE           A,#14,NEXT15
  50.                 LJMP           E2
  51. NEXT15:        LJMP           E3                         ;判断是否清除键
  52. E1:                CJNE           R3,#1,N1                   ;判断第几次按键
  53.                 LJMP    E11                        ;为第一个数字
  54. N1:                CJNE           R3,#2,N2
  55.                 LJMP    E12                       ;为第二个数字
  56. N2:                CJNE    R3,#3,N3
  57.                 LJMP    E13                       ;为第三个数字
  58. N3:                LJMP    E3                        ;第四个数字转溢出
  59. E11:        MOV            R4,A                       ;输入值暂存R4
  60.                 MOV           34H,A                     ;输入值送显示缓存
  61.                 MOV           33H,#10H
  62.                 MOV           32H,#10H
  63.                 LJMP          MLOOP                     ;等待再次输入
  64. E12:        MOV           R7,A                      ;个位数暂存R7
  65.                 MOV           B,#10
  66.                 MOV           A,R4
  67.                 MUL           AB                                         ;十位数
  68.                 ADD                A,R7
  69.                 MOV           R4,A                    ;输入值存R4
  70.                 MOV           32H,#10H                       ;输入值送显示缓存
  71.                 MOV           33H,34H
  72.                 MOV           34H,R7
  73.                 LJMP           MLOOP
  74. E13:        MOV          R7,A
  75.                 MOV           B,#10
  76.                 MOV           A,R4
  77.                 MUL           AB
  78.                 JB             OV,E3                          ;输入溢出
  79.                 ADD           A,R7
  80.                 JB             CY,E3                   ;输入溢出
  81.                 MOV           R4,A
  82.                 MOV           32H,33H                                ;输入值送显示缓存
  83.                 MOV           33H,34H
  84.                 MOV           34H,R7
  85.                 LJMP           MLOOP
  86. E3:                MOV           R3,#0                   ;按键次数清零
  87.                 MOV           R4,#0                    ;输入值清零
  88.                 MOV           YJ,#0                    ;计算结果清零
  89.                 MOV           GONG,#0                  ;功能键设为零
  90.                 MOV           30H,#10H                   ;显示清空
  91.                 MOV           31H,#10H
  92.                 MOV           32H,#10H
  93.                 MOV           33H,#10H
  94.                 MOV          34H,#10H
  95.                 LJMP           MLOOP
  96. E2:                MOV           34H,#10H
  97.                 MOV           33H,#10H
  98.                 MOV           32H,#10H
  99.                 MOV           R0,GONG                   ;与上次功能键交换
  100.                 MOV           GONG,A
  101.                 MOV           A,R0
  102.                 CJNE           A,#10,N21                 ;判断功能键
  103.                 LJMP           JIA                       ;“+”
  104. N21:        CJNE           A,#11,N22
  105.                 LJMP           JIAN                     ;“-”
  106. N22:        CJNE          A,#12,N23
  107.                 LJMP          CHENG                    ;“*”
  108. N23:        CJNE          A,#13,N24
  109.                 LJMP           CHU                      ;“/”
  110. N24:        CJNE           A,#0,N25
  111.                 LJMP           FIRST                    ;首次按功能键
  112. N25:        LJMP           DEN                            ;“=”
  113. N4:                LJMP           E3
  114. FIRST:        MOV            YJ,R4                    ;输入值送结果
  115.                 MOV           R3,#0                    ;按键次数清零
  116.                 LJMP           DISP1                   ;结果处理
  117. JIA:        MOV            A,YJ                                ;上次结果送累加器
  118.                 ADD            A,R4                                ;上次结果加输入值
  119.                 JB             CY,N4                                ;溢出
  120.                 MOV           YJ,A                                ;存本次结果
  121.                 MOV           R3,#0                                ;按键次数清零
  122.                 LJMP           DISP1
  123. JIAN:        MOV            A,YJ
  124.                 SUBB           A,R4                                ;上次结果减输入值
  125.                 JB             CY,N4                                ;负数溢出
  126.                 MOV           YJ,A
  127.                 MOV           R3,#0
  128.                 LJMP           DISP1
  129. CHENG:        MOV           A,YJ
  130.                 MOV           B,A
  131.                 MOV           A,R4
  132.                 MUL           AB                                        ;上次结果乘输入值
  133.                 JB             OV,N4                                ;溢出
  134.                 MOV           YJ,A                                       
  135.                 LJMP           DISP1
  136. CHU:        MOV           A,R4
  137.                 MOV           B,A
  138.                 MOV           A,YJ
  139.                 DIV            AB                                        ;上次结果除输入值
  140.                 MOV           YJ,A
  141.                 MOV           R3,#0
  142.                 LJMP           DISP1
  143. DEN:        MOV           R3,#0
  144.                 LJMP           DISP1
  145. DISP1:        MOV                B,#10
  146.                 MOV                A,YJ                                ;结果送累加器
  147.                 DIV                AB                                        ;结果除10
  148.                 MOV                YJ1,A                                ;暂存“商”
  149.                 MOV                A,B                                        ;取个位数
  150.                 MOV                34H,A                                ;个位数送显示缓存
  151.                 MOV                A,YJ1
  152.                 JZ                DISP11                                ;结果是否为一位数
  153.                 MOV                B,#10
  154.                 MOV                A,YJ1
  155.                 DIV                AB
  156.                 MOV                YJ1,A
  157.                 MOV                A,B
  158.                 MOV                33H,A                                ;十位送显示缓存
  159.                 MOV                A,YJ1
  160.                 JZ                DISP11                                ;结果是否为二位数
  161.                 MOV                32H,A                                ;百位数送显示缓存
  162. DISP11:        LJMP        MLOOP
  163. DISP:        MOV                R0,#DBUF                        ;显示子程序
  164.                 MOV                R1,#TEMP+4
  165.                 MOV                R2,#5
  166. DP10:        MOV                DPTR,#SEGTAB
  167.                 MOV                A,@R0
  168.                 MOVC        A,@A+DPTR
  169.                 MOV                @R1,A
  170.                 INC                R0
  171.                 DEC                R1
  172.                 DJNZ        R2,DP10
  173.                 MOV                R0,#TEMP
  174.                 MOV                R1,#5
  175. DP12:        MOV                R2,#8
  176.                 MOV                A,@R0
  177. DP13:        RLC                A
  178.                 MOV                DIN,C
  179.                 CLR                CLK
  180.                 SETB        CLK
  181.                 DJNZ        R2,DP13
  182.                 INC                R0
  183.                 DJNZ        R1,DP12
  184.                 RET
  185. SEGTAB:        DB                3FH,06H,5BH,4FH,66H,6DH        ;段码定义
  186.                 DB                7DH,07H,7FH,6FH,77H,7CH
  187.                 DB                39H,5EH,79H,71H,00H,40H
  188. TESTKEY:        
  189.                 MOV                P1,#0FH                                ;读入键状态
  190.                 MOV                A,P1                                       
  191.                 CPL                A
  192.                 ANL                A,#0FH                                ;高四位不用
  193.                 RET
  194. KEYTABLE:                                                               
  195.                 DB                0DEH,0EDH,0DDH,0BDH        ;键码定义
  196.                 DB                0EBH,0DBH,0BBH,0E7H
  197.                 DB                0D7H,0B7H,07EH,07DH
  198.                 DB                07BH,077H,0BEH,0EEH
  199. GETKEY:                                                                ;读键子程序
  200.                 MOV                R6,#10
  201.                 ACALL        DELAY
  202.                 MOV                P1,#0FH
  203.                 MOV                A,P1
  204.                 CJNE        A,0FH,K12
  205.                 LJMP        MLOOP
  206. K12:        MOV                B,A
  207.                 MOV                P1,#0EFH
  208.                 MOV                A,P1
  209.                 CJNE        A,#0EFH,K13
  210.                 MOV                P1,#0DFH
  211.                 MOV                A,P1
  212.                 CJNE        A,#0DFH,K13
  213.                 MOV                P1,#0BFH
  214.                 MOV                A,P1
  215.                 CJNE        A,#0BFH,K13
  216.                 MOV                P1,#07FH
  217. ……………………

  218. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
所有资料51hei提供下载:
计算机.rar (40.08 KB, 下载次数: 32)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:568447 发表于 2019-6-20 23:46 | 显示全部楼层
对于小白来说有一点难
回复

使用道具 举报

ID:659838 发表于 2019-12-9 18:35 来自手机 | 显示全部楼层
谢谢大佬分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表