单片机存储器类型解析与指针操作

需积分: 50 7 下载量 101 浏览量 更新于2024-08-07 收藏 3.81MB PDF 举报
"存储器类型的编码值-系统极化码和非系统极化码的性能比较" 在单片机编程中,存储器类型是至关重要的,因为它决定了数据的存储位置和访问方式。本文主要讨论了不同存储器类型的编码值,并通过例子对比了系统极化码(Systematic Polar Codes)和非系统极化码(Non-Systematic Polar Codes)的性能差异。 首先,存储器类型通常包括idata、data、pdata、code和xdata等。这些类型分别对应于不同的存储区域,例如idata用于片内数据存储,data和pdata通常用于1字节的指针访问,而code和xdata则用于2字节的指针访问,适用于访问片外数据存储或程序存储器。 以0x1234为例,当它作为基于存储器的指针变量时,其在内存中的表示方式会根据存储器类型的不同而变化。对于idata、data和pdata,这个地址可能只占用一个字节,而code和xdata则需要两个字节来存储地址,以便访问更大的存储空间。 在C51编程中,指针变量的定义和使用有特定的语法。例如,`int * p1`定义了一个指向整型变量的指针,`char data * p3`定义了一个指向片内数据存储器中字符变量的指针,占用1个字节,而`float xdata * p4`则定义了一个指向片外数据存储器中浮点变量的指针,占用2个字节。 指针变量的引用涉及到两个关键运算符:“&”和“*”。"&"是取地址运算符,用于获取变量的地址,如`px = &x`将变量x的地址赋给指针px。"*"则是指针运算符,允许我们通过指针访问其指向的变量值,如`px = 5`等价于`x = 5`,意味着改变px的值实际上改变了它所指向的变量x的值。 在提供的代码示例中,`int x, y, *p, *p1, *p2`定义了整型变量x和y以及三个指针变量,然后通过`px = &x`将x的地址赋给px,使得px指向x。接着,`px = 5`和`py = px`展示了如何通过指针操作来改变变量的值和传递地址。 此外,书中提到了21世纪全国本科院校电气信息类创新型应用人才培养规划教材《单片机原理与应用及C51程序设计》,该教材详细介绍了MCS-51系列单片机的内部结构、指令系统、C语言程序设计以及接口技术等内容,通过实例教学帮助读者掌握单片机技术,适合高校教学和工程实践。 理解存储器类型及其对指针变量的影响,以及如何有效地使用指针,是单片机C51编程的基础。系统极化码和非系统极化码的性能比较则涉及通信领域的编码理论,通常在数据传输的错误纠正中发挥作用,但具体比较细节未在摘要中详述。