7991|15

120

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

管脚为何用p^0而不用p1.0 [复制链接]

51程序的位定义sbit p1_1=P1^0;不理解为何不用P1.0而用P1^0?还有头文件内 定义该管脚地址用p1_1为何不用P1.0或P1^0?

此帖出自51单片机论坛

最新回复

听说进了娱乐圈要被“潜”,其实我们进了代码圈,天天被“潜”,无力反抗。  详情 回复 发表于 2016-12-23 14:13
点赞 关注(1)
个人签名我来到
 

回复
举报

2751

帖子

0

TA的资源

裸片初长成(初级)

沙发
 

原帖由 wrlsohu 于 2012-2-8 09:51 发表 51程序的位定义sbit p1_1=P1^0;不理解为何不用P1.0而用P1^0?还有头文件内 定义该管脚地址用p1_1为何不用P1.0或P1^0?

 

有些东西,是编译环境决定的。

 

觉得扭不过来,就看看编译原理的书籍吧。

 

编程有不少不成文的规矩,潜规则吧,呵呵。

此帖出自51单片机论坛
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
虽然还是不理解,还是谢谢!
此帖出自51单片机论坛
 
个人签名我来到
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

4
 

原帖由 wrlsohu 于 2012-2-8 10:41 发表 虽然还是不理解,还是谢谢!

 

自己试一下就知道了。

 

sbit p1_1=P1^0;

 

p1_1是自定义的,类似于变量名,自己喜欢就行。

P1^0是编译器规定的,不然会报错。

此帖出自51单片机论坛
 
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

5
 

回复 4楼 David_Lee 的帖子

在头文件中P1^0对应的是一个地址吧。。
此帖出自51单片机论坛
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

6
 

原帖由 小小白 于 2012-2-8 13:14 发表 在头文件中P1^0对应的是一个地址吧。。

 

嗯,P1^0在Keil C51中是位寻址的。

sbit p1_1 = P1.1; 在Keil C51中是会报错的,这是编译器决定的,得用sbit p1_1 = P1^1;的形式。

此帖出自51单片机论坛
 
 
 

回复

119

帖子

0

TA的资源

一粒金砂(高级)

7
 
格式是编译器规定的,只能按照格式用,否则会报错。自定义变量也要根据要求定义,适应了就好了。
这样的固定统一格式还是有好处的,大家一看就懂。
此帖出自51单片机论坛
 
 
 

回复

7231

帖子

192

TA的资源

五彩晶圆(高级)

8
 
这个不是我们能确定的
此帖出自51单片机论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

9
 

回复 楼主 wrlsohu 的帖子

这个点.在C里面可不是随便能用的,在其他编程语言中也类似,他代表一个点前面的是一个类,点后来的是前面那个类的成员或子类。比如TextBox1.Text,表示TextBox1的Text属性。在单片机编程时候用比较多的是表示结构体或共用体的成员,如Datetime.Hour,看到这个一般就表示Datetime结构体里面的Hour成员,当然这不是一定的,但有这么一个习惯用法!
此帖出自51单片机论坛
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

10
 
谢谢各位的热情帮助。
此帖出自51单片机论坛
 
个人签名我来到
 
 

回复

56

帖子

0

TA的资源

一粒金砂(高级)

11
 

_Justin

我要是你~~
呵呵~~
就直接把"reg52.h"里的位定义改了~~
呵呵~~
你以后就没这个困惑了~~
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

16

TA的资源

版主

12
 

因为51reg.h,文件就是这么定义地

楼主想用P1.0可以自己定义
此帖出自51单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

13
 
在reg51.h里定义的是字节地址,没有位定义啊?:
sfr P0   = 0x80;
sfr P1   = 0x90;
sfr P2   = 0xA0;
sfr P3   = 0xB0;
reg52.h:
sfr P0    = 0x80;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;
/*  P3  */
sbit RD    = P3^7;
sbit WR    = P3^6;
sbit T1    = P3^5;
sbit T0    = P3^4;
sbit INT1  = P3^3;
sbit INT0  = P3^2;
sbit TXD   = P3^1;
sbit RXD   = P3^0;
这两个头文件都没看到这个定义啊?怎么就能用呢?
此帖出自51单片机论坛
 
个人签名我来到
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

14
 
这个点.在C里面可不是随便能用的,在其他编程语言中也类似,他代表一个点前面的是一个类,点后面的是前面那个类的成员或子类。比如TextBox1.Text,表示TextBox1的Text属性。
在单片机编程时用的比较多的是表示结构体或共用体的成员,如Datetime.Hour,看到这个一般就表示Datetime结构体里面的Hour成员。
学过32的表示深有同感
此帖出自51单片机论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

15
 
本帖最后由 zl2168 于 2016-12-19 22:21 编辑

c51编译器规定:标识符只能由字母、数字和下划线三种字符组成,且须以字母或下划线开头。
.”属于不合法字符,因此不能用P1.0等作为位标识符。
至于判P1^0中的“^”,是在定义时指明P1中第几位。
此帖出自51单片机论坛
 
 
 

回复

928

帖子

0

TA的资源

纯净的硅(中级)

16
 
听说进了娱乐圈要被“潜”,其实我们进了代码圈,天天被“潜”,无力反抗。
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表