为什么51单片机编程中P1^0 表示 P1I/O口里面的0号引脚

如题所述

第1个回答  推荐于2017-10-06
授之以渔吧

你有没有考虑一下便程序的时候为什么要引用? 如果不呢?

去看一下 #include<reg51.h>或者是类似的头文件你就会发现有

例:sfr P1 = 0x90;

这样的一行即定义P1 与地址0x90 对应,P1 口的地址就是0x90.

SFR的定义在头文件reg51.h或reg52.h中。

在C51里,利用sbit可访问RAM中可寻址位或SFR中可寻址位。

如果直接写P1.0,C 并不能识别,而且P1.0 也不是一个合法的C语言变量名,所以得给它另起一个名字,比如P1_0,可是P1_0 是不是就是P1.0呢?C 编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit 来定义,sbit 的用法有三种:

第一种方法:sbit 位变量名=地址值

第二种方法:sbit 位变量名=SFR 名称^变量位地址值

第三种方法:sbit 位变量名=SFR 地址值^变量位地址值

例如,定义P1 中的P1.1脚可以用以下三种方法:

sbit P1_1=0x92 (1)说明:0x92是P1.1 的位地址值

sbit P1_1=P1^1 (2)说明:其中P1必须先用sfr 定义好

sbit P1_1=0x90^2 (3)说明:0x90 就是P1的地址值本回答被提问者和网友采纳
第2个回答  2014-11-21

规定的啊

看头文件

第3个回答  2014-11-21
人工语言,可以理解为一些规定,哪有为什么呀。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网