急!C51单片机I/O口默认高电平问题!!! 20

各位大虾,小弟有二问:一、我用C语言编程时,在头文件#include<reg52.h>中找到了sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3... 各位大虾,小弟有二问:一、我用C语言编程时,在头文件#include<reg52.h>中找到了sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0;等等,这是否说明,加载程序后,单片机的P0口是10000000,P1口是10010000,P2口是10100000,P3口是10110000,这好像和单片机上电默认高电平的说法相悖啊?请问大家帮我指出,我是在哪个地方理解出现了偏差,请详细说明,谢谢!
二、如果在一成立的基础上,以P0口是10000000为例,我通过锁存器连接发光二级管,加载头文件,是否最高位的那个灯会点亮?
好了,我知道第一个问题我弱智了,我还是想问下,I/O口默认高电平,我有没有办法通过实验直接检测出来证明一下!
展开
 我来答
华录_起点
2010-08-25 · TA获得超过1056个赞
知道小有建树答主
回答量:533
采纳率:0%
帮助的人:0
展开全部
sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0 指的是端口寄存器的地址,并不是端口初始值。

二,如果你的发光二极管是高电平驱动亮,则P0口输出10000000时,发光管会亮
但是这个1000000值不是你加载头文件得到的值,是在程序赋值得到的。

补充回答:
你可以写一个简单的程序,不对端口做任何操作,然后你测量端口电压;

如果端口接有LED,而且是高电平驱动的,可以观察LED是否亮,但最好还是测量电压
阿呖噶祷honey
2010-08-25 · TA获得超过222个赞
知道小有建树答主
回答量:275
采纳率:90%
帮助的人:200万
展开全部
不是,sfr是c51特有的关键字,意思是声明定义特殊寄存器,比如 sfr P0 = 0x80; 这条语句里面的0x80是单片机内部RAM地址,这个地址就是单片机P0口的映射在内部RAM中的地址。用sfr把0x80定义成P0的好处是方便程序编写。如果你不用这条语句又想改变P0口状态,就用指针,*( (volatile unsigned char *)0x80 ) = data;

单片机上电复位IO口都是默认高电平 11111111 ,就是默认IO置为输入口。

二极管是否会亮看要你规定的点亮方式是高电平导通还是低电平导通了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2219456
2010-08-25 · 超过28用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:75.5万
展开全部
第一个问题:0x80,0x90,0xa0,0xb0,这是单片机的物理绝对地址,这个地址的功能就是让用户可以对端口进行读写,记住是地址,所说的上电默认是0x80里面存储的值,默认上电后0x80里面存的是0xff

第二个问题:二极管如果高电平亮的话,全亮,还是上面的问题,(*(0x80))=0xff;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
13594464474
2012-07-23
知道答主
回答量:11
采纳率:0%
帮助的人:7.2万
展开全部
的确是高电平,但不能点亮灯,因为各个口的驱动能力有限除非在端口上接上拉电阻,一般都采用灌电流的方法,既单片机的端口接发光管的负极,然后经过限流电阻接在电源上。把I/O口植低电平
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nongjianjun
2010-08-25 · TA获得超过831个赞
知道小有建树答主
回答量:3761
采纳率:0%
帮助的人:1011万
展开全部
不是这样理解的,sfrP0=0x80,这一个0x80是它的一个端口,单片机上电时,个I/O口的电平为高电平
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式