找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6200|回复: 22
打印 上一主题 下一主题
收起左侧

求助 led=~led; 这种是否是没有给LED赋初值?

  [复制链接]
跳转到指定楼层
楼主
ID:66004 发表于 2014-9-26 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
******************************************************************/
#include <reg51.h>
sbit led=P1^0;
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
  for(k=125;k>0;k--);
}
void main()
{
unsigned char m;
for(m=20;m>0;m--)
{
  led=~led;
  delay(3000);  }
while(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58502 发表于 2014-9-26 18:36 | 只看该作者
sbit led=P1^0;这里其实已经赋值了,led=p1^0,而p1^0初始状态是1,所以一开始led=1

评分

参与人数 1威望 +10 黑币 +10 收起 理由
xiaojuan + 10 + 10 很给力!

查看全部评分

回复

使用道具 举报

板凳
ID:66837 发表于 2014-9-30 08:30 | 只看该作者
已经默认赋值了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:66840 发表于 2014-9-30 12:51 | 只看该作者
#include <reg51.h>
sbit led=P1^0;
void delay(unsigned int i)
{
unsigned int j;
unsigned char k;
for(j=i;j>0;j--)
  for(k=125;k>0;k--);
}
void main()
{
        unsigned char m;
        while(1)
        {
                for(m=20;m>0;m--)
                {
                          led=~led;
                          delay(3000);  
                }
     }
}
这样写就会循环亮灭

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:66004 发表于 2014-10-14 10:00 | 只看该作者
還是不太明白,默認赋值?
回复

使用道具 举报

6#
ID:51348 发表于 2014-10-16 00:55 | 只看该作者
yingtn 发表于 2014-10-14 10:00
還是不太明白,默認赋值?

单片机上电复位默认IO口高电平,没有赋值的情况下都是1,取反就是0

评分

参与人数 1威望 +35 黑币 +35 收起 理由
admin + 35 + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:66004 发表于 2014-10-16 19:03 | 只看该作者
明白了, 這樣定義的
回复

使用道具 举报

8#
ID:79943 发表于 2015-5-16 18:33 | 只看该作者

已经默认赋值了

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:91533 发表于 2015-10-10 21:55 | 只看该作者
P1^0假如程序里一开始没有赋值,就相当于P^0=0。
回复

使用道具 举报

10#
ID:92097 发表于 2015-10-10 22:43 | 只看该作者
这是循环赋值,但是第一次LED的值确实没赋,要么是0要么是1
回复

使用道具 举报

11#
ID:92105 发表于 2015-10-11 07:09 | 只看该作者
led=~led; 是取反的意思,原来是1,算过后就是0了,原来是0算过后就是1了
回复

使用道具 举报

12#
ID:79544 发表于 2015-10-11 12:08 | 只看该作者
就是取反的运算。
回复

使用道具 举报

13#
ID:92149 发表于 2015-10-11 17:25 | 只看该作者
~是取反符
回复

使用道具 举报

14#
ID:104027 发表于 2016-1-21 17:32 | 只看该作者

 sbit led=P1^0;这里其实已经赋值了,led=p1^0,而p1^0初始状态是1,所以一开始led=1  是的
回复

使用道具 举报

15#
ID:104366 发表于 2016-1-25 15:36 | 只看该作者
sbits已经默认赋值了
回复

使用道具 举报

16#
ID:105268 发表于 2016-2-10 22:51 | 只看该作者
单片机上电IO口就是高电平,也就是1,执行到led=~led那么LED就是0,再执行到led=~led,那么LED就是1,在执行到led=~led,LED变为0,如此循环下去
回复

使用道具 举报

17#
ID:105269 发表于 2016-2-10 23:07 | 只看该作者
51系列单片机,如果没有做特殊处理,默认上电端口电平为1.所以你单片机一旦上电,它就会是1,直到执行到 led = ~led ,状态会变为0;一直这样循环。
回复

使用道具 举报

18#
ID:58693 发表于 2016-2-10 23:24 | 只看该作者
上电复位时P1^0=1
回复

使用道具 举报

19#
ID:58693 发表于 2016-2-10 23:30 | 只看该作者
上电复位时P1^0=1,{   led=~led;    delay(3000);  } while(1); }每循环一次将P1^0取反
回复

使用道具 举报

20#
ID:104154 发表于 2016-2-11 08:03 来自手机 | 只看该作者
这是在做取反
回复

使用道具 举报

21#
ID:104559 发表于 2016-2-18 15:04 | 只看该作者
默认值为0
回复

使用道具 举报

22#
ID:74145 发表于 2016-2-19 12:08 | 只看该作者
上电时 io口为高电平  即1  所以已经进行赋值
回复

使用道具 举报

23#
ID:186622 发表于 2017-4-6 16:02 | 只看该作者
都是高手!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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