PIC C语言编程_PICC中变量修饰关键词

来源:本站
导读:目前正在解读《PIC C语言编程_PICC中变量修饰关键词》的相关信息,《PIC C语言编程_PICC中变量修饰关键词》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC C语言编程_PICC中变量修饰关键词》的详细说明。
简介:PIC C语言编程_PICC中变量修饰关键词

1)extern—外部变量声明

如果在一个C程序文件中要使用一些变量但其原型定义写在另外的文件中,那么在本文件中必须将这些变量声明成“extern”外部类型。例如程序文件code1.c中有如下定义:

bank1unsignedcharvar1,var2;

//定义了bank1中的两个变量

在另外一个程序文件code2.c中要对上面定义的变量进行操作,则必须在程序的开头定义:

externbank1unsignedcharvar1,var2;//声明位于bank1的外部变量

2) volatile—易变型变量声明

PICC中还有一个变量修饰词在普通的C语言介绍中一般是看不到的,这就是关键词“volatile”。顾名思义,它说明了一个变量的值是会随机变化的,即使程序没有刻意对它进行任何赋值操作。在单片机中,作为输入的IO端口其内容将是随意变化的;在中断内被修改的变量相对主程序流程来讲也是随意变化的;很多特殊功能寄存器的值也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成“volatile”类型,例如:

volatileunsignedcharSTATUS@0x03;

volatilebitcommFlag;

“volatile”类型定义在单片机的C语言编程中是如此的重要,是因为它可以告诉编译器的优化处理器这些变量是实实在在存在的,在优化过程中不能无故消除。假定你的程序定义了一个变量并对其作了一次赋值,但随后就再也没有对其进行任何读写操作,如果是非volatile型变量,优化后的结果是这个变量将有可能被彻底删除以节约存储空间。另外一种情形是在使用某一个变量进行连续的运算操作时,这个变量的值将在第一次操作时被复制到中间临时变量中,如果它是非volatile型变量,则紧接其后的其它操作将有可能直接从临时变量中取数以提高运行效率,显然这样做后对于那些随机变化的参数就会出问题。只要将其

定义成volatile类型后,编译后的代码就可以保证每次操作时直接从变量地址处取数。

3)const—常数型变量声明

如果变量定义前冠以“const”类型修饰,那么所有这些变量就成为常数,程序运行过程中不能对其修改。除了位变量,其它所有基本类型的变量或高级组合变量都将被存放在程序空间(ROM区)以节约数据存储空间。显然,被定义在ROM区的变量是不能再在程序中对其进行赋值修改的,这也是“const”的本来意义。实际上这些数据最终都将以“retlw”的指令形式存放在程序空间,但PICC会自动编译生成相关的附加代码从程序空间读取这些常数,编程员无需太多操心。例如:

constunsignedcharname[]=”Thisisademo”;//定义一个常量字符串

如果定义了“const”类型的位变量,那么这些位变量还是被放置在RAM中,但程序不能对其赋值修改。本来,不能修改的位变量没有什么太多的实际意义,相信大家在实际编程时不会大量用到。

4) persistent—非初始化变量声明

按照标准C语言的做法,程序在开始运行前首先要把所有定义的但没有预置初值的变量全部清零。PICC会在最后生成的机器码中加入一小段初始化代码来实现这一变量清零操作,且这一操作将在main函数被调用之前执行。问题是作为一个单片机的控制系统有很多变量是不允许在程序复位后被清零的。为了达到这一目的,PICC提供了“persistent”修饰词以声明此类变量无需在复位时自动清零,编程员应该自己决定程序中的那些变量是必须声明成“persisten”类型,而且须自己判断什么时候需要对其进行初始化赋值。例如:

persistentunsignedcharhour,minute,second;//定义时分秒变量

经常用到的是如果程序经上电复位后开始运行,那么需要将persistent型的变量初始化,如果是其它形式的复位,例如看门狗引发的复位,则无需对persistent型变量作任何修改。PIC单片机内提供了各种复位的判别标志,用户程序可依具体设计灵活处理不同的复位情形。

提醒:《PIC C语言编程_PICC中变量修饰关键词》最后刷新时间 2024-03-14 01:13:49,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC C语言编程_PICC中变量修饰关键词》该内容的真实性请自行鉴别。