|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
# Q' g* e/ \# u! [: D
/* 名称:K1-K4 分组控制LED
" X3 W! J; ^# A说明:每次按下 K1 时递增点亮一只LED,全亮时再次按下则再次循环开始,
6 h! ~$ G1 _9 XK2按下后点亮上面4 只LED,K3 按下后点亮下面4 只LED,K4 按下后关闭所有LED
8 _/ S3 b& x' K( A6 r$ R! I# b*/
9 |* Y% I2 ]/ ^. l' y8 W5 Q#include<reg51.h>
, u- f3 K4 r5 v) D4 Q2 D#define uchar unsigned char, B/ X2 L' i9 g: x2 h0 J1 p9 g$ K: h
#define uint unsigned int
! m F0 U5 A9 n- H! p& _//延时
) _9 Q2 f5 G2 I" R( a% F0 T$ u; Gvoid DelayMS(uint x)0 {/ F% o/ u" J8 B& c+ X
{7 ?: P; Y# z. k
uchar i;$ _) @. m5 }* B# {# k
while(x--) for(i=0;i<120;i++);& B% a/ V( r" {* }* E# K
}
, U. C$ w0 ^+ ^. a, B' A//主程序
) \* R5 p% q8 q9 @void main() _- p* l/ R4 ^) r4 R$ X$ C" p
{ v. M" U9 b: D3 b9 w
uchar k,t,Key_State;
! W) R+ B- {3 V+ M: F3 xP0=0xff;
' Y: @1 M3 V* jP1=0xff;: ]4 w6 M2 ~/ J% w. Z
while(1)
! G. f" B+ U2 J; S/ J/ V{
3 Y5 Z; j! v- ^; t- c& d/ p. ?t=P1;
) ?& d( y- s4 Y# g" v7 r5 Bif(t!=0xff)9 \. \* a+ e$ h0 E8 ?
{
u, A& {) L9 Q3 l$ \4 j2 BDelayMS(10);
d( g; [4 O I6 rif(t!=P1) continue;) p" Z9 S7 E, @# p% O
//取得4 位按键值,由模式XXXX1111(X 中有一位为0,其他均为1)6 [ f3 G$ x9 q$ A/ b6 C
//变为模式0000XXXX(X 中有一位为1,其他均为0)
+ y$ ?' K3 c8 A$ K/ `9 \9 uKey_State=~t>>4;
2 Z$ v# i( `: M! uk=0;
: F5 v( Z* y1 ~% U//检查1 所在位置,累加获取按键号k
+ R& ~7 a2 c7 i0 K6 B/ |while(Key_State!=0)1 R2 m" k+ y2 m4 m& ?( Y
{
% e0 i; r5 v7 c# g, h E! bk++;
6 z& |) E R4 s' A$ ~% [2 LKey_State>>=1;
8 e: t& n# A1 k9 z) ]0 h0 x* J}# v2 M. m: s' S, C1 K3 @/ d" x% j
//根据按键号k 进行4 种处理
8 S7 J: S) x: D+ ~switch(k)
4 g" `$ x4 G( x2 ~+ p6 t{
+ F E; T* ^- ~. x; |- Ncase 1: if(P0==0x00) P0=0xff;& u7 x6 r f0 L1 z
P0<<=1;9 \; C; ^# @* J) z3 Z
DelayMS(200);7 r M! Q0 |! b0 I+ E9 J. u5 O
break;* p& G6 V2 P( l. z
case 2: P0=0xf0;break;! a9 l5 e3 P+ j( [ K/ B% {4 \( k
case 3: P0=0x0f;break;
l& y" U+ H: r1 [case 4: P0=0xff;
R# D2 ]" Z9 O: C \# K$ s}
6 [. s% U9 N7 n0 b9 u) `& N}5 ?6 T/ h! m% m6 f% M% \8 h2 @3 p
}0 f7 ~+ u* C' H+ j5 ~/ n
}
, d+ ~( o w- Y/ {9 U
" P p/ M3 O+ h5 G1 n小弟初學單片機 當switch k = 1或2或3或4 會自動執行case
2 ?. S) `1 j+ R( Y1 {) ]但是看不懂k++何時變成1或2或3或4; t# _: T; `# i% f' |2 X
請問各位先進們 可否解釋一下這程序4 |4 o( ]: K3 g" h. G* k
/ y; R6 E+ J4 ^1 s, w |
|