找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问单片机源程序里sbit LED1是赋值还是什么?

[复制链接]
跳转到指定楼层
楼主
ID:217962 发表于 2017-7-7 17:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>

sbit LED1 = P1 ^ 0;
void main ()
{
    LED1 = 0;
} 

这段代码
sbit LED1=P1^0 这里是对LED1进行复制,这里^是异或吗, 为什么能获得P1.0的地址呢?
另外,后面LED1=0这里不是又改变了LED1的值了吗?为什么能改变P1.0引脚的电平?
sbit LED1=P1^0到底是什么 宏?
VC里对IO寄存器操作不是要用汇编outp(端口地址)吗?这里为什么能直接用"LED1=0"来赋值啊?
请教了!


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

使用道具 举报

沙发
ID:213173 发表于 2017-7-7 22:19 | 只看该作者
sbit LED1 = P1 ^ 0; 这不是赋值语句, 由于有修饰关键字sbit,^在这里不是运算符异或。意思是声明P1特殊寄存器地址的第一位的自定义名称,在程序中操作LED1就是操作P1.0。
回复

使用道具 举报

板凳
ID:164602 发表于 2017-7-8 08:59 | 只看该作者
sbit:可寻址位。用于定义51单片机内部RAM中的可寻址位或特殊功能寄存器中的可寻址位,它有三种使用方法
第一:sbit 位变量名=位地址
第二:sbit 位变量名=特殊功能寄存器名^位的位置
第三:sbit 位变量名=字节地址^位的位置
回复

使用道具 举报

地板
ID:218181 发表于 2017-7-8 20:42 | 只看该作者
意思就是以后操作 led1就等效于操作 p1.0
回复

使用道具 举报

5#
ID:218181 发表于 2017-7-8 20:42 | 只看该作者
意思就是以后在程序中操作LED1就是操作P1.0
回复

使用道具 举报

6#
ID:29652 发表于 2017-7-8 23:42 | 只看该作者
定义LED1对应的端口是P1.0
回复

使用道具 举报

7#
ID:217962 发表于 2017-7-9 12:04 来自手机 | 只看该作者
好吧 找找头文件看有定义不
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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