久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3787|回復: 3
收起左側

用單片機匯編寫的簡易計算器程序+Proteus仿真

[復制鏈接]
ID:565184 發表于 2019-8-8 14:36 | 顯示全部樓層 |閱讀模式
  1. YJ        EQU     50H                 ;結果存放
  2. YJ1       EQU     51H                 ;中間結果存放
  3. GONG      EQU     52H                  ;功能鍵存放
  4.           ORG     0000H
  5. START:    MOV     R3,#0                ;初始化顯示為空
  6.           MOV     GONG,#0      
  7.           MOV     32H,#00H
  8.           MOV     33H,#00H
  9.           MOV     34H,#00H
  10. MLOOP:    CALL    DISP                 ;調顯示子程序
  11. WAIT:     CALL    TESTKEY              ;判斷有無按鍵
  12.           JZ      WAIT                 ;判斷累加器是否為0
  13.           CALL    GETKEY              ;讀鍵
  14.           INC     R3                  ;按鍵個數
  15.           CJNE    A,#0,NEXT1                 ;判斷是否數字鍵
  16.           LJMP    E1                  ;轉數字鍵處理
  17. NEXT1:    CJNE    A,#1,NEXT2
  18.           LJMP    E1
  19. NEXT2:    CJNE    A,#2,NEXT3
  20.           LJMP    E1
  21. NEXT3:    CJNE    A,#3,NEXT4
  22.           LJMP    E1
  23. NEXT4:    CJNE    A,#4,NEXT5
  24.           LJMP    E1
  25. NEXT5:    CJNE    A,#5,NEXT6
  26.           LJMP    E1
  27. NEXT6:    CJNE    A,#6,NEXT7
  28.           LJMP    E1
  29. NEXT7:    CJNE    A,#7,NEXT8
  30.           LJMP    E1
  31. NEXT8:    CJNE    A,#8,NEXT9
  32.           LJMP    E1
  33. NEXT9:    CJNE    A,#9,NEXT10
  34.           LJMP    E1
  35. NEXT10:   CJNE    A,#10,NEXT11        ;判斷是否功能鍵
  36.           LJMP    E2                  ;轉功能鍵處理
  37. NEXT11:   CJNE    A,#11,NEXT12
  38.           LJMP    E2
  39. NEXT12:   CJNE    A,#12, NEXT13
  40.           LJMP    E2
  41. NEXT13:   CJNE    A,#13,NEXT14
  42.           LJMP    E2
  43. NEXT14:   CJNE    A,#14,NEXT15
  44.           LJMP    E2
  45. NEXT15:   LJMP    E3                   ;判斷是否清除鍵
  46. E1:       CJNE    R3,#1,N1             ;判斷第幾次按鍵
  47.           LJMP    E11                  ;為第一個數字
  48. N1:       CJNE    R3,#2,N2
  49.           LJMP    E12                  ;為第二個數字
  50. N2:       CJNE    R3,#3,N3
  51.           LJMP    E13                  ;為第三個數字
  52. N3:       LJMP    E3                   ;第四個數字轉溢出
  53. E11:      MOV     R4,A                 ;輸入值暫存R4
  54.           MOV     34H,A                ;輸入值送顯示緩存
  55.           MOV     33H,#00H
  56.           MOV     32H,#00H
  57.           LJMP    MLOOP                ;等待再次輸入
  58. E12:      MOV     R7,A                 ;個位數暫存R7
  59.           MOV     B,#10
  60.           MOV     A,R4
  61.           MUL     AB                    ;十位數
  62.           ADD     A,R7
  63.           MOV     R4,A                  ;輸入值存R4
  64.           MOV     32H,#00H              ;輸入值送顯示緩存
  65.           MOV     33H,34H
  66.           MOV     34H,R7
  67.           LJMP    MLOOP                                        ;等待再次輸入
  68. E13:      MOV     R7,A
  69.           MOV     B,#10
  70.           MOV     A,R4
  71.           MUL     AB
  72.           JB      OV,E3                ;輸入溢出,如果OV等于1則轉E3
  73.           ADD     A,R7
  74.           JB      CY,E3                ;輸入溢出
  75.           MOV     R4,A
  76.           MOV     32H,33H              ;輸入值送顯示緩存
  77.           MOV     33H,34H
  78.           MOV     34H,R7
  79.           LJMP    MLOOP
  80. E3:       MOV    R3,#0                 ;按鍵次數清零
  81.           MOV    R4,#0                 ;輸入值清零
  82.           MOV    YJ,#0                        ;計算結果清零
  83.           MOV    GONG,#0                      ;功能鍵設為零      
  84.           MOV    32H,#00H              ;顯示清空
  85.           MOV    33H,#00H
  86.           MOV    34H,#00H
  87.           LJMP   MLOOP
  88. E2:        MOV    34H,#00H
  89.            MOV    33H,#00H
  90.            MOV    32H,#00H
  91.            MOV    R0,GONG              ;與上次功能鍵交換
  92.            MOV    GONG,A
  93.            MOV    A,R0
  94.            CJNE       A,#10,N21            ;判斷功能鍵
  95.            LJMP       JIA                  ;"+"
  96. N21:       CJNE    A,#11,N22
  97.            LJMP       JIAN                  ;"-"
  98. N22:       CJNE     A,#12,N23
  99.            LJMP       CHENG                 ;"*"
  100. N23:       CJNE    A,#13,N24
  101.            LJMP       CHU                   ;"/"
  102. N24:       CJNE    A,#0,N25
  103.            LJMP       FIRST                ;首次按功能鍵
  104. N25:       LJMP    DEN                     ;"="
  105. N4:        LJMP       E3
  106. FIRST:     MOV     YJ,R4            ;輸入值送結果
  107.            MOV     R3,#0             ;按鍵次數清零
  108.            LJMP       DISP1             ;結果處理
  109. JIA:       MOV     A,YJ              ;上次結果送累加器
  110.            ADD     A,R4              ;上次結果加輸入值
  111.            JB      CY,N4             ;溢出
  112.            MOV    YJ,A              ;存本次結果
  113.            MOV    R3,#0             ;按鍵次數清零
  114.            LJMP       DISP1
  115. JIAN:      MOV     A,YJ
  116.            SUBB       A,R4              ;上次結果減輸入值
  117.            JB         CY,N4             ;負數溢出
  118.            MOV    YJ,A
  119.            MOV    R3,#0
  120.            LJMP       DISP1
  121. CHENG:     MOV    A,YJ
  122.            MOV    B,A
  123.            MOV    A,R4
  124.            MUL    AB                ;上次結果乘輸入值
  125.            JB     OV,N4             ;溢出
  126.            MOV    YJ,A                 
  127.            LJMP   DISP1
  128. CHU:       MOV    A,R4
  129.            MOV    B,A
  130.            MOV    A,YJ
  131.            DIV    AB                ;上次結果除輸入值
  132.            MOV    YJ,A
  133.            MOV    R3,#0
  134.            LJMP   DISP1
  135. DEN:       MOV     R3,#0
  136.            LJMP       DISP1
  137. DISP1:     MOV    B,#10
  138.            MOV    A,YJ              ;結果送累加器
  139.            DIV    AB                ;結果除10
  140.            MOV    YJ1,A             ;暫存"商"
  141.            MOV    A,B               ;取個位數
  142.            MOV    34H,A             ;個位數送顯示緩存
  143.            MOV    A,YJ1
  144.            JZ     DISP11            ;結果是否為一位數
  145.            MOV    B,#10
  146.            MOV    A,YJ1
  147.            DIV    AB
  148.            MOV    YJ1,A
  149.            MOV    A,B
  150.            MOV    33H,A             ;十位送顯示緩存
  151.            MOV    A,YJ1
  152.            JZ     DISP11            ;結果是否為二位數
  153.            MOV    32H,A             ;百位數送顯示緩存
  154. DISP11:    LJMP    MLOOP


  155. DISP:            MOV R0,#34H                                ;動態顯示
  156. DIR1:            MOV DPTR,#SEGTAB
  157.                  MOV A,@R0
  158.                  MOVC A,@A+DPTR
  159.                 MOV P0,A
  160.                  CJNE R0,#34H,DIR2
  161.                    SETB        P2.0
  162.                  CALL D1MS
  163.                 CLR        P2.0
  164.                  DEC R0
  165.                  SJMP DIR1
  166. DIR2: CJNE R0,#33H,DIR3
  167.       SETB P2.1
  168.       CALL D1MS
  169.       CLR P2.1
  170.       DEC R0
  171.       SJMP        DIR1
  172. DIR3:         SETB        P2.2
  173.                 CALL D1MS
  174.                 CLR        P2.2
  175.       RET
  176. D1MS:   MOV    R7,#02H
  177. DMS:    MOV    R6,#0F0H
  178.         DJNZ   R6,$
  179.            DJNZ    R7,DMS      
  180.            RET



  181. SEGTAB: DB 0C0H,   0F9H,   0A4H,   0B0H
  182.         DB 099H,   092H,   082H,   0F8H                                          
  183.         DB 080H,   090H,   088H,   083H   
  184.         DB 0C6H,   0A1H,   086H,   08EH
  185. TESTKEY:  ACALL  DISP   
  186.            MOV    P1,#0FH              ;讀入鍵狀態
  187.            MOV    A,P1                 
  188.            CPL    A
  189.            ANL    A,#0FH            ;高四位不用
  190.            RET
  191. KEYTABLE:                       
  192.            DB      0EEH,0EDH,0DDH,0BDH  ;鍵碼定義
  193.            DB      0EBH,0DBH,0BBH,0E7H
  194.            DB      0D7H,0B7H,0DEH,0BEH
  195.            DB      07EH,07DH,07BH,077H
  196. GETKEY:   MOV     R6,#10            ;讀鍵子程序
  197.            ACALL  DELAY
  198.            MOV    P1,#0FH
  199.            MOV    A,P1
  200.            CJNE   A,#0FH,K12
  201.            LJMP   MLOOP
  202. K12:      MOV     B,A
  203.            MOV    P1,#0EFH
  204.            MOV    A,P1
  205.            CJNE   A,#0EFH,K13
  206.            MOV    P1,#0DFH
  207.            MOV    A,P1
  208.            CJNE   A,#0DFH,K13
  209.            MOV    P1,#0BFH
  210.            MOV    A,P1
  211.            CJNE   A,#0BFH,K13
  212.            MOV    P1,#07FH
  213.            MOV    A,P1
  214.            CJNE   A,#07FH,K13
  215.            LJMP   MLOOP
  216. K13:      ANL     A,#0F0H
  217.            ORL    A,B
  218.            MOV    B,A
  219.            MOV    R1,#16
  220.            MOV    R2,#0
  221.            MOV    DPTR,#KEYTABLE
  222. K14:      MOV     A,R2
  223.            MOVC   A,@A+DPTR
  224.            CJNE   A,B,K16
  225.            MOV    P1,#0FH
  226. K15:      MOV     A,P1
  227.            CJNE   A,#0FH,K15
  228.            MOV    R6,#10
  229.            ACALL  DELAY
  230.            MOV    A,R2
  231.            RET
  232. K16:      INC     R2
  233.            DJNZ   R1,K14
  234.            AJMP   MLOOP
  235. DELAY:    MOV     R7,#10            ;10ms延時子程序
  236. TS1:    MOV    R6,#0FFH           
  237. TS2:      NOP
  238.            NOP
  239.           DJNZ    R6,TS2
  240.            DJNZ   R7,TS1
  241.            RET
  242.        END
