找回密码
 注册
关于网站域名变更的通知
查看: 197|回复: 2
打印 上一主题 下一主题

请问这个51单片机按键单双击程序怎么不成功?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-1-4 12:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
#include "reg52.h"            
$ G' t6 w- {$ c4 c1 Z# P1 @) |; }7 D4 H
typedef unsigned int u16;      6 N5 v0 n+ ?( h0 |: p" ^8 [2 F
typedef unsigned char u8;
9 G& w  l) p+ q: J3 X( _sbit ROTARY_MUTE=P3^1;       //按键! {' M/ u  _3 }5 E; o$ l" f4 r/ u) J

) V9 |+ c6 n. h' Z1 o. t) s" M& Q  J  D+ J( ]
void keypros()6 t9 s# V9 D: p7 O, N7 V
{4 @* M& @2 {. v( U
    static bit key_down=0;  //按键按下标志位
" G% z6 x/ ^- ?  e, w    static  key_down_num=0;
, d, ~1 R3 ?; m- \( y    static u8 count1=0;" D  H: k. m$ ^  ?
    static u16 count2=0;
" t+ a  c5 Q! `2 D5 K1 R" t6 _* t    if(key_down==1)              
7 \1 b9 H5 q  c- K6 P0 M) T    {; @1 z4 U. [/ M
        count2++;                  
* \* f# x9 r+ T' C4 c        if(count2>20000)           
3 O: S6 q1 a4 d8 ]* P        {
3 h, Y5 o0 B8 V% _            count2=0;                           
" }7 l5 ^0 G1 N- V# r$ E) c6 Q3 `            if(key_down_num==1)               n# v+ Z5 Y# s3 I" _, {/ R' Y9 D
            {% R% s+ b8 {. z2 _
                 key_down_num=0;' X* U1 ]  {- u9 T& o- R
                 P2=0X01;) G+ C8 F0 y5 ~# _3 S
                 key_down=0;
; m2 }) I- _/ i) F: Z9 n' A+ s            }
+ B- t7 z4 s  i2 h3 s            if(key_down_num==2)! Z5 M$ f2 i4 P+ N) L% W) f: |
            {8 \3 H; E8 S1 E: K' N: C
                key_down_num=0;; q! R( }- a2 k  \
                P2=0x00;
3 ^, M6 Z$ d2 F, k) y                key_down=0;% G' s6 C0 S- }# f$ k3 v( w/ R
            }5 F6 O" u2 S7 j, Q3 a7 i/ q
        }& J- ?8 S! X' q. v, a
                if(ROTARY_MUTE==1)        - X! [" K# W. Q) L: w
                {
. |) [  ?- G5 t+ n1 l) `. {& ^                         if(ROTARY_MUTE==0)              
7 r: M/ j, l7 L9 R( u2 L! m                        {        
- g3 Q: h! \! [8 l  r! X                         key_down_num++;                    
6 V) t, G5 X6 m                        }
* r$ [$ _( q0 ^1 |! Q* v                }7 \7 C' V+ v( z% w# d) X2 t6 \0 A# E5 B
        }& z2 j3 I3 H* m$ H

5 _8 O8 Z3 ^* v% d6 W    else                       
$ y5 J8 h- o; h; u    { " R9 p3 \: j5 c! s5 z/ j# c
        if(ROTARY_MUTE==0)              
" _8 d9 ?: ?! Q! K" [        {! G; o" g5 F: f$ }& S* [: I' B
            count1++;                     ; I8 m* e$ p' n! |
            if(count1>100)               
, E. ^5 H# @7 q+ S& n            {4 x% P1 L7 O6 O2 i# w
                count1=0;                   1 A" X+ w/ U8 U0 j3 b/ E- o
                if(ROTARY_MUTE==0)         
  }5 @- f; c+ G0 r* ?0 _6 k                {2 w9 y3 P' E$ J- g
                    key_down=1;
" r5 V& D; e1 g          key_down_num++;                    # N1 g! ]! ]- ?+ G; c. r
                }6 s2 r# v0 e4 V. ?
            }
1 K* V/ J' _- I6 T* M        }
1 P3 T! \$ h1 q) ^! J        else
) K" l* u* f% d1 J        {" a7 K2 V* f0 c: g2 B1 W
            count1=0;                     
% |- p- }+ C. X3 ?  N        }! u8 a9 }  }& y; S
    }; t/ a! m$ g0 T8 b" r6 Z' \
. i5 p( ^4 z: f; i! o3 r6 x4 G
# ?/ J! V) I- h  E; [4 y
}
! M( V0 m* ?( ^! R7 O7 o
2 S  T( ^" U: X( x* c
* B6 E; D6 J; u9 P/ B4 a& A0 |void main()
- y0 a; H/ x% e' `6 q{   
; S/ Q8 P+ H2 S* v$ y! B    while(1)- H; C% J+ a+ o2 K
    {    + c3 J- i; b2 w/ r) q( _% Y7 u
        keypros();  //按键处理函数   
* R4 o$ z8 R) S, Q. a    }        8 K5 x9 B& ~! ?. l# p/ i) _
}. J' `8 K7 t6 X

# j% b& S2 g/ {1 @) ~; q

该用户从未签到

2#
发表于 2022-1-4 13:30 | 只看该作者
以#include "reg52.h"为第1行
* l0 F+ V# x0 P7 N1 V7 i1 k1 P由第33到35行的时间太短(几个us)% m  Z. K% U3 j+ r( \
不足以检测到按键按下

该用户从未签到

3#
发表于 2022-1-4 14:23 | 只看该作者

* {1 j- P6 ]5 L, m: `你可以改成一定时间内计时是否按下第二次,比如300ms,不要死循环在那里等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 06:04 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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