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

单片机程序程序问题,请大神指点

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机程序只能顺序点亮LED,不能关闭?怎样能够完成?
$ `/ O! Z! J  E( t#include<reg51.h>  //包含单片机寄存器的头文件
6 f! |  A+ I, x8 ~* r1 y/ ]- |sbit S1=P1^0;     //将S1位定义为P1.02 a+ @& d! D) }2 z

3 v+ W) E5 |5 g1 ?+ r- p/************延时us函数************************/
1 @1 {0 R4 e  p0 Q& b) Y* |0 I& [void delayus(unsigned int j )
1 H( J# d2 b* M# @" W( d9 }{2 u% c+ t* [% {: M4 e: w- n, z

& y) j0 s) P) f1 [6 V1 B    while(j--);: q( U- I7 i3 z. ]9 h
}
$ q- y! t( ]9 Y' `$ H5 K# W: f" {6 m- Z; I1 E. Q2 M& F! ^  u
/*********************************************/- H: c  `7 W: Y( |; @* p1 D, d
/*****************************
1 d" A- J2 {: U% X函数功能:主函数
2 ]- a# X) h* q- G) U*****************************/
, [& O. M3 F6 k. k, Nvoid main(void)2 S7 e  ?. X0 O; U! \& Z  S/ N
{  
9 N  w. h$ A3 _# {# s/ l: y( @   unsigned char i ;- F; ?+ V, _# h( X
        i=0;                 //将i初始化为04 E- k3 P: K% N
         + Y4 `2 V7 D/ G' a: z
        while(1)
) {. Q7 g  \( x! y         {
9 q4 F7 s* l$ T0 @, Y  g& L                  if(S1==0)     //如果S1键按下; O+ k2 x. u( ]6 V7 B; x; A
                   {
  V! g, }) G; j6 V                          delayus(5);  //延时一段时间
" q$ W" O6 I) y3 K! K                          if(S1==0) //如果再次检测到S1键按下
' }& ^5 s  D, \1 v/ l, K                            i++;    //i自增1% e. Q: l' |# D: _

  {) r# u0 J2 n                if(i==5)  //如果i=5,重新将其置为4
  V& t$ ~. s( s                           i=4;
+ W: |5 Z( U5 U& y+ G                                
/ l5 X" e2 j" K6 I                   }
" S7 T+ Y0 X" Y4 x& S) M                 switch(i)   //使用多分支选择语句
3 ]% x  C. `/ K6 T( V. H! H1 C                                 {
$ J4 p* c8 v- P8 W) I6 }+ n. I                                   case 1: P0=0xfe;  //第一个LED亮9 M0 a1 e  \$ ^# ?1 a1 E5 a! ^7 T
                                          delayus(600);
2 T9 A. [/ q7 }                                                 break;
! Y3 @4 z* ]" c                                        case 2: P0=0xfc;  //第二个LED亮: H( M+ L! f- _8 ^" l3 N1 G
                                        delayus(800);' z3 w1 J9 y- x5 H9 B
                             break;
( l* a% V2 L1 k                                        case 30=0xf8;   //第三个LED亮
9 a# Y/ x5 U* |: ]                                      delayus(1000);
& A' V1 z& x$ g7 H                                  break;5 N& q8 q& G# _  u
                                        case 40=0xf0;   //第四个LED亮6 y! N0 ~! [8 P% d  u& ]# a5 Y
                                      delayus(1200);) C1 N5 V* J1 Z8 i& H, K9 p
                                          break;
  I; w1 \8 O( k/ J. e% |* L* G) O                                
) C# P, i6 Z4 S9 |default:break;& G% F3 h+ A- ]- j+ f& `
                                  }$ T& ]% ^! x; Z0 Q6 ?4 K& h  V
$ |, Q! U6 X# c1 E) |3 f9 o; Y( T
        6 a  |& w3 X+ Z
                                    }$ R0 s' W/ r' x8 d5 c& i# G0 Y
                                 }
; G" G" Z7 q% a' H3 d( ^( ~# y! L" Z
4 N5 l0 v1 E  X; H1 z- n

3 K! U: K; h0 V& x' E5 ?( C  v
$ B; L! e! V) H- m; D8 l按住S1=0键点亮:第一个LED亮,第二个LED亮,第三个LED亮,第四个LED亮 ,可以。$ q# Z# {* c* Z: G8 @; Q, O
1 _( Z4 q5 l5 U# d: a: J
, q. K" a4 a, E( q

" k  L5 z* P/ ~放开S1=1键关闭:第四个LED灭,第三个LED灭,第二个LED灭,第一个LED灭,加上什么程序,弄了好久不能完成。$ G' y8 G/ G- O- }' C4 p
% k: `* i1 z: U' P  Q
- y/ T5 ^5 i3 q6 s' m
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-8-28 11:22 | 只看该作者
    放开后i延时自减

    该用户从未签到

    3#
    发表于 2020-8-28 13:22 | 只看该作者

    4 A1 S3 @# \/ Y2 @只要了解其工作原理,你就可以随心所欲地控制IO口输出任意高低点平点亮和关闭。
  • TA的每日心情
    开心
    2020-8-6 15:38
  • 签到天数: 2 天

    [LV.1]初来乍到

    4#
    发表于 2020-8-28 16:27 | 只看该作者
    switch前面加一段松开检测. }1 ~4 ], a7 F) Z
    if(S1==1); Q( Z% p  O5 h, s0 Q; c
    {. @1 V' J& ~; R- w3 D
        delayus(5);! g+ x3 Q) ~2 L
        if(S1==1)
    8 T& v  D6 e; ?3 p6 z    {5 I! ?/ M- p0 b( J$ o% f* |
            i--;( j% Y+ ]6 U% s  J, C) I) K
        }1 I5 s0 e% n  i! O2 M
        if(i<0)2 b6 W8 ?* Q: ~! ~
           i=0;7 `' ^! o+ F( z  N
    }5 Y* u* L# J3 k* m0 S
    switch中加一个case0
    ( @9 Q7 v. g) {$ a+ W$ o: }% kcase 0: P0=0xff;
    # @3 k& l* N& Z7 s8 Abreak;  M0 w5 t. O. ^
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-22 03:08 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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