找回密码
 注册
关于网站域名变更的通知
查看: 660|回复: 5
打印 上一主题 下一主题

单片机C语言问题,请大神指点

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-17 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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
  • TA的每日心情
    开心
    2020-5-29 15:12
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    2#
    发表于 2020-7-17 14:24 | 只看该作者
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff5 Y; s5 J, {- ^

    点评

    是的,OXff应该是1111 1111  详情 回复 发表于 2020-7-17 15:02

    该用户从未签到

    3#
    发表于 2020-7-17 15:02 | 只看该作者
    jiekou514 发表于 2020-7-17 14:24# X' E# @8 U  ]7 H" z
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff
    ! v: s" r  ^/ r. d4 h2 J5 ^  @
    是的,OXff应该是1111 1111  

    点评

    是的,你写错了  详情 回复 发表于 2020-7-17 15:19

    该用户从未签到

    4#
    发表于 2020-7-17 15:19 | 只看该作者
    行者~ABC 发表于 2020-7-17 15:023 V, x3 S) a. f1 U5 e: m
    是的,OXff应该是1111 1111
    . q( [! K( ~8 R5 a
    是的,你写错了3 X) K1 N; V" ~! W+ p! P

    该用户从未签到

    5#
    发表于 2020-7-21 12:34 | 只看该作者
    LED=0xFF;你这样试试?0x255对应的二进制是001001010101,你P0口是8位,舍弃最高几位,经过你的0x255赋值,就变成了01010101,刚好对应你的D1,D3,D5,D7,你说是不是呢?
  • TA的每日心情
    无聊
    2024-1-31 15:19
  • 签到天数: 141 天

    [LV.7]常住居民III

    6#
    发表于 2020-8-29 14:11 | 只看该作者
    0x是十六进制啊,兄弟
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-11 06:44 , Processed in 0.156250 second(s), 28 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表