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

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

[复制链接]

该用户从未签到

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

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

    [LV.3]偶尔看看II

    2#
    发表于 2020-7-17 14:24 | 只看该作者
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff
    * O) ?3 b1 ~/ i4 @, F) n! e

    点评

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

    该用户从未签到

    3#
    发表于 2020-7-17 15:02 | 只看该作者
    jiekou514 发表于 2020-7-17 14:24+ v: k5 K  ]/ n* k$ N; q
    兄弟你是不是搞错了?255对应的二进制是1111 1111,这里的255是10进制啊!你应该试下0xff
    % Y' M* O8 g4 }* S3 T$ A1 V
    是的,OXff应该是1111 1111  

    点评

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

    该用户从未签到

    4#
    发表于 2020-7-17 15:19 | 只看该作者
    行者~ABC 发表于 2020-7-17 15:02) |2 N( C% N: C# W! m
    是的,OXff应该是1111 1111
    8 O  k3 j" C! h- |, n
    是的,你写错了
    7 k' {' G& Z- T/ l& i3 h4 c7 U

    该用户从未签到

    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-7-22 03:11 , Processed in 0.109375 second(s), 28 queries , Gzip On.

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

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

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