《单片机技术及应用》3图文模板
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
3.逻辑运算 逻辑运算和关系运算比较相似,也是处
理操作操作数之间的关系,结果只有true和 false两种,表3-4给出逻辑运算符。
关系运算符 && || !
含义 与 或 非
举例(设a=true,b=false) a && b 结果:false a || b 结果:true !a 结果:false
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
6. 运算的优先级
• 通过前面的介绍,现在应对C语言的几种运算 有了大概的了解。在实际应用的过程中大部 分的计算可能是包括上面几种运算的组合, 这样进行运算的时候,执行的顺序就非常的 重要,此时就有了解运算的优先级顺序,表 3-6给出了运算的优先级顺序。
另外“=”还可以和其他的运算符结合起来使用。例如+=、-=、*=、/=、%=等,它们
的意义分别是:
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
5. 位运算
• 位运算在单片机的开发中非常重要,比如 设置某个管脚的输出电平的操作就是通过 位运算来实现的,表3-5给出位运算符。
Basic Knowledge C语言基础知识
五、中断响应快速性的一种实现 在工业控制中,系统的实时性是非常重要的,有时甚至是关键性的。在一个大
的系统中,CPU的负荷可能会很高,处理着众多的程序和中断。在这种情况下,如果 某一个或某些中断处理函数占用过多的CPU时间,就很可能导致其他中断无法响应, 甚至会导致系统的瘫痪。如果在一个单片机实现数据采集系统中,单片机不仅要不停 的采集数据、处理数据,而且更重要的是要负责系统的协调工作,协调好各个中断及 各个任务的顺利进行。这时候可以把采集数据的工作放到一个定时器中断里去做。
Basic Knowledge C语言基础知识
七、使用移位运算代替乘除和求模等运算 在C51语音中,乘、除、求模和浮点运算等都是通过调用库函数来实现的,调用
库函数的一个特点是使编程方便简洁,但也存在效率不高的问题。而且他们编译后的 代码太长。在通常情况下我们可以用移位操作来代替。既提高了程序的效率,又缩短 了编译后代码的长度。如乘4和除4分别可以通过左移2位和右移2位来实现,求模也可 以通过移位的组合来实现。
关系运算符 & | ~ >> <<
含义 与 或 取反 右移 左移
举例(设a=10,b=13) m = a & b 结果:m = 8 m = a | b 结果:m = 15 m = ~a 结果:m = 0xf5 m = a>>2 结果:m = 40 m = a<<2 结果:m = 2
表3-5 给出位运算符
资源
PART FIVE 单片机的 资源扩展
3
PART TWO
MCS-51的C语言 基础
I. C语言基础知识 II.Keil u Vision2集成开发环境
Basic Knowledge C语言基础知识
一、数据类型、运算符与表达式
1. 数据类型
• 标准C语言中主要有整形、实型(又分为单 精度型和双精度型)、字符型和空类型。 这些数据类型的长度和范围会因处理器的 类型和C语言编译程序的实现而有所不同, 对于keil产生的目标文件,表3-1给出了几 种数据的长度和范围。
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
4.赋值运算
• 通常把“=”称为赋值运算。该运算符是一个二元运算符,需要两个操作数,左边
的操作数是变量或者数组,右边的是表达式,例如:
unsigned char a,b;
a = 8;
//赋值运算
b = a + 3;
//赋值运算
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
2.关系运算 关系运算主要是对操作数进行某种条件的
判断,结果只有两种true或false。表3-3给 出一些关系运算。
关系运算符 > >= == < <= !=
含义 大于 大于等于 等于 小于 小于等于 不等于
举例(设a=5,b=3) a > b 结果:true a >= b 结果:true a == b 结果:false a < b 结果:false a <= b 结果:false a != b 结果:true
长度(bit) 8 8 8 16 16 16 16 16 16 32 32 32 32
范围 -128~+127
0~255 -128~+127 -32768~32767 0~65535 -32768~32767 -32768~32767 0~65535 -32768~32767 -2147483648~+2147483647 0~4294967295 -2147483648~+2147483647 -1.175494E-38~+3.402823E+38
系统的实时性、资源有限性等特点,C51程序设计也有一些普通C程序设计所不具备的 一、养成好的编程习惯 特点。 1.程序的总体设计 2.命名规则 (1)常量的命名 (2)变量的命名 (3)函数的命名 3.编程规范 (1)缩进 (2)对齐 (3)空行 (4)注释 (5)不应当把多个短语句写在一行中,即一
SCM Technology & Application 单片机技术及应用
PRESENTED BY 盛国超 许林冲
CONTENTS 目录
1
2
3
4
5
PART ONE 绪论
PART TWO MCS-51结 构及系统
指令
PART THREE MCS-51的 C语言基 础
PART FOUR MCS-51的 基本内部
表3-1 MCS-51中几种常用
Basic Knowledge C语言基础知识
一、数据类型、运算符与表达式
2. 标示符与关键字
(1)标识符命名
2)关键字
• 在C语言中,标识符可以作为变量名、 • 关键字是一种含有特殊意义的字符,又
函数名、数组名以及文件名。它可以
称为保留字。它在编译器中已经有了定
是一个字符或是多个字符。大多数情
Basic Knowledge C语言基础知识
六、一些关键字的使用 关键字的灵活应用能够使程序很大程度上提高程序的效率,这里将主要介绍一下几个 关键字: 1.static static关键字在许多C语言教程中都值介绍该关键字定义的变量为静态变量,他 在每次调用以后,值都保持不变,即具有记忆性。但static的意义并不局限于此,它 还有以下两层主要意思: (1)不论用static声明的变量在程序中是什么位置,即使它是函数内部的局部 变量,编译器都会给它分配一个固定的内存空间。而这个变量在整个程序的执行过程 中都存在,程序执行完毕它才消亡。尽管他在全局中都存在,会占用存储空间,但适
义,所以不能再进行重复定义,需要加
况下,标识符必须以字母或者下划线
以保留。这就是上面提到的标识符不能
开始,后面可以是字母、数字或者下
与关键字同名的原因。
划 线 。 例 如 , _Data 、 count1 和 • 数据类型关键字:auto、char、const、
Basic Knowledge C语言基础知识
个名字,在内存中占用一定的存储单元,
在该存储单元中存放该变量的值。
• 定 义 变 量 的 一 般 形 式 是 : type
variable_list
;
Basic KnowlHale Waihona Puke Baidudge C语言基础知识
一、数据类型、运算符与表达式
4.整型数据
5.实型数据
整型数据是指整数型常
实型数据即为浮点型
数或者整型变量,它主要包 数据。它可以含有小数点,
括int、short、long等。
但是它表示的数据是有精
整型变量的定义很简单, 度 的 。 实 型 变 量 主 要 有
具体如下面例子所示:
float 、 double 和 long
void main()
double 这 几 种 类 型 。 实 型
{
变量的定义方法也很简单
Basic Knowledge C语言基础知识
类型 char unsigned char signed char int unsigned int signed int short int unsigned short int signed short int long int unsigned long int signed long int float
一、数据类型、运算符与表达式
3. 常量与变量
(1)常量 • C语言中在程序运行过程中,其值
不能被改变的量称为常量。常量 区分为不同的类型,如10、0、-1 为整形常量,3.14、-1.26为实型 常量,‘a’‘b’位字符型常量。
(2)变量
• C语言中在程序运行过程中,其值可以
改变的量称为变量。一个变量应该有一
C语言的运算符范围很宽,不仅可以进行 加、减、乘、除等算术运算,还可以进行比如 关系运算、逻辑运算、赋值运算和位运算等。
1.算术运算
算术运算主要是进行一些加、减、乘、除等 运算,表3-2给出了算术运算符。
算术运算符 + * / % ++ --
含义 加 减 乘 除 模运算(取余) 自增 自减
举例(设a=5,b=3) a + b 结果:8 a - b 结果:2 a * b 结果:15 a / b 结果:1 a % b 结果:2 a++ 结果:6 a-- 结果:4
reentrant关键字用于声明一个函数为再入函数。再入函数可以同时由几个程序 功用,如主函数和中断函数同时调用一个函数。当执行再入函数时,其他程序可以中 断执行并开始执行同一个再入函数。
一般情况下, C51函数不能递归调用或被几个可能同时执行的函数同时调用。这 是因为函数自变量和局部变量都存放在固定的存储空间里,如果同时调用,函数的堆
Basic Knowledge C语言基础知识
二、宏定义 宏定义属于预处理指令,通过它可以是程序设计简化,增加程序的可读性、可维护性 和可移植性。宏定义分为简单的宏定义和带参数的宏定义。 1.简单的宏定义 #define 标示符 字符串 三、2条.带件参编数译的宏定义 C51中#d的ef条in件e 编宏译名预(处参理数指表令)可字以符通串过C51编译器根据编译选项有条件的辨析这部分 代码。使用条件编译的好处是可以使程序中某些功能模块可以根据需要有选择的加入 到项目中去,或使同一个程序方便的移植到不同的硬件平台上,条件编译有几种指令, 最基本的格式有三种。
一、数据类型、运算符与表达式
6. 字符型数据
• 字符型数据主要处理字符相关的内容,比 如处理英文字母或者汉字。一般来说会将 多个字符型变量组成一个字符串来使用。
• 在这里需要强调一下数值和字符常量在表 现形式上是有区别的。例如‘8’表示的 是字符,而8则表示数值。
Basic Knowledge C语言基础知识
Basic Knowledge C语言基础知识
四、具体指针的应用 C51编译器支持两种不同类型的指针:普通指针和存储器特殊指针。
在C51编译器中普通指针总是使用3个字节机型保存: 第一个字节用于保存存储器类型; 第二个字节用于保存地址的高字节; 第三个字节用于保存地址的低字节。
存储器特殊指针在指针定义中,总是包含存储器类型的指定,并总是指向一个特 定的存储器空间区域。如:char data *cp;这个定义使得字符型指针cp指向51片内字 节寻址的数据存储区。
运算优先级 1 2 3 4 5 6 7 8 9 10
运算符 ! ~ ++ --等 */% +<< >> < <= > >= == != & | && || = += -= *= /=等
Basic Knowledge
C语言基础知识
同一般的C程序开发一样,C51的程序设计也有一些程序设计的技巧。同时由于嵌入式
一、数据类型、运算符与表达式
7. 各种数据之间的转换
• 在某些应用场合需要进行数据类型的转换, 比如把字符型变量转换成整型,把int型数 据转换成long型等。
• 下面给出数据类型转换的例子: void change(void) {
Basic Knowledge C语言基础知识
二、C语言的运算符与表达式
Basic Knowledge C语言基础知识
2.const const关键字在许多C教程中都只用于定义一个常量,这是不完全的。用const修饰的
变量、指针、函数参数返回值等都是只读的,即它们都受到保护,不能改变它们的值。 当在代码中试图对上述上述变量进行赋值或者修改等操作时,在编译的时候编译器
3.reentrant 会报错。