C51单片机入门编程问题
刚开始接触单片机,有一定的C语言基础。我目前的理解是,单片机对一个引脚进行赋值的话,需要先把这个引脚的位置信息和一个自定义的变量关联起来之后,才可以通过对这个变量赋值来达...
刚开始接触单片机,有一定的C语言基础。
我目前的理解是,单片机对一个引脚进行赋值的话,需要先把这个引脚的位置信息和一个自定义的变量关联起来之后,才可以通过对这个变量赋值来达到对引脚的复制。
我想请问一下,这个步骤到底怎么操作,我看到过两种,第一种是,比如对P1.0sbit P10=P1^0; 左边P10是自定义的一个变量,右边的P1^0我不太懂,关联对象的确是p1.0端口,但它是怎么个关联起来的,p3.4引脚就是=P3^4吗?还有种是这样OutData=0xfe;,这个地址是怎么回事?我在reg51.h头文件里也没看到0xfe这个地址所对应的任何引脚。
请高手指教一下,谢谢 展开
我目前的理解是,单片机对一个引脚进行赋值的话,需要先把这个引脚的位置信息和一个自定义的变量关联起来之后,才可以通过对这个变量赋值来达到对引脚的复制。
我想请问一下,这个步骤到底怎么操作,我看到过两种,第一种是,比如对P1.0sbit P10=P1^0; 左边P10是自定义的一个变量,右边的P1^0我不太懂,关联对象的确是p1.0端口,但它是怎么个关联起来的,p3.4引脚就是=P3^4吗?还有种是这样OutData=0xfe;,这个地址是怎么回事?我在reg51.h头文件里也没看到0xfe这个地址所对应的任何引脚。
请高手指教一下,谢谢 展开
3个回答
展开全部
1、你不要想它怎么关联的,它就是一种固定的写法,语法就这样。你只能这样写,也当你写成这样的时候,编译器会认得出来它代表什么的,写成其它的话,编译就会报错了。所以不要再纠结这个问题。语法这样定的,遵守就行了。
2、0xfe不是什么地址,就是个简单的赋值,OutData就是等于0xfe。
OutData要是指一个端口的话,最前面是要有宏定义的,比如
#define OutData P0
上面表示用OutData这个词代替P0。
为什么要么定义,而不直接用P0就好了,你去查一下宏定义的好处就知道为什么会有这种用法了~
2、0xfe不是什么地址,就是个简单的赋值,OutData就是等于0xfe。
OutData要是指一个端口的话,最前面是要有宏定义的,比如
#define OutData P0
上面表示用OutData这个词代替P0。
为什么要么定义,而不直接用P0就好了,你去查一下宏定义的好处就知道为什么会有这种用法了~
展开全部
sbit P10=P1^0
sbit 是位定义,51单片机是8位的,他有P0,P1,P2,P3这么几几组端口口,每组是8位的,P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P1.3,
如果我们要操作其中一组中的某个特定的位,要怎么办呢?
那就是要用到sbit这个东西 ,sbit P10=P1^0; P1^0就是P1这组端口的第0位,P10就是我们自己起的名字,你也可以起 port1_0 P1_0 等等, sbit ***=P1^0; 这个写法是固定的。
sbit 是位定义,51单片机是8位的,他有P0,P1,P2,P3这么几几组端口口,每组是8位的,P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P1.3,
如果我们要操作其中一组中的某个特定的位,要怎么办呢?
那就是要用到sbit这个东西 ,sbit P10=P1^0; P1^0就是P1这组端口的第0位,P10就是我们自己起的名字,你也可以起 port1_0 P1_0 等等, sbit ***=P1^0; 这个写法是固定的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
之所以这样写是编译器这样规定的,所以不要纠结这个关系。OutData=0xfe,前面可以是一个变量,也可以是一个8位IO口,关键看你的定义,比如你申明为:sfr P0=OutData;那么就是将0xfe送P0口。为了更好的理解单片机,建议你好好看看单片机的基础书籍,也就是汇编语言来说明的数,这样可以帮助你更好的理解单片机。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询