




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录;1.延时函数第一:void delay(void) unsigned int i,j; for(i=0;i500;i+) for(j=0;j121;j+) ; 第二:void delay(unsigned int k) unsigned int i,j; for(i=0;ik;i+) for(j=0;j121;j+) ; 2.I & = 0x7f的意思相当于: I = I&0x7f,就是I的值与0x7f的值按位与,结果赋给i3.char和uchar的区别Uchar为无符号型变量,uchar在c语言中不存在,应该写成typedef unsigned char ucharChar :-128127, uchar: 02554.while(-t)相当于 -t;While(t);/即先对t进行t=t-1判断,然后再while进行逻辑判断4.#ifndef 条件指示符C预处理命令。#ifndef x /先测试x是否被宏定义过#define x/如果x没有被宏定义过,定义x,并编译程序段1#endif 条件指示符#ifndef的最主要目的是防止头文件的重复包含和编译。文件中的#ifndef是一个很关键的东西,如果一个程序中有两个c文件,这两个c文件都include了同一个头文件,而编译时,这两个c文件要同时一同编译成一个可运行文件,于是会产生大量的声明冲突这一问题。所以把头文件的内容都放在#ifndef和#endif中,不管头文件会不会被多个文件引用,都要加上这个。一般的格式是:#ifndef#ifndef。#endif在理论上来说可以是自由命名的,但每个文件的这个标识都应该是唯一的,。标识的命名规则一般都是头文件名全大写,前后加下划线,并且把 文件名中的”.”也变成下划线。如:stdio.h#ifndef_STDIO_H_#define_STDIO_H_.#endif2.在#ifndef中定义变量出现的问题(一般不定义在#ifndef中)。#ifndef AAA#define AAA.int i;.#endif里面有一个变量定义在vc中链接时就出现了i重复定义的错误,而在c中成功编译。结论:(1).当你第一个使用这个头的.cpp文件生成.obj的时候,int i 在里面定义了当另外一个使用这个的.cpp再次单独生成.obj的时候,int i 又被定义然后两个obj被另外一个.cpp也include 这个头的,连接在一起,就会出现重复定义.(2).把源程序文件扩展名改成.c后,VC按照C语言的语法对源程序进行编译,而不是C+。在C语言中,若是遇到多个int i,则自动认为其中一个是定义,其他的是声明。(3).C语言和C+语言连接结果不同,可能(猜测)时在进行编译的时候,C+语言将全局变量默认为强符号,所以连接出错。C语言则依照是否初始化进行强弱的判断的。(参考)解决方法:(1).把源程序文件扩展名改成.c。(2).推荐解决方案:.h中只声明 extern int i;在.cpp中定义#ifndef _X_H_#define _X_H_extern int i;#endif /_X_H_int i;注意问题:变量一般不要定义在.h文件中。6. intrins.h在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便.内部函数 描述_crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移_lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令_testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_原 型: unsigned char _crol_(unsigned char val,unsigned char n);unsigned int _irol_(unsigned int val,unsigned char n);unsigned int _lrol_(unsigned int val,unsigned char n);举例:_crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回_testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除。_chkfloat_: 测试并返回源点数状态。就是汇编中的子函数。_crol_,_cror_:如果二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。结果10101010。功 能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。例:#include main()unsigned int y;y=0x00ff;y=_irol_(y,4);函数名: _cror_,_iror_,_lror_原 型: unsigned char _cror_(unsigned char val,unsigned char n);unsigned int _iror_(unsigned int val,unsigned char n);unsigned int _lror_(unsigned int val,unsigned char n);功 能:_cror_,_iror_,_lror_以位形式将val 右移n 位,该函数与8051“RRA”指令相关,上面几个函数不同于参数类型。例:#include main()unsigned int y;y=0x0ff00;y=_iror_(y,4);函数名: _nop_原 型: void _nop_(void);功 能:_nop_产生一个NOP 指令,该函数可用作C 程序的时间比较。C51 编译器在_nop_函数工作期间不产生函数调用,即在程序中直接执行了NOP 指令。例:P()=1;_nop_();P()=0;函数名: _testbit_原 型:bit _testbit_(bit x);功 能:_testbit_产生一个JBC 指令,该函数测试一个位,当置位时返回1,否则返回0。如果该位置为1,则将该位复位为0。8051 的JBC 指令即用作此目的。_tes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保设备集中采购合同-绿色环保技术指标及执行规范细则
- 2025年跨境电商进口代理服务合同模板
- 2025年度物联网安全设备全国独家代理销售合同
- 2025年校园食堂运营管理及绿色食材供应合同
- 2025年建筑设计师应聘考试题库与答案解析
- 二零二五版汽车出口运输与全球贸易摩擦应对合同
- 二零二五年度公墓建设项目墓区消防安全与应急处理合同
- 2025版电子信息产品组装加工承包合同范本
- 二零二五版高级行政人员劳动合同终止及离职手续办理协议
- 二零二五年度汽车租赁及增值服务合作协议
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
评论
0/150
提交评论