找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1192|回复: 0
打印 上一主题 下一主题
收起左侧

STC-B学习板按键消抖计数 keil单片机ASM版

[复制链接]
跳转到指定楼层
楼主
ID:603956 发表于 2019-8-26 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我自己做的程序。
不喜勿喷。。

希望能对大家有所帮助
  1. $include(STC15F2K60S2.H)
  2. FOSC      EQU   11059  
  3. TCLICK    EQU   50      ;基础定时器   uS
  4. NMAX_KEY  EQU   20      ;次
  5.                                                                
  6. DATA_TH0  EQU   256-(FOSC/120*TCLICK+50)/100  ;定时器0 工作方式2:8bit重装、用作256uS以内定时  定时初值=(256-Fosc×定时时间/12)

  7. CLICK_50uS       BIT            00H      ;=100uS滴答信号
  8. CLICK_1mS        BIT            01H      ;=1mS  滴答信号
  9. CLICK_50mS       BIT            02H      ;=20mS 滴答信号
  10. CLICK_200mS      BIT            03H
  11. CLICK_1S         BIT            04H      ;=1S   滴答信号
  12. CLICK_1Min       BIT            05H      ;=1Min 滴答信号
  13. CLICK_1HOUR      BIT            06H

  14. KEY1             BIT            P3.2      ;按键及时值
  15. KEY2             BIT            P3.3
  16. KEY3             BIT            0AH
  17. KEYR             BIT            0BH
  18. KEYD             BIT            0CH
  19. KEYC             BIT            0DH
  20. KEYL             BIT            0EH
  21. KEYU             BIT            0FH   

  22. KEY1_C           BIT            10H                ;按键当前状态
  23. KEY2_C           BIT            11H
  24. KEY3_C           BIT            12H
  25. KEYR_C           BIT            13H
  26. KEYD_C           BIT            14H
  27. KEYC_C           BIT            15H
  28. KEYL_C           BIT            16H
  29. KEYU_C           BIT            17H

  30. KEY1_P           BIT            18H                ;按键上一个状态
  31. KEY2_P           BIT            19H
  32. KEY3_P           BIT            1AH
  33. KEYR_P           BIT            1BH
  34. KEYD_P           BIT            1CH
  35. KEYC_P           BIT            1DH
  36. KEYL_P           BIT            1EH
  37. KEYU_P           BIT            1FH         

  38. VKEY1            BIT            20H      ;按键事件值
  39. VKEY2            BIT            21H
  40. VKEY3            BIT            22H
  41. VKEYR            BIT            23H
  42. VKEYD            BIT            24H
  43. VKEYC            BIT            25H
  44. VKEYL            BIT            26H
  45. VKEYU            BIT            27H

  46. TIME_50uS        EQU            30H      ;100uS计数
  47. TIME_1mS         EQU            31H      ;1mS  计数
  48. TIME_50mS        EQU            32H      ;20mS 计数
  49. TIME_1S          EQU            34H      ;1S   计数
  50. TIME_1MIN        EQU            35H      ;1MIN  计数
  51. TIME_1HOUR       EQU            36H      ;1HOUR 计数

  52. SEC_1            EQU            40H
  53. SEC_10           EQU            41H
  54. MIN_1            EQU            42H
  55. MIN_10           EQU            43H
  56. HOUR_1           EQU            44H
  57. HOUR_10          EQU            45H
  58. MID_LINE         EQU            46H
  59. NO_DIS           EQU       5AH

  60. KEY_COUNTER      EQU            47H            ;按键消抖计数

  61. KEY1_COUNTER     EQU            48H                ;按键值统计
  62. KEY2_COUNTER     EQU            49H
  63. KEY3_COUNTER     EQU            4AH
  64. KEYR_COUNTER     EQU            4BH
  65. KEYD_COUNTER     EQU            4CH
  66. KEYC_COUNTER     EQU            4DH
  67. KEYL_COUNTER     EQU            4EH
  68. KEYU_COUNTER     EQU            4FH

  69. GROUP_Dis        EQU            57H     ;当前显示数据组  :  0~N
  70. N_MaxDis         EQU            58H                ;定义最大显示位数,可小于8、可大于8可控制显示亮度
  71. CurDis           EQU            59H     ;变量:记录显示位:1~8 有效  大于8无显示
  72. COUNT1           EQU            5BH
  73. COUNT2           EQU            5CH
  74. COUNT3           EQU            5DH
  75. COUNT4           EQU            5EH

  76. ;显示内容定义
  77. ;GROUP_Dis=0
  78. G0_A1            EQU                        HOUR_10        ; 请具体定义它们
  79. G0_A2            EQU                        HOUR_1
  80. G0_A3            EQU                        MID_LINE
  81. G0_A4            EQU                        MIN_10
  82. G0_A5            EQU                        MIN_1
  83. G0_A6            EQU                        MID_LINE
  84. G0_A7            EQU                        SEC_10
  85. G0_A8            EQU                        SEC_1

  86. ;GROUP_Dis=1
  87. G1_A1            EQU                        NO_DIS        ; 请具体定义它们
  88. G1_A2            EQU                        NO_DIS
  89. G1_A3            EQU                        NO_DIS
  90. G1_A4            EQU                        NO_DIS
  91. G1_A5            EQU                        COUNT4
  92. G1_A6            EQU                        COUNT3
  93. G1_A7            EQU                        COUNT2
  94. G1_A8            EQU                        COUNT1

  95. ;GROUP_Dis=2
  96. G2_A1            EQU                        MID_LINE
  97. G2_A2            EQU                        MID_LINE
  98. G2_A3            EQU                        MID_LINE
  99. G2_A4            EQU                        GROUP_Dis
  100. G2_A5            EQU                        MID_LINE
  101. G2_A6            EQU                        MID_LINE
  102. G2_A7            EQU                        MID_LINE
  103. G2_A8            EQU                        SEC_1

  104. ORG   0000H
  105.         LJMP   START
  106. ORG   0003H
  107.                 RETI
  108. ORG   0013H
  109.                 RETI
  110. ;-----------------------------------------TIMER0中断----------------------
  111. ORG   000BH
  112.         JMP   INT_T0

  113. ;---------------------------------------主程序----------------------------
  114. ORG   0100H                     
  115. START:
  116. ;-----------------------系统初始化-----------------
  117.         MOV    P0M1, #00000000B            ;00——准双向口   01——推挽   10——高阻输入         11——OC
  118.         MOV    P0M0, #11111111B
  119.         MOV    P2M1, #00000000B
  120.             MOV    P2M0, #00001001B
  121. ;----------------------变量初始化--------------------
  122.                 MOV   TIME_50uS,    #20
  123.         MOV   TIME_1mS,     #50
  124.         MOV   TIME_50mS,    #20   
  125.         MOV   TIME_1S,      #60
  126.                 MOV   TIME_1MIN,    #60
  127.                 MOV   TIME_1HOUR,   #24

  128.                 CLR   CLICK_50uS
  129.         CLR   CLICK_1mS        
  130.         CLR   CLICK_50mS  
  131.                 CLR   CLICK_1S
  132.                 CLR   CLICK_1Min
  133.                 CLR   CLICK_1HOUR

  134.                 CLR   VKEY1
  135.                 CLR   VKEY2
  136.                 CLR   VKEY3
  137.                 CLR   VKEYR
  138.                 CLR   VKEYD
  139.                 CLR   VKEYC
  140.                 CLR   VKEYL
  141.                 CLR   VKEYU

  142.         SETB  KEY1_P
  143.         SETB  KEY2_P
  144.         SETB  KEY3_P
  145.         SETB  KEYR_P
  146.         SETB  KEYD_P
  147.         SETB  KEYC_P
  148.         SETB  KEYL_P
  149.         SETB  KEYU_P

  150.                 MOV   KEY_COUNTER,  #NMAX_KEY

  151.                 MOV   KEY1_COUNTER, #(80H+NMAX_KEY/3*2)
  152.             MOV   KEY2_COUNTER, #(80H+NMAX_KEY/3*2)
  153.                 MOV   KEY3_COUNTER, #(80H+NMAX_KEY/3*2)
  154.                 MOV   KEYR_COUNTER, #(80H+NMAX_KEY/3*2)
  155.                 MOV   KEYD_COUNTER, #(80H+NMAX_KEY/3*2)
  156.             MOV   KEYC_COUNTER, #(80H+NMAX_KEY/3*2)
  157.                 MOV   KEYL_COUNTER, #(80H+NMAX_KEY/3*2)
  158.                 MOV   KEYU_COUNTER, #(80H+NMAX_KEY/3*2)

  159.         MOV   CurDis,       #1        ;初始显示位       
  160.                 MOV   N_MaxDis,     #8
  161.                 MOV   GROUP_Dis,    #1
  162.                              
  163.                 MOV   SEC_1,        #0                  ;示例:其它显示内容赋给对应变量
  164.                 MOV   SEC_10,       #0
  165.                 MOV   MIN_1,        #0
  166.                 MOV   MIN_10,       #0
  167.                 MOV   HOUR_1,       #0
  168.                 MOV   HOUR_10,      #0
  169.                 MOV   MID_LINE,     #10
  170.                 MOV   NO_DIS,       #11

  171.         MOV   COUNT4,       #5
  172.                 MOV   COUNT3,       #0
  173.                 MOV   COUNT2,       #0
  174.                 MOV   COUNT1,       #0
  175. ;------------------系统设备初始化----------------------------------
  176.         MOV   TMOD, #22H    ; C/T0 mode is 2 and C/T1 'S MOD is 2
  177.                 MOV   PCON, #80H     ;  
  178.                 MOV   TH0,  #DATA_TH0
  179.                 SETB  IT0                                             ;设置  INT0  为下降沿触发
  180.                 SETB  IT1     
  181.         SETB  TR0                                                 ;启动时钟
  182.         MOV   IE,   #10000010B                    ;开中断:                                         
  183. ;-----------------------------------主循环------------------------------------------
  184. MAINLOOP:JBC   CLICK_50uS,  C_50uS
  185.          JBC   CLICK_1mS,   C_1mS  
  186.          JBC   CLICK_50mS,  C_50mS
  187.              JBC   CLICK_1S,    C_1S
  188.              JBC   CLICK_1Min,  C_1Min
  189.                  JBC   CLICK_1HOUR, C_1HOUR
  190.                  JBC   VKEY1,       C_KEY1  
  191.                  JBC   VKEY2,       C_KEY2
  192.                  JBC   VKEY3,       C_KEY3
  193.                  JBC   VKEYR,       C_KEYR
  194.                  JBC   VKEYD,       C_KEYD
  195.                  JBC   VKEYC,       C_KEYC
  196.                  JBC   VKEYL,       C_KEYL
  197.                  JBC   VKEYU,       C_KEYU
  198.          JMP   MAINLOOP                                  
  199. ;-----------------------------------------------------
  200. C_50uS:  JMP   TASK_50uS
  201. C_1mS:   JMP   TASK_1mS  
  202. C_50mS:  JMP   TASK_50mS
  203. C_1S:    JMP   TASK_1S
  204. C_1Min:  JMP   TASK_1Min
  205. C_1HOUR: JMP   TASK_1HOUR
  206. C_KEY1:  JMP   TASK_KEY1
  207. C_KEY2:  JMP   TASK_KEY2
  208. C_KEY3:  JMP   TASK_KEY3
  209. C_KEYR:  JMP   TASK_KEYR
  210. C_KEYD:  JMP   TASK_KEYD
  211. C_KEYC:  JMP   TASK_KEYC
  212. C_KEYL:  JMP   TASK_KEYL
  213. C_KEYU:  JMP   TASK_KEYU
  214. ;-----------------------------------收到指令-------------------------
  215. NEW_COMMAND:
  216.                                                           ;请在这里计算要显示的全部变量
  217.          JMP    MAINLOOP
  218. ;------------------------------------按键------------------------------
  219. TASK_KEY1:
  220.          INC    COUNT1
  221.                  MOV    A,   COUNT1
  222.                  CJNE   A,   #10,  T_KEY1_5
  223.                  MOV    COUNT1,   #0
  224.          INC    COUNT2
  225.                  MOV    A,   COUNT2
  226.                  CJNE   A,   #10,  T_KEY1_5
  227.                  MOV    COUNT2,   #0
  228. T_KEY1_1:INC    COUNT3
  229.                  MOV    A,   COUNT3
  230.                  CJNE   A,   #10,  T_KEY1_5
  231.                  MOV    COUNT3,   #0
  232. T_KEY1_2:INC    COUNT4
  233.                  MOV    A,   COUNT4
  234.                  CJNE   A,   #10,  T_KEY1_5
  235.                  MOV    COUNT4,   #0
  236. T_KEY1_5:JMP    MAINLOOP


  237. TASK_KEY2:
  238.          DEC    COUNT1
  239.                  MOV    A,   COUNT1
  240.                  CJNE   A,   #0FFH,  T_KEY2_5
  241.                  MOV    COUNT1,   #9
  242.          DEC    COUNT2
  243.                  MOV    A,   COUNT2
  244.                  CJNE   A,   #0FFH,  T_KEY2_5
  245.                  MOV    COUNT2,   #9
  246. T_KEY2_1:DEC    COUNT3
  247.                  MOV    A,   COUNT3
  248.                  CJNE   A,   #0FFH,  T_KEY2_5
  249.                  MOV    COUNT3,   #9
  250. T_KEY2_2:DEC    COUNT4
  251.                  MOV    A,   COUNT4
  252.                  CJNE   A,   #0FFH,  T_KEY2_5
  253.                  MOV    COUNT4,   #9
  254. T_KEY2_5:JMP    MAINLOOP
  255. TASK_KEY3:
  256.          JMP    MAINLOOP
  257. TASK_KEYR:
  258.          JMP    MAINLOOP
  259. TASK_KEYD:
  260.          JMP    MAINLOOP
  261. TASK_KEYC:
  262.          JMP    MAINLOOP
  263. TASK_KEYL:
  264.          JMP    MAINLOOP
  265. TASK_KEYU:
  266.          JMP    MAINLOOP
  267. ;-------------------------------------定时任务-------------------------
  268. TASK_50uS:
  269.          
  270. T50uS_1: JMP   MAINLOOP
  271. ;------------------------------  
  272. TASK_1mS:MOV    P0,     #00000000B        ;关显示
  273.          CLR    P2.3
  274.          MOV    A,      CurDis       
  275.                         
  276.                  CJNE   A,      #0FFH,   T1mS_1
  277.                  MOV    A,      #00000001B
  278.                  MOV    R0,     GROUP_Dis
  279.                  INC    R0
  280. T1mS_0:  RR     A
  281.                  DJNZ   R0,     T1mS_0   

  282.                  MOV    P0,     N_MaxDis                   ;CurDis=0FFH时,显示LED灯

  283.          SETB   P2.3         
  284.                  JMP    T1mS_2

  285. T1mS_1:         ANL    A,      #11111000B                 
  286.                  JNZ    T1mS_2                                          ;不显示大于8的位数

  287.          MOV    A,      GROUP_Dis                   ;送段选
  288.                  RL     A                                                          ;选显示组
  289.                  RL     A
  290.                  RL     A
  291.                  ADD    A,      CurDis                     
  292.                  MOV    DPTR,   #TAB_GROUP_Dis
  293.                  MOVC   A,      @A+DPTR
  294.                  MOV    R0,     A
  295.                  MOV    A,      @R0
  296.                  MOV    DPTR,   #TAB_Decode
  297.                  MOVC   A,      @A+DPTR
  298.                  MOV    P0,     A                                           ;段选 送P0口

  299.          MOV    P2,      CurDis                                         ;位选送 P2口
  300.                                   
  301. T1mS_2:  INC    CurDis                    ;确定下一次要显示的位             
  302.                  MOV    A,      CurDis
  303.                  CJNE   A,      N_MaxDis,  T1mS_3
  304.                  MOV    CurDis, #0FFH

  305. T1mS_3:         JB     KEY1,   T1mS_4             ;处理按键
  306.                  DEC    KEY1_COUNTER                           ;按键统计
  307. T1mS_4:  JB     KEY2,   T1mS_5
  308.          DEC    KEY2_COUNTER

  309. T1mS_5:  DJNZ   KEY_COUNTER,  T1mS_END
  310.                  MOV    KEY_COUNTER,  #NMAX_KEY   ;统计次数到,重置统计次数

  311.          MOV   A,      KEY1_COUNTER           ;处理KEY1
  312.                    MOV   KEY1_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  313.                  RLC   A
  314.                  MOV   KEY1_C,  C                       ;得到按键 KEY1 当前的统计状态
  315.                  JB    KEY1_C,  T1mS_6                   ;处理按键 KEY1 对应的操作(见相应流程图)
  316.                  JNB   KEY1_P,  T1mS_7       
  317.                  CLR   KEY1_P
  318.                  SETB  VKEY1                            ;按键KEY1事件发生(下降沿)
  319.          JMP   T1mS_7
  320. T1mS_END: JMP    MAINLOOP
  321. T1mS_6:  JB    KEY1_P,  T1mS_7       
  322.                  SETB  KEY1_P

  323. T1mS_7:  MOV   A,      KEY2_COUNTER           ;处理KEY2
  324.                    MOV   KEY2_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  325.                  RLC   A
  326.                  MOV   KEY2_C,  C                       ;得到按键 KEY2 当前的统计状态
  327.                  JB    KEY2_C,  T1mS_8                   ;处理按键 KEY2 对应的操作(见相应流程图)
  328.                  JNB   KEY2_P,  T1mS_9       
  329.                  CLR   KEY2_P
  330.                  SETB  VKEY2                            ;按键KEY2事件发生(下降沿)
  331.          JMP   T1mS_9
  332. T1mS_8:  JB    KEY2_P,  T1mS_9       
  333.                  SETB  KEY2_P

  334. T1mS_9:         MOV   A,      KEY3_COUNTER           ;处理KEY3
  335.                    MOV   KEY3_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  336.                  RLC   A
  337.                  MOV   KEY3_C,  C                       
  338.                  JB    KEY3_C,  T1mS_A                  
  339.                  JNB   KEY3_P,  T1mS_B       
  340.                  CLR   KEY3_P
  341.                  SETB  VKEY3                           
  342.          JMP   T1mS_B
  343. T1mS_A:  JB    KEY3_P,  T1mS_B       
  344.                  SETB  KEY3_P

  345. T1mS_B:         MOV   A,      KEYL_COUNTER           ;处理KEYL
  346.                    MOV   KEYL_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  347.                  RLC   A
  348.                  MOV   KEYL_C,  C                       
  349.                  JB    KEYL_C,  T1mS_C                  
  350.                  JNB   KEYL_P,  T1mS_D       
  351.                  CLR   KEYL_P
  352.                  SETB  VKEYL                           
  353.          JMP   T1mS_D
  354. T1mS_C:  JB    KEYL_P,  T1mS_D       
  355.                  SETB  KEYL_P

  356. T1mS_D:         MOV   A,      KEYD_COUNTER           ;处理KEYD
  357.                    MOV   KEYD_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  358.                  RLC   A
  359.                  MOV   KEYD_C,  C                       
  360.                  JB    KEYD_C,  T1mS_E                  
  361.                  JNB   KEYD_P,  T1mS_F       
  362.                  CLR   KEYD_P
  363.                  SETB  VKEYD                           
  364.          JMP   T1mS_F
  365. T1mS_E:  JB    KEYD_P,  T1mS_F       
  366.                  SETB  KEYD_P

  367. T1mS_F:         MOV   A,      KEYC_COUNTER           ;处理KEYC
  368.                    MOV   KEYC_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  369.                  RLC   A
  370.                  MOV   KEYC_C,  C                       
  371.                  JB    KEYC_C,  T1mS_G                  
  372.                  JNB   KEYC_P,  T1mS_H       
  373.                  CLR   KEYC_P
  374.                  SETB  VKEYC                           
  375.          JMP   T1mS_H
  376. T1mS_G:  JB    KEYC_P,  T1mS_H       
  377.                  SETB  KEYC_P

  378. T1mS_H:         MOV   A,      KEYL_COUNTER           ;处理KEYL
  379.                    MOV   KEYL_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  380.                  RLC   A
  381.                  MOV   KEYL_C,  C                       
  382.                  JB    KEYL_C,  T1mS_I                  
  383.                  JNB   KEYL_P,  T1mS_J       
  384.                  CLR   KEYL_P
  385.                  SETB  VKEYL                           
  386.          JMP   T1mS_J
  387. T1mS_I:  JB    KEYL_P,  T1mS_J       
  388.                  SETB  KEYL_P

  389. T1mS_J:         MOV   A,      KEYU_COUNTER           ;处理KEYU
  390.                    MOV   KEYU_COUNTER,         #(80H+NMAX_KEY/3*2)           ;重置下一轮统计初值
  391.                  RLC   A
  392.                  MOV   KEYU_C,  C                       
  393.                  JB    KEYU_C,  T1mS_K                  
  394.                  JNB   KEYU_P,  T1mS_L       
  395.                  CLR   KEYU_P
  396.                  SETB  VKEYU                           
  397.          JMP   T1mS_L
  398. T1mS_K:  JB    KEYU_P,  T1mS_L       
  399.                  SETB  KEYU_P

  400. T1mS_L:         JMP    MAINLOOP

  401. TAB_GROUP_Dis:   DB   G0_A1,G0_A2,G0_A3,G0_A4,G0_A5,G0_A6,G0_A7,G0_A8
  402.                  DB   G1_A1,G1_A2,G1_A3,G1_A4,G1_A5,G1_A6,G1_A7,G1_A8
  403.                              DB   G2_A1,G2_A2,G2_A3,G2_A4,G2_A5,G2_A6,G2_A7,G2_A8

  404. TAB_Decode:         DB   03FH                        ; 0
  405.              DB   06H                        ; 1
  406.                          DB   5BH                    ; 2
  407.                          DB   4FH                        ; 3
  408.                          DB   66H                        ; 4
  409.                          DB   6DH                        ; 5
  410.                          DB   7DH                        ; 6
  411.                          DB   07H                        ; 7
  412.                          DB   7FH                        ; 8
  413.                          DB   6FH                        ; 9
  414.                          DB   40H                        ; -
  415.                          DB   00H           ; 不显示
  416. ;------------------------------
  417. TASK_50mS:
  418.         JMP   MAINLOOP
  419. ;------------------------------
  420. TASK_1S:
  421.         INC   SEC_1
  422.                 MOV   A,        SEC_1
  423.                 CJNE  A,        #10,    T_1S_1
  424.                 MOV   SEC_1,    #0
  425.                 INC   SEC_10
  426.                 MOV   A,        SEC_10
  427.                 CJNE  A,        #6,     T_1S_1
  428.                 MOV   SEC_10,   #0
  429. T_1S_1: JMP   MAINLOOP
  430. ;------------------------------
  431. TASK_1Min:
  432.         INC   MIN_1
  433.                 MOV   A,        MIN_1
  434.                 CJNE  A,        #10,    T_1M_1
  435.                 MOV   MIN_1,    #0
  436.                 INC   MIN_10
  437.                 MOV   A,        MIN_10
  438.                 CJNE  A,        #6,     T_1M_1
  439.                 MOV   MIN_10,   #0
  440. T_1M_1:JMP   MAINLOOP
  441. ;------------------------------
  442. TASK_1HOUR:
  443.         INC   HOUR_1
  444.                 MOV   A,        HOUR_1
  445.                 CJNE  A,        #10,    T_1H_1
  446.                 MOV   HOUR_1,   #0
  447.                 INC   HOUR_10
  448.                 MOV   A,        HOUR_10
  449.                 CJNE  A,        #2,     T_1H_1
  450.                 MOV   HOUR_10,  #0
  451. T_1H_1:JMP   MAINLOOP
  452. ;--------------------------------------INT_T0--------------------------
  453. INT_T0: SETB   CLICK_50uS
  454.               DJNZ   TIME_50uS,    EXIT_T0
  455.         MOV    TIME_50uS,    #20
  456.         SETB   CLICK_1mS
  457.               DJNZ   TIME_1mS,     EXIT_T0
  458.         MOV    TIME_1mS,     #50
  459.             SETB   CLICK_50mS
  460.             DJNZ   TIME_50mS,    EXIT_T0
  461.         MOV    TIME_50mS,    #20
  462.             SETB   CLICK_1S
  463.             DJNZ   TIME_1S,      EXIT_T0
  464.         MOV    TIME_1S,      #60
  465.             SETB   CLICK_1Min
  466.             DJNZ   TIME_1MIN,    EXIT_T0
  467.         MOV    TIME_1MIN,    #60
  468.             SETB   CLICK_1HOUR                          
  469. EXIT_T0:RETI

  470.         END           
复制代码

按键消抖计数工程_ASM版.zip (79.99 KB, 下载次数: 4)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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