|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于单片机C语言LED=0x255的理解,LED闪烁程序* t7 J- x8 m, { T+ Y
单片机LED闪烁实验:
1 w6 \2 N) r6 O! F }, E
) ^" \6 o% z, z# Z, L#include "reg51.h"+ a% J- N' t$ m0 y/ r4 L! n
* Y! e8 J$ H: y4 b* t, v
typedef unsigned char u8;% u0 Y' G$ L0 V$ y& D
typedef unsigned int u16; /*小于65535*/
( v0 B2 P% S8 O7 p$ G. ~9 ?1 m! S6 N# \; z5 _( }
#define LED P0
5 t" H2 H8 k, u; L3 G9 G& }* ~2 |/ b
void delay3s(void) //误差 0us: Y! J- _; `. n" `: h
{
- w% v& k+ Z+ r) b+ f- @% \ unsigned char a,b,c;0 K7 C( r$ h. v: b ?: v* [
for(c=189;c>0;c--)& k% [: m: [' G g. B5 U& a
for(b=230;b>0;b--)$ h S0 t9 X5 M0 a A
for(a=33;a>0;a--);( m6 }3 ^) v, A P' u3 r! b
}
Z$ I `: w3 x+ {0 u7 V' L) w1 Z% y8 e8 p. @3 g! ?6 o! K
void main ()
/ N* l- M6 ~: d6 Q; L{
X8 b0 ]% h9 b) Q2 ] while (1)9 |4 R3 a# Y8 ?* M6 {
{9 k6 ^) \& I+ i# }
LED=0x00;
5 |- e+ T( o, c) J# [, ] delay3s() ;
, z1 j3 c: { H/ @: _4 w# I3 N4 x1 ` LED=~LED;
9 A; p& b8 x- {6 d) Y. V9 u delay3s() ;
# j d' u+ }+ o0 P0 g }
+ V1 H/ ]' h/ G: r9 `- `( q}$ ?$ f7 u) V" O& \) a5 ~+ v s
中main函数中的LED控制口替换成以下编码:
$ P ?% n/ T: X+ O$ M; y9 K9 Iwhile (1)8 m; t2 D2 Y0 A# _7 g* J
{; u0 k9 o( n4 @2 ~
LED=0x00;
9 S$ ?0 G2 |- P" V$ [% T9 q delay3s() ;
, U7 v g7 v+ m) Q1 F4 s+ u LED=0x255;& r4 H- a& Q9 n& t, e# b# O0 q) ]
delay3s() ;
! F& b8 k* z8 R$ r4 e3 ] }2 V! n% S o* u9 g0 v6 p
结论,
( y3 d# D. I( x我的理解(我的单片机二极管低电平亮)是LED=0x00;对应的二进制数(0000 0000)全亮,LED=0x255;时对应二进制(1111 1111)全灭才对。但3秒后只有D1,D3,D5,D7四个灯管灭。原本的代码里的LED=~LED;的话达到预期效果全灭。不知道是不是我的理解错了。
" L4 y7 z- T7 O0 D: D: {! W [4 E* E- _) k8 P l
|
|