头像-23565

荣丰宇

  • 四川省成都市
  • 单片机 嵌入式 模拟技术 传感器/MEMS
  • 计算机网络

个人成就

获得 18 次赞

帮助过9人

【活动】如何在keil中添加STC单片机型号?

出处: I51开发板 第十三讲:新建工程_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65778&extra=page%3D1 首先,选择相应的驱动,这里我们选“STC MCU Database”,如果没有,则可以用STC的ISP软件手动添加; 然后,在“STC MCU Database”选择所用的单片机型号,因为这里没有IAP15F2K61S2单片机选型,实际上我们选择STC15F2K60S2也是一样的,因为他们是同一个系列的,配置基本一样。

【活动】&ip跟*ip有什么区别?

出处: I51开发板 第十讲:指针_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65775&extra=page%3D1 &ip是取变量ip的地址,*ip是取指针变量ip所指向的变量值。

【活动】预处理有哪些常用功能,分别如何使用?

出处: I51开发板 第十一讲:预处理_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65776&extra=page%3D1 预处理有哪些常用功能,分别如何使用? 在C语言中,以“#”开头的命令是预处理命令。C语言提供了许多中预处理功能,如宏定义#define、文件包含#include、条件编译等。 1、宏定义(define) 在C语言源程序中允许用一个标识符来表示一个字符串,称为宏 (1)无参数宏定义 #define 标识符 字符串 (2)带参数宏定义 #define 宏名(形参表) 字符串 引用时:宏名(实参表); 2、文件包含(include) #include “文件名” 文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。在程序设计中,文件包含是很有用的。一个较大的程序可以分成多个模块,由多个程序员分别编程。有些公用的符号常量或宏定义等可单独组成一个文件,在其他文件的开头用包含命令包含该文件即可使用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错。 引用时,使用尖括号与引号的区别: 使用尖括号表示在包含文件目录中去查找(包含目录由用户在开发环境中设置),而不在源文件目录去查找; 使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。 用户编程时可根据自己文件所在的目录来选择某一种命令形式。 3、条件编译 条件编译就是按不同的条件去编译不同的程序部分,从而产生不同的目标代码文件。条件编译对于程序的移植和调试(可以分段调试)非常有用。特别是在操作系统的裁减中,经常使用条件编译。 (1)第一种形式 #ifdef 标识符 程序段1 #else 程序段2 #endif (2)第二种形式 #ifndef 标识符 程序段1 #else 程序段2 #endif (3)第三种形式 #if 常量表达式 程序段1 #else 程序段2 #endif 条件编译在一些场合下非常有用~~~~赞!

【活动】一般指针跟基于存储器的指针有什么区别?

本帖最后由 荣丰宇 于 2016-8-29 22:39 编辑 出处: I51开发板 第十讲:指针_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/fo ... 5775&extra=page%3D1 这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用3字节,第一个字节存放该指针的存储器类型编码(由编译时的编译模式确定),第二个和第三个字节分别存放该指针的高位和低位的地址偏移量。 一般指针可用于存储任何变量而不必考虑变量在8051单片机存储器空间的位置,许多C51库函数都采用了一般指针。 默认情况下一般指针全部位移8051单片机的片内数据存储器中。如果在定义一般指针时带有“存储器类型2”选项,则可指定一般指针本身的存储器空间位置 由于一般指针所指对象的存储器空间位置只有在运行期间才能确定,编译器在编译时无法优化存储方式,必须生产一般代码以保证能对任意空间中的对象进行存取,因此,一般指针所产生的代码运行速度较慢,如果希望加快运行速度则应采用基于存储器的指针。 基于存储器的指针长度比一般指针短,可以节省存储器空间,而且运行速度快,但它所指对象具有确定的存储器空间,缺乏灵活性。一般指针与基于存储器的指针可以相互转换。在某些函数调用中进行参数传递时需要采用一般指针。需要注意的是,如果采用基于存储器的指针作为自定义函数的参数,而程序中又没有给出该函数的原型,则基于存储器的指针就自动转换为一般指针,假如在调用该函数时的确需要采用基于存储器的指针(其长度较短)作为传递参数,那么指针的自动转换就可能导致错误。

【活动】C语言常用的运算符有哪些并简述其功能?

