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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机程序只能顺序点亮LED,不能关闭?怎样能够完成?# B! k( w+ T  a5 l' Z
#include<reg51.h>  //包含单片机寄存器的头文件
0 V3 N3 {4 W4 y' m+ L' v" T/ `sbit S1=P1^0;     //将S1位定义为P1.0
$ y  A2 Q/ Z4 |4 W6 [; K5 h- A
) M* H- W! Z. K% d$ C" c1 s8 W2 J/************延时us函数************************/
/ R. x& Y8 Z" j, v# h) F) t+ xvoid delayus(unsigned int j )* [7 W' A- \' `. O9 _: N" x
{& S) k! W+ w: d. C
4 z0 z/ f7 Z8 Y, `8 p: r3 U! C
    while(j--);
9 x  l+ ]( c1 |3 e0 _9 s) S: {}
4 `; F( {- N, J2 `' ?. G' V; C
  X- x+ i' s5 Z  }' ~# y$ [/*********************************************/7 ]# }% I- h6 Q. m) r
/*****************************7 F2 n( d& ?- Z" G, l4 S+ C
函数功能:主函数5 D( C# S' ]& ~" q& i; R& n
*****************************/& c  y. r; M; F$ l+ h
void main(void), S  t3 B& ^" e# v  v
{  
$ W+ P6 S7 P2 C* \$ S6 s   unsigned char i ;
, n) R' B9 P# e) V2 D  R9 t        i=0;                 //将i初始化为0
* c# t/ ~3 r" w* P% ~0 c6 M         
0 p+ z2 N& ~' G5 W# u        while(1)
2 g! L+ [$ K) c2 x3 Q- Y: y1 t3 w         {# N+ h- i1 S9 Q2 d4 N* }2 |+ G9 ^) [
                  if(S1==0)     //如果S1键按下
) z  }7 R- I7 Z' `2 J: X                   {+ Z& y8 \$ W8 C, `3 g& c, }
                          delayus(5);  //延时一段时间
, t( e' L# `0 O- @                          if(S1==0) //如果再次检测到S1键按下
. e" ~7 ?' s7 S" y8 _1 b                            i++;    //i自增1
4 J3 r7 q3 {! k6 D3 \2 ]( T6 D- d. B! U2 h5 ]/ F8 U2 v  [
                if(i==5)  //如果i=5,重新将其置为4
1 b8 y( H$ k0 h" s) G. H% a                           i=4;
: \3 ?8 Q/ B8 F0 y0 V                                
* v0 s/ H* o" o7 L5 _                   }* A7 N) B3 B% {
                 switch(i)   //使用多分支选择语句
3 G0 ~1 y7 a. g% N( v9 S7 Z# }                                 {
" g3 i$ p" U) j+ O/ b5 t/ @/ _                                   case 1: P0=0xfe;  //第一个LED亮: x6 \8 {* S: J( d# I4 a
                                          delayus(600);9 u* H( C* t% y& h
                                                 break;
7 h' f$ u( f5 g, _+ G& t/ m                                        case 2: P0=0xfc;  //第二个LED亮+ O* s) u3 ^% h9 C& L5 j
                                        delayus(800);
( z% s0 U7 h4 b! C  T                             break;7 x  w) A- l6 k+ D! q. L7 n9 ?9 Q: N
                                        case 30=0xf8;   //第三个LED亮
7 D: x; p( f$ Z" P5 }+ |4 F                                      delayus(1000);
' Q' {" w9 G; n- m" z4 ~                                  break;6 ^7 c& v2 X. R% r2 S+ Q% ]
                                        case 40=0xf0;   //第四个LED亮- o. Q) f1 P+ x% }; A1 M
                                      delayus(1200);# v. J9 ]* T  ^' d: D8 K: M: h
                                          break;
( C$ s# m7 i6 {! e, }                                3 y- P7 }% k! V; W2 }) k  O7 M& x" ~1 F
default:break;
+ {* X) g! f& ?' c; S, n4 Z2 v! B                                  }
8 b  b* e% A+ {! e/ z
3 _3 N9 B1 Y8 Q& E& @( `- T3 J        
/ b/ [, s+ d% g! t  R0 M$ A  x                                    }
: i) }* F" X2 n) K# @: f                                 }
' w2 ^7 h' A+ z2 G* a" L9 b  u
) B3 |! C0 n+ d5 ^) U, x
) @. Z" J1 X% e' `. [7 F1 H- w$ X, V2 V

" X  t) i3 c! k, h按住S1=0键点亮:第一个LED亮,第二个LED亮,第三个LED亮,第四个LED亮 ,可以。
6 Z4 l. J- ], @8 k, o( C( E9 t$ x' k7 i2 k4 [" x9 h

0 T$ N- Q1 n+ ~$ D% v# z
* h2 [  B# s- L放开S1=1键关闭:第四个LED灭,第三个LED灭,第二个LED灭,第一个LED灭,加上什么程序,弄了好久不能完成。. M: ?8 ^' O3 \( H; x, [
) R4 ^& }! N3 [, x! s

' q/ s# q3 H5 t) q/ ]" T
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    该用户从未签到

    3#
    发表于 2020-8-28 13:22 | 只看该作者
    1 Z. Q$ V& U8 S; }. z3 Z5 ^
    只要了解其工作原理,你就可以随心所欲地控制IO口输出任意高低点平点亮和关闭。
  • TA的每日心情
    开心
    2020-8-6 15:38
  • 签到天数: 2 天

    [LV.1]初来乍到

    4#
    发表于 2020-8-28 16:27 | 只看该作者
    switch前面加一段松开检测
    2 q" Z" ]6 p: E" J" Bif(S1==1)
    3 f, v' a5 `4 @) ~# |2 e' I1 p{
    ' G( _3 s1 M& D' r& E    delayus(5);
    4 Q7 c$ ?, I* w1 f    if(S1==1)
    5 ~3 q+ p, c" t; i8 v1 ?' n0 @    {+ ~# |# b, P+ g4 [/ E
            i--;
    9 w, y2 H, [6 u4 `. [+ k    }
    # C0 `1 U8 b( t- n6 c    if(i<0)
    * J7 @( B/ ]) g2 ?4 x2 j       i=0;
    % D5 @) S  Z0 f}( {# i; w7 @: J9 r; s8 P/ w* b
    switch中加一个case0
    6 e8 |! V" V. o2 E) bcase 0: P0=0xff;# z# h9 @8 k, S$ B2 U7 }% @( A
    break;9 m  ^4 O: f8 ~* W, l
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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