|
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 3 0=0xf8; //第三个LED亮
9 a# Y/ x5 U* |: ] delayus(1000);
& A' V1 z& x$ g7 H break;5 N& q8 q& G# _ u
case 4 0=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
|
|