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

標題: 基于C51的簡易計算器 [打印本頁]

作者: 1019523858    時間: 2018-10-1 09:54
標題: 基于C51的簡易計算器
  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    32H,#00H
  8.            MOV    33H,#00H
  9.            MOV    34H,#00H
  10. MLOOP:    CALL    DISP                 ;調顯示子程序
  11. WAIT:     CALL    TESTKEY              ;判斷有無按鍵
  12.            JZ      WAIT                  
  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                ;輸入溢出
  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.       CLR P2.3
  162.       CALL D1MS
  163.       SETB P2.3
  164.       DEC R0
  165.       SJMP DIR1
  166. DIR2: CJNE R0,#33H,DIR3
  167.       CLR P2.2
  168.       CALL D1MS
  169.       CLR P2.2
  170.       DEC R0
  171.       SJMPDIR1
  172. DIR3: CALL D1MS
  173.       RET
  174. D1MS:   MOV    R7,#02H
  175. DMS:    MOV    R6,#0F0H
  176.         DJNZ   R6,$
  177.            DJNZ    R7,DMS      
  178.            RET
  179. SEGTAB: DB  3FH,   06H,   5BH,   4FH
  180.         DB 66H,   6DH,   7DH,  07H
  181.         DB 7FH,   6FH,   77H,  7CH   
  182.         DB 39H,   5EH,   79H,   71H
  183. TESTKEY:  ACALL  DISP   
  184.            MOV    P1,#0FH              ;讀入鍵狀態
  185.            MOV    A,P1                 
  186.            CPL    A
  187.            ANL    A,#0FH            ;高四位不用
  188.            RET
  189. KEYTABLE:                       
  190.            DB     0EEH,0EDH,0DDH,0BDH  ;鍵碼定義
  191.            DB     0EBH,0DBH,0BBH,0E7H
  192.            DB     0D7H,0B7H,0DEH,0BEH
  193.            DB     07EH,07DH,07BH,077H
  194. GETKEY:   MOV     R6,#10            ;讀鍵子程序
  195.            ACALL  DELAY
  196.            MOV    P1,#0FH
  197.            MOV    A,P1
  198.            CJNE   A,#0FH,K12
  199.            LJMP   MLOOP
  200. K12:      MOV     B,A
  201.            MOV    P1,#0EFH
  202.            MOV    A,P1
  203.            CJNE   A,#0EFH,K13
  204.            MOV    P1,#0DFH
  205.            MOV    A,P1
  206.            CJNE   A,#0DFH,K13
  207.            MOV    P1,#0BFH
  208.            MOV    A,P1
  209.            CJNE   A,#0BFH,K13
  210.            MOV    P1,#07FH
  211.            MOV    A,P1
  212.            CJNE   A,#07FH,K13
  213.            LJMP   MLOOP
  214. K13:      ANL     A,#0F0H
  215.            ORL    A,B
  216.            MOV    B,A
  217.            MOV    R1,#16
  218.            MOV    R2,#0
  219.            MOV    DPTR,#KEYTABLE
  220. K14:      MOV     A,R2
  221.            MOVC   A,@A+DPTR
  222.            CJNE   A,B,K16
  223.            MOV    P1,#0FH
  224. K15:      MOV     A,P1
  225.            CJNE   A,#0FH,K15
  226.            MOV    R6,#10
  227.            ACALL  DELAY
  228.            MOV    A,R2
  229.            RET
  230. K16:      INC     R2
  231.            DJNZ   R1,K14
  232.            AJMP   MLOOP
  233. DELAY:    MOV     R7,#10            ;10ms延時子程序
  234. TS1:    MOV    R6,#0FFH           
  235. TS2:      NOP
  236.            NOP
  237.           DJNZ    R6,TS2
  238.            DJNZ   R7,TS1
  239.            RET
  240.        END
復制代碼



作者: admin    時間: 2018-10-1 20:18
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 干干干操操操 | 玖玖视频免费 | 天天在线操 | 九色porny自拍视频 | 久久成人一区 | 二区av| 久久精品国产亚洲夜色av网站 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产高清视频一区 | 91精品久久久 | 欧美一级特黄aaa大片在线观看 | 九九久久免费视频 | 在线黄av| 午夜欧美 | 国产精品久久久99 | 国产精品久久av | 色婷婷激情综合 | 天堂一区 | 中文字幕久久精品 | 波多野结衣精品在线 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 亚洲精品一 | 久久99久久98精品免观看软件 | 成人国产免费观看 | 日韩久久精品视频 | 激情五月综合 | 亚洲在线观看视频 | 欧美最猛黑人 | 精品二区 | 成人在线播放网站 | 欧美一区二区三区,视频 | 午夜视频免费在线观看 | 97超碰免费| av二区三区| 成人国产一区二区三区精品麻豆 | 亚洲精品久久久久久一区二区 | 欲色av | www.日本三级| 日韩欧美在 | 99国内精品 | 黄视频免费观看 |