|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. S7 F( w) b* Q" _/ T2 b
/* 名称:K1-K4 分组控制LED r% Y. Q9 x# C7 w) T4 `% m
说明:每次按下 K1 时递增点亮一只LED,全亮时再次按下则再次循环开始,0 ]/ K2 }3 K* c! V( k$ G
K2按下后点亮上面4 只LED,K3 按下后点亮下面4 只LED,K4 按下后关闭所有LED0 |6 X2 i! V B; i" B( u& o' h
*/
4 b3 k' E( A) M1 R! S#include<reg51.h>
1 l, A( S' ^6 T( Y#define uchar unsigned char
n# N2 l7 e& t' K0 \7 L4 V#define uint unsigned int" o) I6 j; M' U5 `* i
//延时6 G. x( n3 e8 i$ E- O
void DelayMS(uint x)
5 S" o ~+ s* d; r" X8 L3 s{& n3 v2 X8 u2 ^7 K8 {7 ?2 @9 s
uchar i;/ k0 x. k, ^, w3 c
while(x--) for(i=0;i<120;i++);; U x8 h- q! ?# s# ?
}
6 r7 p; C- T1 w' J0 Z//主程序: g7 j B7 C$ ]% B5 v
void main()4 r7 D3 X" A% \- C x& I/ H5 s' X
{
9 Y3 ^3 f+ I' {uchar k,t,Key_State;
7 _+ J# s: U- z5 k1 K. wP0=0xff;: m. ?/ o! ]! H+ p8 _
P1=0xff;
3 |# ?8 l* Z% cwhile(1)
4 P, \4 @2 t# ~{1 p' z: V0 r) g& A' }6 Z( Q2 p
t=P1;
0 @7 ?' a4 \7 l( Gif(t!=0xff)& c. {, N" \: c5 `
{& k% b4 I2 P R) @% x9 i/ n1 }8 A! B
DelayMS(10);
" t0 p: g( h/ o& W& k4 Zif(t!=P1) continue;2 J% U, M+ ~/ B. n" w9 W# C
//取得4 位按键值,由模式XXXX1111(X 中有一位为0,其他均为1)
6 u7 e# V# B2 B7 [+ l6 z//变为模式0000XXXX(X 中有一位为1,其他均为0)
/ h" G2 I) H' x! S5 zKey_State=~t>>4;
2 K5 K8 {9 ~3 p+ D9 W& D0 mk=0;
4 s/ i- M( N4 g* S2 @//检查1 所在位置,累加获取按键号k
% P# Y0 T4 `" D7 x, L- F8 Twhile(Key_State!=0)
* R- z/ p6 F! p0 W7 k. |9 V{* @; O( T. j9 T6 a/ `
k++;
; g( @# B+ t0 \9 b& R( SKey_State>>=1;
4 V- r# Y; s" M+ J}
! a! E! h1 D+ w/ f1 x/ g) G0 U//根据按键号k 进行4 种处理0 u6 e0 y& u4 @. k! u
switch(k)* M" y8 g, B* N4 a3 f
{# y! ]! p( {% M3 ?: _
case 1: if(P0==0x00) P0=0xff;
; M9 U" d: N( L- U& CP0<<=1;
7 P/ Z) g# T' A2 R7 O% z( q' XDelayMS(200);
6 {/ n E& R9 L! c0 sbreak;9 A8 F# x4 r" n* Z% H' I4 P1 B9 ?; A
case 2: P0=0xf0;break;: Y, g! s- n# E+ m. C
case 3: P0=0x0f;break;
3 y2 g! t) O; k% Dcase 4: P0=0xff;
& S& x1 S5 ]5 Y5 I( E& l% |- R: M2 V* Z}
2 \3 K5 z% j1 ?5 n' [7 ~}) Y; [6 c/ I* g R% J. Y7 \( {6 V, K' I
}
( W; H- I' T, x6 b}. y1 V/ R( ]0 @6 J, Q
- H8 o* X4 s/ H/ F. d, l$ O2 [: Z小弟初學單片機 當switch k = 1或2或3或4 會自動執行case' X: m( C" A. P" b1 w" J3 u
但是看不懂k++何時變成1或2或3或4
1 j) K8 {! X. P請問各位先進們 可否解釋一下這程序
3 p6 b+ [- o. X& E, [ I6 t0 j; U9 c$ x9 ?" X& ~% y
|
|