- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C语言及单片机概述
在单片机程序设计中对于变量类型的选择确认有两条最基本的原则须遵循:能用短的变量就不用长的;能
用无符号数就不用有符号数。这两条基本原则将在很大程度上决定你代码的长度和效率。因此请多多使用
byte或word类型变量。由于08系列单片机内部硬件寄存器定义的特点,对于多字节组成的变量,例
如int、long等,C编译器缺省的变量内存排列方式是”bigendian”模式,即高位字节放在低地址,低位
字节放在高地址,又俗称”大头朝上”。这一点相比普通Intel格式,例如51系列和PIC系列正好相反,
它们都是”littleendian”模式,即“大头朝下”,在程序跨平台移植时请特别注意。当然CW编译器本身可
以设定改变成”littleendian”模式,但单片机内部寄存器地址排列顺序无法改变,故这样做将使最终的程
序代码效率降低,特别是在存取一些16位长的寄存器组时,它们在硬件上都是由顺序排列的两个8位寄
存器组成,高字节在前,低字节在后。单片机程序设计中经常会用到的位变量作为一些标志。CW中没
有特别的位变量定义关键词,位变量必须由位域结构体的型式来定义。例如:
struct{
unsignedpowerOn:1;
unsignedalarmOn:1;
unsignedcommActive:1;
unsignedsysError:1;
}myFlag;
若引用某个位变量,只需
myFlag.alarmOn=1;
myFlag.sysError=0;
这样定义的各个位变量将被顺序排放在一起,以字节为基本单位,字节的第0位放第一个位变量,一个字
节含8个位变量。因此如果位域结构中定义的位变量数目很多,在最后内存分配上将占居多个字节。有
时为了编程方便,位变量需单独定义和操作但又希望一次整个字节一起初始化(清零或赋值),这时我们可
以定义字节(或字)和位域结构的联合体:
union{
byteflagByte;
struct{
unsignedpowerOn:1;
unsignedalarmOn:1;
unsignedcommActive:1;
unsignedsysError:1;
}bits;
}myFlag;
整字节操作可以
myFlag.flagByte=0;
单独某一个位操作可以可以
myFlag.bits.powerOn=1;
myFmActive=!myFmActive;
若嫌这样的位变量名称太长,大可以在你自己的头文件里用”#define”预定义,用
更简洁易懂的名称进行替换。
最后要提醒的是在定义位变量时尽量将它们指定分配到内存空间的第0页(地址范
围0x00-0xff),这样对位变量操作的C代码将直接被编译成对应的汇编位操作指
令,代码效率最高。具体的定位方法将在介绍”#pragma”时说明。
3.2变量的特殊修饰
上面介绍的各类基本变量和由其合成的高级变量如数组、结构和联合,将满足95%以上的单片机程序设计
1
C语言及单片机概述
工作。由于单片机资源的有限性和特殊型,还有一小部分因素需要在定义变量时加以考虑:
3.2.1变量的绝对定位
变量绝对定位是特别针对芯片内部的硬件寄存器定义的。所有的硬件寄存器在编写C程序时均被视为变量
它们都已在CW给定的头文件中预先定义。由于是硬件资源,其地址是唯一且不可改的,所以在头文件中
定义这些寄存器时都采用绝对定位
9S08AW32PORTA
/***PTAD-PortADataRegister;0***/
typedefunion{
byteByte;
struct{
bytePTAD0:1;/*PortADataRegisterBit0*/
bytePTAD1:1;/*PortADataRegisterBit1*/
bytePTAD2
您可能关注的文档
- 小学数学六年级下册《用比例解决问题》公开课教案 .pdf
- 2023年教师资格之中学美术学科知识与教学能力综合提升测试卷附答案详.pdf
- 人教版六年级下册数学第三单元《圆柱与圆锥》测试卷含答案(a卷).pdf
- 2020上半年广东省肇庆市鼎湖区城投集团招聘试题及解析 .pdf
- 2023年中考二轮专题复习流程题 .pdf
- 六年级下册数学教案(合集15篇) .pdf
- 《鸿门宴》教学反思.pdf
- 国开(山东)51710-灾难事故避险自救-终结性考试-参考资料答案.pdf
- 2024年1月 时政热点 单项选择题 .pdf
- 内科副主任医师晋升职称个人总结(真题8篇) .pdf
- 常见危大工程施工方案管理(可编辑).pptx
- FY25暑假初二A09 正比例函数【教师版】 .pdf
- 第02讲 函数的性质:单调性、奇偶性、周期性、对称性、最值(十六大题型)(讲义)(有解析).docx
- 连锁餐饮原材料物流配送问题优化方案设计2000字 .pdf
- 2024年四川省非金属地质调查研究所招聘考试真题.docx
- 专题02 不等式与复数(练习)(有解析).docx
- 专题01 集合和常用逻辑用语(讲义)(有解析).docx
- 制冷装置在消耗能源方面存在的问题及建议4900字【论文】 .pdf
- 2024年恩施州巴东县农业农村局公益性岗位招聘真题 .pdf
- 标准化在涉案财物管理创新中的应用与实践 .pdf
文档评论(0)