本帖最后由 荣丰宇 于 2016-8-29 22:51 编辑 出处: I51开发板 第十二讲:基本运算符_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65777&extra=page%3D1 C语言常用的运算符为逻辑运算符和位运算符。 1、逻辑运算符逻辑运算符包括与(&&)、或(||)、非(!)三种,用于逻辑运算。对于使用逻辑运算符的表达式,返回0表示假,返回1表示真。与运算符(&&)表示2个条件同时满足(即2个条件都为真)时,返回结果才是真。或运算符(||)用于检查2个条件中是否有1个为真的运算符,只要有1个条件为真,运算结果就为真。逻辑非运算符(!)表示对表达式的真值取反。2、位运算符按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移()。(1)按位与运算按位与运算符“&”是双目运算符。其功能是参与运算的两路各对应的二进制位相与,只有对应的2个二进制位均为1是,结果才是1,否则为0.(2)按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进制位相或。只要对应的2个二进制位有1个为1时,结果位就为1。(3)按位异或运算按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进制位相异或,当两个对应的二进制位相异时,结果位就为1。(4)求反运算求反运算符“~”为单目运算符,具有右结合性。其功能是对参与运算的数的各二进制位求反。(5)左移运算左移运算符“”右边的数指定移动的位数。 对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。

【活动】如何定义数组,使用数组需要注意些什么?

出处: I51开发板 第九讲:数组_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65774&extra=page%3D1 如何定义数组? 一维数组的定义形式如下: 数据类型 数组名[常量表达式]; 二维数组的定义形式为: 数据类型 数组名[常量表达式1][常量表达式2]; 使用数组需要注意些什么? 1.C语言中数组的下标是从0开始的,比如对于数组char X[5]来说,其中5个元素是X[0]~X[4],不存在元素X[5],这一点在引用数组元素应当加以注意。 2.在定义字符数组时,应使数组长度大于它允许存放的最大字符串长度。因为字符串数组char string[50]可存储一个长度≤49的字符串。 3.为了测定字符串的实际长度,C语言规定以“\0”作为字符串结束标志,在访问字符数组时,遇到“\0”就表示字符串结束,符号“\0”是一个表示ASCII码值为0的字符,它不是一个可显示字符,在这里仅起一个结束标志的作用。 4.C语言规定在引用数值数组时,只能逐个引用数组中的各个元素,而不能一次引用这个数组;但对于字符数组的引用,既可通过数组中的元素逐个进行引用,也可以对整个数组进行引用。 5.当数组。特别是多维数组中的元素没有被有效利用时,将会浪费大量的存储空间,对于8051单片机这样的嵌入式控制器来说,其存储资源十分有限,不运行有不必要的空间占用,因为采用C语言编程时必须仔细地根据需要来选择数组的大小。 PS:我看到帖子中有好些写作错误哈~比如

【活动】什么是结构体,如何定义结构体?

出处: I51开发板 第八讲:结构体_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65650&extra=page%3D1 什么是结构体? 所谓的结构体,其实就是由一系列具有相同类型或不同类型的数据构成的数据集合。在C语言中,结构体(Struct)指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。 如何定义结构体? 结构体变量的定义有三种方法, 1、先定义结构体类型再定义结构体变量名 struct 结构体名 {结构体元素表}; struct 结构体名 结构体变量名1,结构体变量名2,……结构体变量名n; 2、在定义结构体类型的同时定义结构体变量名 struct 结构体名 3、直接定义结构体变量 struct {结构体元素表}结构体变量名1,结构体变量名2,……,结构体变量名n;

【活动】IAP15F2K61S2单片机有几个定时器,有哪些工作模式?

出处: I51开发板 第五讲:定时器之简介篇_单片机讨论_技术论坛_云汉电子社区 //www.icxbk.com/community/forum.php?mod=viewthread&tid=65495 IAP15F2K61S2单片机内部集成了3个16位的定时器/计数器T0、T1、T2,其核心部件是一个加法计数器(TH、TL),对输入脉冲进行计数,若计数脉冲来自系统时钟,则为定时器方式,若计数脉冲来自T0(P3.4)、T1(P3.5)、T2(P3.1)引脚,则为计数方式。 定时器/计数器T0和T1具有四种工作方式,由特殊功能寄存器TMOD中的M1、M0位决定。定时器/计数器T0和T1的工作方式1~方式3与传统的8051类似,但是工作方式0为16位自动重装方式,这一点与传统的8051不同,另外方式0和方式2还可以作为可编程时钟输出源使用。 定时器/计数器T2的工作方式固定为16位自动重装初值方式,T2除了可用作定时器之外,还可以用作串行口波特率发生器或可编程时钟输出源。