|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于单片机C语言LED=0x255的理解,LED闪烁程序; G7 `3 O7 Z6 W+ B
单片机LED闪烁实验:* S' Y4 c7 g# }. ~
6 P! B+ u0 @0 {; u e5 }& R
#include "reg51.h"( q! s* l0 l( Z) D, o
* s! c$ L3 r: _) F6 D' gtypedef unsigned char u8;
- `# c7 e: v5 t9 w7 P3 U6 b' L7 B3 y9 ?0 ttypedef unsigned int u16; /*小于65535*/
2 ?' B( B/ B+ a4 o& h. w) Q# a' e |! c3 o; l1 G: z! @( |
#define LED P0
R7 { U: T9 v% d2 v8 u
' p% @5 M4 l# y5 b3 p) zvoid delay3s(void) //误差 0us
& x0 t, [0 J. S{
9 i9 e d" E6 y" z unsigned char a,b,c;
6 v" [- e% |# \) ]8 N! Y! t7 I1 K for(c=189;c>0;c--)
- r7 f0 g# [) `: S( \7 |2 z a/ S+ v" D for(b=230;b>0;b--)7 u& q5 u& S9 x# N
for(a=33;a>0;a--);
6 m# K J0 K: d0 d6 n}3 I% _; S' ~, R ~& n+ U8 m( W5 z
+ h1 P2 W5 s& J8 Q, n* R
void main ()2 l6 V0 b- ?3 o# V# N! J2 Q0 i, q
{
7 [ k1 C. c# ~ while (1)
. O$ X( J. ^0 n3 ]/ X {
' z6 ?) p$ C. @ LED=0x00;; j' }8 l0 g! i
delay3s() ;
5 }# a# [! }0 _7 Q, a/ R8 J LED=~LED;
# J# w, u3 ]5 P1 n3 |# h9 X& t) M" M delay3s() ;$ t J4 L6 C9 k* I8 U2 t7 ?' U
}
2 U' a% S, V8 F. s8 z% ]}% N2 I# y& V: B: _% E- q4 q
中main函数中的LED控制口替换成以下编码: k6 o2 t. h1 D, R
while (1)
" J, l' [4 C& O; J8 A8 c3 u {
; J- ^; o, h9 S3 q( u2 o) \ LED=0x00;: f4 E5 m4 T0 ^1 D7 c5 R
delay3s() ;
; j! n6 u& t# C+ K7 W LED=0x255;9 j- z* L4 a/ [* ]: ^9 j6 p) g+ ^
delay3s() ;
8 }, Q1 ^5 o- i1 Y8 Z3 k }/ m |$ s; X5 V6 R
结论,
7 g D, Y' n: x( w# p6 ^我的理解(我的单片机二极管低电平亮)是LED=0x00;对应的二进制数(0000 0000)全亮,LED=0x255;时对应二进制(1111 1111)全灭才对。但3秒后只有D1,D3,D5,D7四个灯管灭。原本的代码里的LED=~LED;的话达到预期效果全灭。不知道是不是我的理解错了。$ J* k/ I! T* ^
0 x9 z) \0 g- e3 G w |
|