单片机中数据段可以定义那些内容?
发布网友
发布时间:2023-11-13 02:42
我来回答
共1个回答
热心网友
时间:2024-12-04 13:23
编程基本符合ANSI规范,因此关于标准C语言编程的话题就不再重复。这里主要介绍和单片机资源密切相关的一些编程要点。
3.1 变量类型和定义
CW中08系列单片机C编译器支持的基本变量类型及其缺省的长度位数由表3.1所示。有些变量的长度可以按实际项目需要而改变,见对话框图3-1。此对话框经由上面的图2-3中“Type Size”配置按纽打开。
表 3.1中所示的整形数变量 char、short、int、long等都有对应的无符号型式(前面冠以 unsigned)。CW 给定的头文件已经将最常用的一些无符号变量类型做了类型名简化替换,例如用“byte”代替“unsigned char”,用“word”代替“unsigned int”。这样在程序编写是可以节约点敲键盘的时间。
在单片机程序设计中对于变量类型的选择确认有两条最基本的原则须遵循:能用短的变量就不用长的;能用无符号数就不用有符号数。这两条基本原则将在很大程度上决定你代码的长度和效率。因此请多多使用byte或word类型变量。
由于08系列单片机内部硬件寄存器定义的特点,对于多字节组成的变量,例如int、long 等,C 编译器缺省的变量内存排列方式是“big endian”模式,即高位字节放在低地址,低位字节放在高地址,又俗称“大头朝上”。这一点相比普通Intel 格式,例如 51 系列和 PIC 系列正好相反,它们都是“little endian”模式,即“大头朝下”,在程序跨平台移植时请特别注意。当然 CW 编译器本身可以设定改变成“little endian”模式,但单片机内部寄存器地址排列顺序无法改变,故这样做将使最终的程序代码效率降低,特别是在存取一些 16 位长的寄存器组时,它们在硬件上都是由顺序排列的两个8位寄存器组成,高字节在前,低字节