|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机程序只能顺序点亮LED,不能关闭?怎样能够完成?. I, ^3 O! T0 b7 u
#include<reg51.h> //包含单片机寄存器的头文件5 B( c# j, l2 L* ~4 Y
sbit S1=P1^0; //将S1位定义为P1.0 p5 t4 G( ^; s3 p+ p
~4 D) B4 I# f4 J5 {" H/************延时us函数************************/! ?* u# O/ `& W, _( B _: R
void delayus(unsigned int j )
/ h" S: G4 _( ]3 U* W/ H{ b* {, {1 `3 z
* L& t' h/ `4 o
while(j--);
3 A6 L3 X3 h7 ]}
8 A! {9 J, v' n, x3 _6 z
0 l* D. c% ? S$ E3 e/*********************************************/
" u# s7 H+ R8 R3 ?6 A2 k2 t/*****************************
* P& F. q. C+ M$ p# X* \) f/ m函数功能:主函数
+ g7 C6 B3 M ~*****************************/
; Z: |4 W% K* H) W% q9 Xvoid main(void)+ X: }4 O& n2 K* Q. c% H. a
{ & U! Y9 g* F+ Q% F* t0 }5 Z: J( [3 o
unsigned char i ;
' {3 T- l; v/ A% F, w i=0; //将i初始化为0: J( M: B- ~& I! k7 z% u
* E p% G/ c" T% l8 k5 z while(1)
+ Z% j7 @$ d) a- n: U5 Q- A {9 q. S. L% r! p
if(S1==0) //如果S1键按下
1 w/ O4 X! X: Q {
. P4 I# E& I3 v, M' b5 [7 N* H( e delayus(5); //延时一段时间2 P4 |6 d2 Q5 |3 \3 N
if(S1==0) //如果再次检测到S1键按下
$ \; o0 c' s' z i++; //i自增16 R/ _3 _' a o9 V2 e# Q
' D5 T/ a3 |! w" p I- S if(i==5) //如果i=5,重新将其置为4
) O' E9 v3 c4 u i=4;6 f3 z4 A, Q' ^+ }3 O# T6 N# }
( W5 `4 Y; F4 y. J
}
) _# ~$ b8 P5 W* u% D5 R switch(i) //使用多分支选择语句
- q; s5 a$ O; }+ _ @. f {
% m; p2 Z) O) Z2 x case 1: P0=0xfe; //第一个LED亮/ n" e( p5 u- V/ i
delayus(600);8 F" K1 M: @+ e- q+ @4 A+ N
break;) c s7 y: s! X1 |2 x" g e6 k
case 2: P0=0xfc; //第二个LED亮5 n' `0 t8 t! O3 ?% a! n; H1 b
delayus(800);
$ ~' c+ w# ?2 q" d: T7 `7 Z. j break;# Z; P, M6 M* I8 ~! V
case 3 0=0xf8; //第三个LED亮& l! z3 \ g) U9 b0 ]4 j! e
delayus(1000);
2 t: ?; l! y9 [* g2 \: d8 v break;4 ^- p( `4 Q0 y6 ^/ U: f1 k
case 4 0=0xf0; //第四个LED亮) `8 o% [: a3 D
delayus(1200);0 Q( f8 Z3 o- l* T
break;
6 U u7 P% L$ u n# _3 ^6 O$ b0 v' h
: i. @9 h( o$ `& t: A6 jdefault:break;
! s& `- _3 x8 f; W+ N# \, I) M2 } }& Z' ~: N, m7 I, m5 n+ q1 R
( H( p) s( m# K5 G
) R9 ^4 l) P6 G9 E/ f( e& Y }
7 O4 g& g+ y- G }0 G' \0 L/ g: R! b
- P) Y4 J+ T8 p2 g8 I0 i9 \3 S
# s8 _$ _7 L+ c; E$ ~* _# A1 a4 m, A5 V) a4 e. L# E' P y5 }
, a# D4 `! u: B+ M
按住S1=0键点亮:第一个LED亮,第二个LED亮,第三个LED亮,第四个LED亮 ,可以。# Z1 D9 U# o5 }2 K! J
* k2 d8 n3 ~( {% S# j; u! ~
# {1 U: Q/ A) |+ }
" ^0 X( C1 H0 p9 \' l
放开S1=1键关闭:第四个LED灭,第三个LED灭,第二个LED灭,第一个LED灭,加上什么程序,弄了好久不能完成。* B, D" ?9 p8 O& E7 i y7 Q
- e6 n+ Z) J4 ]; b# |0 Y
5 i( z, i# P* D6 \9 H1 [9 |+ `: ~
|
|