|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于单片机C语言LED=0x255的理解,LED闪烁程序
+ ^. P- ]1 S, y: {" ^" |单片机LED闪烁实验:5 ^! H5 [1 L6 e+ b x
1 \3 Z! @! I ]( P' u3 R#include "reg51.h"( L4 y8 L/ C& F& R9 p
$ K7 K' d7 U, `# \9 G9 z- t: Y* S
typedef unsigned char u8;+ X0 U% c3 A$ q2 T# D
typedef unsigned int u16; /*小于65535*/
- o" Y& S; V0 H3 C6 Y$ q2 g0 z5 d; Q. |9 A1 R! Z& x3 ], L
#define LED P0$ t U' e( d: p, D$ r
. `- m$ B) p( l; s3 |- o, p! qvoid delay3s(void) //误差 0us& K7 \6 Z0 x& I( o) K
{4 r# E! S* x# u3 G) w
unsigned char a,b,c;- i: C& V5 N; b$ f6 }! r
for(c=189;c>0;c--)0 [5 G4 h+ a! ^: C
for(b=230;b>0;b--)
5 |! ?) ]3 x( h2 K8 u" c! J' ?+ @$ d for(a=33;a>0;a--);: G6 J; a! T k$ F
}
Z: s4 T7 ~7 @. v/ c( u8 Y" ?( N. V: U& r0 }7 K" e
void main ()" f3 J a; I( f7 b& M6 Z- a V
{
" o" F5 n" _8 l8 m! | while (1)2 C& T! L. F) V" j/ |8 G7 L
{
X% t. C1 f% w3 w LED=0x00;
( N" @% Q! c, n* n. O+ w, R delay3s() ;
# x1 | c/ t' I" m LED=~LED;' K' T) l5 [5 \4 v& o' A
delay3s() ;* c- |: y$ p( |" M( A
}
0 B5 e0 Y f, B}: a/ C4 ?, l8 I5 X+ k9 l, z) E8 x
中main函数中的LED控制口替换成以下编码:6 R0 Y- X) l: |& a! f
while (1)
' |1 ]. w4 q( Z+ }7 Q4 S; \ {1 h8 ~% g! u3 h$ O
LED=0x00;) l4 |7 h- x+ F7 g8 h/ |
delay3s() ;
- k6 f @- F8 S% w LED=0x255;* R0 N) K: l/ W6 w C! B
delay3s() ;0 D( W* T# P' { H( E7 b7 u, ]
}
7 V. ?5 E7 E1 ?6 K# l! ^& Y. v& m7 F结论,! b4 S8 N- M/ J* }" B _
我的理解(我的单片机二极管低电平亮)是LED=0x00;对应的二进制数(0000 0000)全亮,LED=0x255;时对应二进制(1111 1111)全灭才对。但3秒后只有D1,D3,D5,D7四个灯管灭。原本的代码里的LED=~LED;的话达到预期效果全灭。不知道是不是我的理解错了。
( q4 x4 E D4 b4 m8 s5 f0 d; N# W% s+ N- c& O- b' }1 G
|
|