云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > MSP430单片机原理 - 图文

MSP430单片机原理 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 11:53:15

char unsigned char int unsigned int -128~127 0~255 -32768~32767 0~65535 1 1 2 2 4 4 8 可设置 2-1 2-1 2-1 32168long -2147483648~2147483647 unsigned long long long 0~4294967295 -9223372036854775808 ~9223372036854775807 unsigned long 0~18446744073709551615 long float -3.4x10~3.4x10 -38-388 2-1 644 1位符号位, 8位指数位, 23位尾数位 可设置,1位符号位,11位指数位,52位尾数位 double -1.79x10-308~1.79x10-308 8

Float和double的指数位是按补码的形式来表示的,所以float的指数范围为-128~+127,而double的指数范围为-1024~+1023。float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

float和double的精度是由尾数的位数来决定的。float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,float的精度为7位; double:2^52 = 4503599627370496,一共16位,double的精度为16位。

IAR for msp430允许改变某些变量的特性。在打开工程后,选择菜单项Project\\Options,在 General Option\\Target项中可以设置浮点数长度,Floating Point决定了double变量的字节数,默认是 32bit,可以设置为64bit。在C/C++ Compile\\Language项中Plain char可以设置char是否等效为unsigned char。

在变量定义中增加某些关键字可以给变量赋予某些特殊性质:

const:定义常量。在 C430 语言中,const关键字定义的常量实际上被放在了 程序存储器flash中,经常用const关键字定义显示表之类的常数数组。

extern:声明外部变量,外部变量是指在函数或文件外部定义的全局变量。使用时,extern置于变量或函数前,表示变量或函数的定义在别的文件中,提示编译器在遇到此变量和函数时在其他模块中寻找它的定义,

static :定义静态局部变量或静态函数,静态局部变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。有时候希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。这时就应该指定局部变量为静态局部变量。

9

volatile:定义“挥发性”变量。编译器将认为该变量的值会随时改变,对该变量的任何操作都不会被优化过程删除。volatile用在如下的几个地方:中断服务程序中修改的供其它程序检测的变量需要加volatile;多任务环境下任务间共享的标志应该加volatile;存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义。

volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

全局变量:只要定义在函数体(包括主函数)外,就是全局变量了,编译器为全局变量安排特定的数据区,这些数据区为全局变量专用。全局变量一般定义在C程序的开头部分、主函数之前,在与该程序有关的所有文件都可以使用该变量。程序开始时分配空间,程序结束时释放空间,默认初始化为0。对于多文件C语言程序,如果全局变量定义在其它文件中,那么别的程序文件里面的函数要访问另一个文件里面的全局变量,须在对全局变量进行外部变量声明,关键词extern。

局部变量是在一个函数内部定义的变量,它只在定义它的那个函数范围以内有效,在此函数之外局部变量即失去意义,因而也就不能使用这些变量了。不同的函数可以使用相同的局部变量名,由于它们的作用范围不同,不会相互干扰。函数的形式参数也属于局部变量。局部变量在每次函数调用时分配存储空间,在每次函数返回时释放存储空间。

静态局部变量:静态局部变量在函数内进行定义,但不像其它局部变量,当调用时就存在,退出函数时就消失,静态局部变量始终存在着。静态局部变量的生存期为整个源程序执行期间,但是其作用域仍与局部变量相同,即只能在定义该变量的函数内使用。退出该函数后,尽管静态局部变量还继续存在,但不能使用它。静态局部变量有全局变量的优点,也有局部变量的优势。

全局变量和静态局部变量会在程序刚开始运行时进行初始化,也是唯一的一次初始化,默认初始化值为0。不过和全局变量比起来,static可以控制变量的可见范围,。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。例如,我们要同时编译两个源文件,一个是a.c,另一个是main.c。

a.c函数的内容 char a = 'A'; void msg() {

printf(\ }

下面是main.c的内容 int main( void ) {

extern char a; // 声明外部变量 printf( \ a); msg();

while(1); //循环等待

10

}

程序的运行结果是: A Hello

为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。

如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。

2.2.2 C语言的运算符

表2-6 C语言的运算符

名称 算术运算符 关系运算符 逻辑运算符 符号 + - * / % ++ -- > < == >= <= != && || ! 位操作运算符 & | ~ ^ << >> 赋值运算符 = += -= *= /= %= &= |= ^= ~= >>= <<= 自增、自减运算符说明: ++i 意思是:i自增1后再参与运算。 --i 意思是:i自减1后再参与运算。

i++ 意思是:i参与运算后,i的值再自增1。 i-- 意思是:i参与运算后,i的值再自减1。 复合赋值运算符说明:

在赋值运算符“=”的前面加上其它运算符,就构成了所谓复合赋值运算符。 += 加法赋值,>>= 右移位赋值,-=减法赋值,&= 逻辑与赋值, *= 乘法赋值,|=逻辑或赋值,/=除法赋值,^= 逻辑异或赋值, %=取模赋值, ~=逻辑非赋值,<<= 左移位赋值。 采用这种复合赋值运算符,可以使程序简化,同时还可以提高程序的编译效率。

例如a+=b 表示a=a+b;a-=b 表示a=a-b;a*=b表示a=a*b;a/=b表示a=a/b;a%=b 表示a=a%b

运算符的优先级与结合性 表2-7 运算符的优先级

优先级 操作符 功能 结合性 11

1 () 改变优先级 从左至右 (最高) [] 数组下标 —> 指向结构成员 . 结构体成员 2 ++ -- 自增1 自减1 从右至左 & 取地址 * 取内容 ! 逻辑取反 ~ 按位取反 + - 正数 负数 () 强制类型转换 sizeof 计算内存字节数 3 * / % 乘法 除法 求余 从左至右 4 + - 加法 减法 5 << >> 左移位 右移位 6 < <= > >= 小于 小于等于 大于 大于等于 7 == != 等于 不等于 8 & 按位与 9 ^ 按位异或 10 | 按位或 11 && 逻辑与 12 || 逻辑或 13 ?: 条件运算符 从右至左 14 = += -= *= /= %= 复合赋值运算符 从右至左 &= ^= |= <<= >>= 12

搜索更多关于: MSP430单片机原理 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

char unsigned char int unsigned int -128~127 0~255 -32768~32767 0~65535 1 1 2 2 4 4 8 可设置 2-1 2-1 2-1 32168long -2147483648~2147483647 unsigned long long long 0~4294967295 -9223372036854775808 ~9223372036854775807 unsigned long 0~18446744073709551615 long float -3.4x10~3.4x10 -38-388 2-1 644 1位符号位, 8位指数位, 23位尾数位 可设置,1位符号位,11位指数位,52位尾数位 double -1.79x10-308~1.79x10-308 8 Fl

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com