找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机小白求助关于sbit变量定义的问题

[复制链接]
跳转到指定楼层
楼主
ID:250180 发表于 2018-8-21 18:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一个小问题,请各位大佬帮忙解决一下
sbit IN1=P1^0;              
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;

这个定义中,IN1和IN3是相同的,我想可不可以用作一个变量
就是类似
sbit IN1=P1^0=P1^2;
这种
我知道这句语法有错误
sbit只能定义一个,只能一一对应

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:155507 发表于 2018-8-22 16:34 | 只看该作者
sbit是keil特有的,这个叫位定义, sbit:是定义特殊功能寄存器的位变量,不是标准C语言的关键字只是定义了一个位变量IN1,并赋值为P1.0,,^在这里,说明P1的第一个引脚(也就是P1.0),与一般的运算不一样!不要混淆了!
sbit IN1=P1^0; 而P1^0则是单片机上的1号IO口管脚,以便进行位操作。

IN1和IN3是相同的,你可以用 IN1=IN3=0; 来定义

评分

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

查看全部评分

回复

使用道具 举报

来自 3#
ID:389076 发表于 2018-8-22 22:44 | 只看该作者
对于某些8位或者16位单片机,sfr可用来定义特殊功能寄存器,sbit用来定义特殊功能寄存器中可以位寻址的位。
在寄存器头文件中,可能会出现这样的定义
sfr P1 = xx; //xx为寄存器P1的地址
sbit INT1 = P1^0; //寄存器P1的bit0,其他依次类推……

评分

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

查看全部评分

回复

使用道具 举报

地板
ID:277550 发表于 2018-8-21 19:24 | 只看该作者
就是不可以,sbit是C51特有的

评分

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

查看全部评分

回复

使用道具 举报

5#
ID:387076 发表于 2018-8-21 20:26 | 只看该作者
不可以的哦,需要的话多写一条就行
回复

使用道具 举报

6#
ID:388197 发表于 2018-8-21 21:33 | 只看该作者
可以这样...
sbit x = P1^0;
sbit y = P1^0;

评分

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

查看全部评分

回复

使用道具 举报

7#
ID:386381 发表于 2018-8-22 00:44 来自手机 | 只看该作者
不可以的,只能一个变量指向一个变量名

评分

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

查看全部评分

回复

使用道具 举报

8#
ID:389076 发表于 2018-8-22 22:36 | 只看该作者
sbit INT1 = P1^0表示为Io口 P1.0,其他依次类推

评分

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

查看全部评分

回复

使用道具 举报

9#
ID:389217 发表于 2018-8-23 12:09 | 只看该作者
当然不可以的,位定义就这么写
回复

使用道具 举报

10#
ID:388013 发表于 2018-8-23 15:11 | 只看该作者
我觉得就是给io口起一个名字
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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