第3章_Cx51数据与运算
- 格式:pdf
- 大小:1.25 MB
- 文档页数:109


1 《单片机原理及应用(二)》
模块一 C51程序设计基础
任务1:实例导航
第二章 C与8051
2.1 8051的编程语言
1、8051的编程语言(四种):
(1)BASIC语言
(2)PL/M
(3)汇编语言
(4)C语言
目前,汇编语言和C语言是广泛使用的两种单片机编程语言。在未来的一段时间内,汇编语言和C语言还将同时存在,但从发展趋势看,C语言有逐渐取代汇编语言的可能。
最好的单片机编程者应是具有汇编语言基础,又精通C语言的。
2、C语言的优点(与汇编语言相比):(P41)
(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有所了解
(2)寄存器的分配、不同存储器的寻址及数据类型等细节由编译器管理
(3)程序有规范的结构,由不同的函数组成,这种方式可使程序结构化
(4)编程及程序调试时间显著缩短,从而提高效率
(5)提供库函数,具有较强的数据处理能力 2 3、8051单片机C语言(单片机C51语言)
了解一下单片机的种类:(查资料)
2.2 Cx51编译器
编译: C语言源程序转换成机器语言目标程序的过程,叫做编译。
编译器:能自动完成编译过程的一种计算机软件。
(1) C语言编译器(标准C)
(2) C51编译器(经典8051单片机)
(3) Cx51编译器(经典8051单片机及派生产品)
Cx51编译器完全遵照ANSI C语言标准,支持C语言的所有标准特征。另外,还增加了可以直接支持8051结构的特征。
典型产品:KILE套装工具软件----------uVision2 集成开发环境的使用(P 302)
例2-1:用uVision2软件编译调试一个C51程序(HELLO.C)
基本步骤:
(1) 创建一个新项目(建在一个新文件夹下)
并为项目选择一个CPU(此时会自动加入启动文件)
(2) 创建新程序文件(或打开旧程序文件)
第三章 数据类型与运算规则
程序处理的对象是数据,编写程序也就是描述对数据的处理过程。在写程序的过程中必然要涉及数据本身的描述问题。例如计算以下算式:
首先要解决的问题是如何将这个算式表达给计算机,乘号怎么写?分数如何表示?在程序设计语言中,上述的算式称为表达式。如何描述表达式中的数据、运算符号和运算过程?这就是本章要解决的主要问题。
这一章将首先讨论C语言中与数据描述有关的问题,包括数据与数据类型、常量和变量等。然后介绍C语言对数据运算的有关规则,包括运算类型、运算符和表达式等。
上一页 下一页
3.1 数据与数据类型
3.1.1 数据与数据类型
1. 什么是数据和数据类型
数据是程序加工、处理的对象,也是加工的结果,所以数据是程序设计中所要涉及和描述的主要内容。程序所能够处理的基本数据对象被划分成一些组,或说是一些集合。属于同一集合的各数据对象都具有同样的性质,例如对它们能够做同样的操作,它们都采用同样的编码方式等等,把程序语言中具有这样性质的数据集合称为数据类型。
计算机基础知识告诉我们,计算机硬件也把被处理的数据分成一些类型,例如有定点数、浮点数等。CPU对不同的数据类型提供了不同的操作指令,程序语言中把数据划分成不同类型与此有密切关系。但在程序语言中,类型的意义还不仅于此。所有程序语言都是用数据类型来描述程序中的数据结构、数据表示范围、数据在内存中的存储分配等。实际上,数据类型是计算机领域中一个非常重要的概念,可以说是计算机科学的核心概念之一。在学习程序设计的过程中,我们将要不断地与数据类型打交道。请读者给予特别的关注。
2. C语言中的数据类型
在C语言中,任何数据对用户呈现的形式有两种:常量或变量。而无论常量还是变量,都必须属于各种不同的数据类型。在一个具体的C语言系统里,每个数据类型都有固定的表示方式,这个表示方式实际上就确定了可能表示的数据范围和它在内存中的存放形式。例如,一个整数类型就是数学中整数的一个子集合,其中只能包含有限个整数值。超出这个子集合之外的整数在这个类型里是没有办法表示的。
第四讲 C51的运算符,表达式及其规则
一、运算符的概念:
运算符是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运
算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式 子。C 是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。
二、Cx51算术运算符及其表达式:
1.算术运算符:
单片机c语言 中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双 目运算符:
+ 加或取正值运算符
- 减或取负值运算符
* 乘运算符
/ 除运算符
% 取余运算符
2.算术表达式的形式:
表达式 1 算术运算符 表达式 2
如:a+b*(10-a), (x+9)/(y-a)等;
除法运算符和一般的算术运算规则有所不一样,如是两浮点数相除,其结果为浮点数,
如10.0/20.0 所得值为 0.5,而两个整数相除时,所得值就是整数,如 7/3,值为2。
3.算术运算的优先级与结合性:
1)先乘除,后加减,括号最优先;
2)一个运算对象两侧的运算符的优先级别相同时的运算顺序;
注意:如果一个运算符的两侧的数据类型不同,则必须通过数据类型转换,将其转换成同种类型。
三、Cx51关系运算符及其表达式:
1.Cx51提供的六种关系运算符:
> 大于
>= 大于等于
< 小于
<= 小于等于
== 测试等于(该符号只对等式进行测试,不赋值)
!= 测试不等于? 2.关系表达式的形式:
表达式 1 关系运算符 表达式 2
如:c>a+b,a>b!=c等;
3.关系运算符的优先级及结合性:
第三章 习题参考答案
一、填空题
1、指令格式是由 操作码 和 操作数 所组成,也可能仅由 操作码 组成。
2、若用传送指令访问MCS-51的程序存储器,它的操作码助记符应为 MOVC 。
3、若用传送指令访问MCS-51的片内数据存储器,它的操作码助记符应为 MOV 。
4、若访问MCS-51的片外数据存储器,它的操作码助记符应为 MOVX 。
5、累加器(A)=80H,执行完指令ADD A,#83H后,进位位C= 1 。
6、执行ANL A,#0FH指令后,累加器A的高4位= 0000 。
7、JZ rel的操作码地址为1000H,rel=20H,它的转移目的地址为 1022H 。
8、JBC 00H,rel 操作码的地址为2000H,rel=70H,它的转移目的地址为 2073H 。
9、累加器(A)=7EH,(20H)= #04H,MCS-51执行完ADD A,20H指令后= 0 。
10、MOV PSW,#10H是将MCS-51的工作寄存器置为第 2 组。
11、指令LCALL 37B0H,首地址在2000H,所完成的操作是 2003H 入栈,
37B0H →PC。
12、MOVX A,@DPTR源操作数寻址方式为 寄存器间接寻址 。
13、ORL A,#0F0H是将A的高4位置1,而低4位保持 不变 。
14、SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为 00B7H 。
15、设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为 2080H 。
16、MOV C,20H源寻址方式为 位 寻址。