復制代碼


TIM截圖20190808143218.png

簡易計算器1.zip

70.63 KB, 下載次數: 80, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:1078925 發表于 2023-5-23 01:00 | 顯示全部樓層
有點問題,一起加油
回復

使用道具 舉報

ID:1136931 發表于 2024-11-19 17:05 | 顯示全部樓層
一起加油
回復

使用道具 舉報

ID:1142215 發表于 2025-1-1 22:50 來自手機 | 顯示全部樓層
這個程序用什么顯示啊,數碼管嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清视频在线 | 91视频三区 | 欧洲亚洲精品久久久久 | 亚洲欧美一区二区三区在线 | 国产二区av| 久热久热| 四虎永久在线精品免费一区二 | av在线免费播放 | 欧美一区二区三区视频在线观看 | 黄色欧美在线 | 免费在线精品视频 | 日韩在线观看一区 | 久久男人| 国产精品视频一区二区三 | 色综久久 | 国产精品久久久久久久久久久久 | 欧美黄色片 | 国产中文字幕av | 久久新 | 网页av| 精品美女| 欧美11一13sex性hd| 四虎成人精品永久免费av九九 | 亚洲午夜精品 | 黄视频国产 | 最新av在线网址 | 国产精品久久网 | 久久久夜夜夜 | 成人免费三级电影 | 精品在线一区二区三区 | 欧美精品一区二区三区在线 | 日韩图区 | 99亚洲综合| 理论片免费在线观看 | 欧美区在线 | 欧美日韩高清在线一区 | 超碰3| 日本久久一区二区三区 | 91精品久久久久久久久久 | 日韩欧美不卡 | 精品欧美激情在线观看 |