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

求助:单片机按键程序 按一下开,再按一下关,怎么写?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
学了几天了,今天想写个开关,结果下载后不是想要的,有没有哪位大神指导下,看看哪里出了问题,初学小白,勿喷呀!! c% `" s; i$ R: c% L9 h7 h
#include<reg52.h>4 z4 v/ e/ Q1 Y/ q. [0 L
sbit key1=P3^2;
9 _/ S8 S4 o1 H. k, y$ `6 }" u3 n; s  Y% M
unsigned char i;+ w2 e2 a( u3 u5 j& M
void delayms(unsigned int z)
, x, X( r& p7 i{  
1 \0 H# j- ?1 H) P6 c( F, l- ~$ i- `+ V/ Q' P% o) d! f* i
    unsigned int k,j;! b% b, P* J6 T! N+ B1 c
    for(k=z;k>0;k--)7 j  s2 q9 h9 _4 v; c
    for(j=110;j>0;j--);
# h7 V! B3 r8 k  [: C
% P  X0 a& x' A* [- Q7 @& k
" m9 }- Q! c% E# r' U  h}
  `/ G( P5 A4 ^$ L: w0 H. I( P7 m) h( H' N- W1 Y. r
1 x5 M  W* s( ?% ]: ?7 a9 O

" C4 z1 u! g. S3 w; y. ?    void key()& G, D! `. v: f) s
{0 [% t* s6 S3 Z! D# k& {! h" o
         
) {$ f' l4 F0 M0 k" [    if(key1==0)
! e( [8 U: o! ^& b    {
* ^- a) V. d$ _4 l        delayms(20);1 ]( t* c' L; c- ?. S
        if(key1==0)
; d- F( U) C7 h        {( Y0 C. E' d" k0 o/ P7 e( U, Y9 F$ l
       key1=i;
2 S% M) ]. `6 O# L       i++;$ B3 Z% [) T8 E- y% V( R% t
        }8 B! u  F6 }  @, N$ U
      if(i>=2)
4 V8 }/ R) S. C      {4 b( S8 t9 m$ t% r0 p& w. e
        i=0;0 I% E: {. i& ~6 G- P
      }" n2 x4 }" n& I# S4 ?
+ U, s2 [. F8 @9 S
: M: I2 @9 L! s
    }  & N3 a8 q7 a& ?! y! l1 f
}- F+ d3 x# x" m! ~5 K9 M
void main()# f* S$ }& A2 J
{
3 s/ s9 s" S- h; [" Y# M' iwhile(1)* |1 f( V8 z8 [( f& f9 E
{' X$ `+ |' Y; S+ @/ H
, Z1 a4 ^! C6 G+ Z
    key();& x1 u6 N0 J4 Z! f
    if(i==0)4 ]- R4 A! I4 s& e$ v
    {
2 S5 b4 M5 i  \9 G' J# Z        P0=0x00;: X; Y  k  _$ \0 J" p2 p
8 m: |" g9 P% ^, ?2 X0 l
    }  . Y/ o% s  c( O3 J% s/ p
     if(i==1)
9 X" b$ D  i& y& P7 p/ W5 ^     {( L* d' k3 e) h5 s. p
         P0=0xfe;9 H2 L% i2 I5 x- k$ I3 N( G/ _

8 ]1 _9 }+ \1 S1 X9 m     }
3 f0 u7 H. D5 j( p9 ?- G6 [6 f
- H* o, y0 }9 Y2 \8 {/ ^
. f& o  [: O# J+ y
( ?, \1 {' ~& g    }
+ Z. r& @5 X$ @1 b4 i8 K}
- \9 h6 w+ H) g+ e3 Y6 m9 V& d

该用户从未签到

2#
发表于 2021-4-8 09:49 | 只看该作者
按一下产生一个标志,再按一下对这个标志去反
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-4-8 14:14 | 只看该作者
    判断按键,如果是有效按键,输出取反即可。

    该用户从未签到

    4#
    发表于 2021-4-15 16:15 | 只看该作者
    按一下产生一个标志,$ n. e# B2 O7 D2 c8 X7 D, i) g
    每次有按键按下的时候,让这个标志去反,
    7 g  }% D* m+ Y( H或者用case语句
    7 b  x; j# V% s- b9 f' ucase   1:
    ; ^  Z) u! S6 h( e& h8 s$ {& D  Acase   2:
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-22 09:24 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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