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

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

[复制链接]

该用户从未签到

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

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

    [LV.3]偶尔看看II

    2#
    发表于 2020-7-17 14:24 | 只看该作者
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff
    ' a8 I# p* }' U! V

    点评

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

    该用户从未签到

    3#
    发表于 2020-7-17 15:02 | 只看该作者
    jiekou514 发表于 2020-7-17 14:248 d2 a. c. {4 \
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff
    & g! L- h6 Q7 G" ]7 E8 q
    是的,OXff应该是1111 1111  

    点评

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

    该用户从未签到

    4#
    发表于 2020-7-17 15:19 | 只看该作者
    行者~ABC 发表于 2020-7-17 15:023 n- C' j  [1 B2 v5 S6 ]
    是的,OXff应该是1111 1111
    . O- j  ?, _% a
    是的,你写错了/ I& s7 a$ H& x1 j' U4 G& [  r

    该用户从未签到

    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-8-20 08:22 , Processed in 0.125000 second(s), 28 queries , Gzip On.

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

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

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