找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教P3^0 和P3_0什么区别?

[复制链接]
跳转到指定楼层
楼主
ID:30354 发表于 2011-9-30 22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用51hei单片机开发板附带的程序的时候把把P3_0换成P3^0程序就不对了呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2011-9-30 22:14 | 只看该作者

肯定是你那个程序用的头文件是 at89x52.h 吧,,在这个头文件里已经定义了好了P3_0的,P3^0是不能直接使用的哦,必须要把P3^0定义为一个sbit的变量才可以.

 

 

 

回复

使用道具 举报

板凳
ID:30354 发表于 2011-9-30 22:18 | 只看该作者
那怎么有时候用sbit DUAN=P2^7这个语句呢? 而不是P2_7
回复

使用道具 举报

地板
ID:1 发表于 2011-9-30 22:20 | 只看该作者

那肯定是因为头文件是 reg52.h吧    这个头文件里面没有定义P2_7 ,所以必须手工定义sbit DUAN=P2^7

回复

使用道具 举报

5#
ID:30354 发表于 2011-9-30 22:22 | 只看该作者
#include"AT89x52.h"
#include"intrins.h"
 
#define uint unsigned int
#define uchar unsigned char

sbit WEI=P2^7;      //U2 74HC573的LE端    数码管的位选端
sbit SJ=P1^4;       //LED发光管的使能端


这个程序里有AT8952 怎么还能用P2^7??
回复

使用道具 举报

6#
ID:1 发表于 2011-9-30 22:25 | 只看该作者

这么说把 reg52.h 里没有定义P2_7  所以不能用 P2_7

而P2^7这个不是自己定义的是c51的语言规定的,所以P2^7在 reg52.h和 at89x52.h里都能使用,而P2_7 则只能在at89x52.h里使用

回复

使用道具 举报

7#
ID:30354 发表于 2011-9-30 22:28 | 只看该作者
P2^7既然通用 既然都能使用 还是那个问题 把P3_0换成P3^0程序就不对了呢?
回复

使用道具 举报

8#
ID:1 发表于 2011-9-30 22:30 | 只看该作者

因为P3^0不是一个变量,你给他赋值当然会提示错误,这是不符合语法的,你要给他赋值首先得定义它才行

比如说在顶部定义

sbit p30=P3^0;

 

然后赋值的时候就写p30=0或者p30=1

这样就不会提示错误了.

[此贴子已经被作者于2011-9-30 22:35:17编辑过]
回复

使用道具 举报

9#
ID:30354 发表于 2011-9-30 22:38 | 只看该作者
明白点了 那P3^0表示的是什么类型的量?
回复

使用道具 举报

10#
ID:1 发表于 2011-9-30 22:44 | 只看该作者

在reg51.h中 P3是这样定义的

sfr P3    = 0xB0;

而P3^0 的意思是P3口的第0位,但P3^0 这是一个表达式,就像是1+1一样 ,所以这是不能直接使用的, 你必须把他定义为一个sbit类型的变量才能使用.

 

回复

使用道具 举报

11#
ID:36076 发表于 2012-3-28 18:53 | 只看该作者
P3^0需定义,P3_0无需定义,好像是这样的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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