我被人叫板了,现在一头雾水 点击:756 | 回复:10



小诚

    
  • 精华:16帖
  • 求助:64帖
  • 帖子:679帖 | 7271回
  • 年度积分:3
  • 历史总积分:32156
  • 注册:2012年9月27日
发表于:2014-08-22 16:20:10
楼主

前些时间无聊,在百度帮人解答了一个单片机方面的小问题。

问题标题:51单片机中的sbit变量会随着外部的电平高低而变化么?

问题内容:我的意思是一开始定义了比如sbit led=P1^0;led=1;此时为高电平,当我将引脚认为的拉低电平,这个变量led在程序中会自动变为led=0么?人为的拉低,不是认为。


下面是我的分析:

楼主你好。

我自己分析的给你参考。


如上图,P1.0接了开关K,以实现人为拉低引脚电位。

在你程序中,你sbit led=P1^0;led=1,操作,实际上就是在D端输出1,那么Q端就是1,Q非

就是0,这个0使得V2截止,所以该引脚呈现高电位1,当K闭合,人为拉低引脚电位为0.

但是,你内部的LED=1应该是保持不变的。D触发器锁存了你写的1.


下面是叫板评论:

第二条评论:led=1...引脚高电位1,K闭合,引脚为0...但是内部的LED=1应该是保持不变的--那么,aa = led;aa 是1、还是0? 应该取决于引脚吧? led和D触发器,无关,对吧?


第一条评论:sbit led=P1^0;--这个 led,指定的是引脚,还是D触发器?


以前学过一点汇编,C语言不熟悉,我不清楚这个定义的变量LED,他是随引脚变化,还是根据程序变化?

熟悉C51的朋友协助哈。

我也知道评论的这位网友也是想帮助我提高。






楼主最近还看过



通讯网-13730920629

  • 精华:11帖
  • 求助:1帖
  • 帖子:432帖 | 10265回
  • 年度积分:0
  • 历史总积分:24711
  • 注册:2004年7月09日
发表于:2014-08-22 20:08:05
1楼

我现在总是感觉,本来,1+1=2,总是有人冒出:“我算的1+1就不等于!不信你来看!”或者,“我怎么算,怎么算,算了好几遍,1+1就是不等于2.”或者“我敢发誓,1+1就是不等于2,不服谁来?”要是一个个跟他们解释,都是浪费时间。。。。自己看着办吧。。

江湖再见-余辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3351帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2014-08-23 09:12:40
2楼

我说个简单的故事吧:

有一天,两个人为了3*8等于多少而争论,有一个人说是21,有一个人说是24,两个人争了一天,也争不出个结果来,最后只好闹到公堂上,县太爷听了他们二人的陈述,直接宣判:重打说结果等于24的那个人20大板,此人不服,便问县太爷凭什么,县太爷说你都能跟3*8=21的人争论一天,不打你打谁?

nnfjvnf

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2014年8月22日
发表于:2014-08-23 20:06:04
3楼

找到一个番蔷浏览器,超好用


pa(去掉)n.bai(去掉)du.co(去掉)m/s/1o6z8rlo


杭州双星普天

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 725回
  • 年度积分:0
  • 历史总积分:1683
  • 注册:2012年3月02日
发表于:2014-08-25 16:38:33
4楼

这个隶属于两个寄存器,一个是读 一个是写

虽然对外只有一个寄存器 ,但是内部分成了两部分,写和读,所以相互之间可以独立


比如现在单片机 对IO口就会分 输出寄存器 输入寄存器 方向寄存器 等等


这两个并不矛盾,LZ的回答是正确的。写的就是写的,读的就是读的

HZ2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 361回
  • 年度积分:0
  • 历史总积分:324
  • 注册:2014年10月01日
发表于:2014-10-04 12:14:53
5楼

我说个简单的故事吧:

有一天,两个人为了3*8等于多少而争论,有一个人说是21,有一个人说是24,两个人争了一天,也争不出个结果来,最后只好闹到公堂上,县太爷听了他们二人的陈述,直接宣判:重打说结果等于24的那个人20大板,此人不服,便问县太爷凭什么,县太爷说你都能跟3*8=21的人争论一天,不打你打谁?


HZ2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 361回
  • 年度积分:0
  • 历史总积分:324
  • 注册:2014年10月01日
发表于:2014-10-04 12:15:13
6楼

这两个并不矛盾,LZ的回答是正确的。写的就是写的,读的就是读的

HZ2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 361回
  • 年度积分:0
  • 历史总积分:324
  • 注册:2014年10月01日
发表于:2014-10-04 12:15:48
7楼

比如现在单片机 对IO口就会分 输出寄存器 输入寄存器 方向寄存器 等等


HZ2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 361回
  • 年度积分:0
  • 历史总积分:324
  • 注册:2014年10月01日
发表于:2014-10-04 12:16:33
8楼

这个隶属于两个寄存器,一个是读 一个是写

虽然对外只有一个寄存器 ,但是内部分成了两部分,写和读,所以相互之间可以独立


yuanyuan198899

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2012年6月25日
发表于:2014-10-22 15:52:32
9楼

楼上都胡说些什么 对于传统的51  没有读写2个寄存器的来说  P1口实现读就是先写入LED=1;然后读LED  这没有问题 也就说P1.0当写入1时就是读状态 当然也可输出 很弱的上拉输出

德展自动化

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 14回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2005年12月27日
发表于:2014-10-31 07:43:06
10楼

记得看过一个视频教程h是这样说的:这个引脚只要有一个低电平,不管内部控制还是外部通过电阻接的高电平都是无效的,从电路原理上分析应该也是这样的。


热门招聘
相关主题

官方公众号

智造工程师