为啥单片机程序中要定义地址,有啥作用?不定义会出现问题吗?这个地址是哪的地址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥单片机程序中要定义地址,有啥作用?不定义会出现问题吗?这个地址是哪的地址?相关的知识,希望对你有一定的参考价值。

#define LED_BIT 0x8fff
#define LED_SEG 0x9fff

#define LED_BIT 0x8fff 把这个地址定义为了一个常量 , 你使用这个LED_BIT 的时候就不用再关心地址的问题了。而且以后要修改只需要修改空上常量定义就可以了,不用在代码中到处找。 参考技术A 这个是LED的字段代码表

这两句把一些数据资料限制在储存器里固定的位置上(通常是内存尾段),令其在每次编译后保持不变。这样便于用数值做地址直接调用,同时也有利于减少“内存碎片”

其他的地址定义主要还是为了提高程序的可读性。
参考技术B 一般特殊功能寄存器或者其他的特殊作用的需要定义一下,如果是单片机普通内存就无需定义了

c51编程中sbit 和bit有啥区别

如上。请高手回答,谢谢。

首先,bit和sbit都是C51扩展的变量类型
sbit一般用来定义特殊功能寄存器的位变量,以方便对寄存器的某位进行操作的
例如:sbit TXD=P3^0; 这样就定义了TXD为位变量,并且这个sbit量有确定的地址
bit则与一般的变量差不多,只不过bit定义的变量只有两种值存在0或是1
例如:bit p=0;编译器在编译过程将分配地址,所分配的地址是随机的
参考技术A sbit用于定义可位寻址字符型变量
bit应该是位变量
参考技术B http://zhidao.baidu.com/question/72536362.html 参考技术C sbit用于声明可位寻址字符型变量(例如特殊功能寄存器)的某些位。
bit用于声明位变量。本回答被提问者采纳

以上是关于为啥单片机程序中要定义地址,有啥作用?不定义会出现问题吗?这个地址是哪的地址?的主要内容,如果未能解决你的问题,请参考以下文章

keil2编51单片机程序c 指针赋值提示重复定义,怎么解决

c51编程中sbit 和bit有啥区别

单片机中的看门狗是啥东西,有啥作用

为啥OpenGL中要用GLfloat而不用float,两者有啥区别呢?

单片机中的寄存器到底有啥作用,它们是像RAM一样呢还是有啥其它的作用?

单片机c语言程序中,数组最多能有几个元素?为啥我定定义了一个全局的数组,unsigned cha