标题:问个C51问题
取消只看楼主
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
结帖率:93.75%
 问题点数:0 回复次数:1 
问个C51问题
我是初学者,看到这么一个程序,我理解不了了
程序代码:
/*------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,
                  //头文件包含特殊功能寄存器的定义

sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,
              //LED是自己任意定义且容易记忆的符号
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (void)
{
                  //此方法使用bit位对单个端口赋值
LED=1;            //将P1.0口赋值 1,对外输出高电平
LED=0;            //将P1.0口赋值 0,对外输出低电平

while (1)  ;       //主循环
 }


其中 sbit LED=P1^0; 这句理解不了,

按标准c理解就是定义位变量LED并把P1^0的值赋给LED ,LED和P1^0不会是同地址;
        但是按照c51 ,这句是把LED和P1^0定义为同地址;     

我这样说有错没?
搜索更多相关主题的帖子: 关键字 记忆 include 寄存器 
2011-10-27 20:52
zjsxwc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:252
专家分:601
注 册:2011-1-20
得分:0 
google了下 我懂了,  sbit和sfr是c51特殊的两种数据定义方式,定义时等号后就是指该变量的地址

The tools I recommended:
GUI: CSharp(VS), QT;    Core Code: Plain C (Tiny C Compiler);    Web: Python, JavaScript;    Android: Java;    Embedded System: ASM&C (Linux)
2011-10-27 21:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-353619-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062556 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved