版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机接口技术单片机接口技术前言课程简介:课程简介:通过本课程的学习,掌握 C51 单片机的硬件基本结构、内部各部件及接口的工作原理,学习如何根据工程开发任务的要求,实现C51单片机应用系统的设计。单片机接口技术课堂教学(理论授课)、闭卷考试总成绩=平时成绩+考试成绩出勤、作业、仿真实验?(proteus 或 Multisim)教学形式及考核方式:教学形式及考核方式:实例实例1:设计一交设计一交通信号系统,控制信号变换时间,要求:通信号系统,控制信号变换时间,要求:人工调整时间间隔,体积人工调整时间间隔,体积小,功耗低,成本低,时间响应快、可靠性高。小,功耗低,成本低,时间响应快、可靠性高。前
2、言实例实例2:设计一水位控制系统,可以监测容器水位,并调整阀门开度,使水位保持在设计一水位控制系统,可以监测容器水位,并调整阀门开度,使水位保持在30m处,并在上下处,并在上下0.5m内可波动。内可波动。分析:分析:定时程序、定时程序、I/O输出控制信号灯、人机交互接口输出控制信号灯、人机交互接口分析:分析:水位监测接口:接收和处理水位传水位监测接口:接收和处理水位传感器信号感器信号;水位控制程序:根据当前水位和目水位控制程序:根据当前水位和目标水位的偏差进行控制标水位的偏差进行控制,PI;水位控制接口:输出水位控制信号,水位控制接口:输出水位控制信号,通过执行机构控制阀门开度。通过执行机构控
3、制阀门开度。前言计算机系统逐渐形成了通用计算机系统和嵌入式计算机系统两大分支。嵌入式计算机系统具有体积小、功耗和成本低廉的特点,广泛应用于工业测控领域,完成数据处理、模拟仿真、图像处理、网络通信等功能。嵌入式技术应用:家用电器、汽车、机器人、仪器仪表,在核电仪控系统中也有大量的应用。 单片机(single chip microcomputer),指将、以及计算机主要部件集成在一块集成电路上的微型计算机。是典型的(Microcontroller Unit)单片机发展过程前言单片机的发展历程单片机的发展历程 20世纪70年代随着微处理器研制成功,出现了单片机,1976年Intel公司的MCS-48
4、;Motorola公司的6801、6802;Zilog公司的Z-8等,典型产品MCS-51(80c51、80c52) 8位机,MCS-96是16位机SCMSCM- - MCUMCU- - SoCSoC(始于(始于2020世纪世纪9090年代中期)年代中期)Single Chip Single Chip MicrocomputerMicrocomputerMicro Controller UnitMicro Controller UnitSystem On ChipSystem On Chip前言单片机的发展阶段单片机的发展阶段1974年1976年:单片机:单片机初级初级阶段。双片的形式,且功能
5、阶段。双片的形式,且功能比较简单。比较简单。1976年1978年: :低性能低性能单片机阶段。以单片机阶段。以Intel Intel 公司制造的公司制造的MCS-48MCS-48单片机为代表。单片机为代表。1978年现在:高性能高性能单片机阶段。单片机阶段。IntelIntel公司的公司的MCS-51MCS-51系列、系列、MortorolaMortorola公司的公司的68016801系列等。系列等。1982年现在:8 8位单片机巩固发展及位单片机巩固发展及1616位单片机、位单片机、3232位单位单片机推出阶段。片机推出阶段。前言MCS-51和80C51简介n第一代第一代 1976年,年,
6、MCS-48将计算机CPU和外围芯片集成到一个芯片上n第二代第二代 MCS-51的的8051、8052技术特点是向外部接口电路扩展扩大了存储器空间RAM和ROM。8031与8051及8751内部结构基本相同,区别在于8031不含片内程序存储器,8751片内程序存储器为EPROMn第三代第三代 80C51技术特点是CMOS化,集成度高,速度快,功耗低。80C51是以MCS-51的HCMOS基础上发展而来,结构与MCS-51基本相同,主要对外部接口进行了扩展。从应用和设计开发角度两者区别不大。值得注意的是,在单片机硬件发展的同时,单片机软件开发语言也发值得注意的是,在单片机硬件发展的同时,单片机软
7、件开发语言也发生了变化,生了变化,高级语言高级语言已经逐渐替代已经逐渐替代汇编语言汇编语言前言嵌入式系统发展趋势多功能化多核结构处理器更低功耗更宽的工作电压范围更先进的工艺和更小的封装低噪声布线技术前言n80C51的封装形式有40引脚双列直插(DIP)和44引脚方型扁平式(QFP) 80C51单片机的引脚功能和结构框图 单片机的基本组成CPUCPU运算部件运算部件控制部件控制部件B BRAMRAMP0P0口口P2P2口口ROMROM(EPROM)(EPROM)串串行行口口 C / T中断中断系统系统SFRSFRP1P1口口8 8P3P3口口8 88 88 8XTALXTAL1 1XTALXTA
8、L2 2PSEN ALEPSEN ALE EA RESET EA RESETV cV cc cV sV ss s1.1.微处理器微处理器2.2.数据存储器数据存储器3.3.程序存储器程序存储器4.I/O4.I/O口口5.5.串行口串行口6.6.定时定时/ /计数器计数器7.7.中断系统中断系统8.8.特殊功能特殊功能寄存器寄存器u按功能可分成按功能可分成8个部件,通过片内单一总线连接起来个部件,通过片内单一总线连接起来u控制方式:控制方式:SFR对各功能部件集中控制对各功能部件集中控制单片机接口技术(C51版)第一章 C51基本语法数据传送指令数据传送指令赋值操作赋值操作算数运算指令算数运算指
9、令逻辑运算指令逻辑运算指令控制转移指令控制转移指令布尔操作指令布尔操作指令循环语句循环语句选择语句选择语句跳转语句跳转语句位操作位操作算数操作算数操作关系和逻辑操作关系和逻辑操作单片机的指令(111条指令)C语言的操作符和语句内容概述内容概述n数据类型和运算符、表达式是数据类型和运算符、表达式是C51语言语言程序设计的最基础知识,程序设计的最基础知识,C51语言把数据分语言把数据分成了多种数据类型,并提供了丰富的运算成了多种数据类型,并提供了丰富的运算对数据进行处理。本章对对数据进行处理。本章对C51语言的基本数语言的基本数据类型、常量变量、运算符及表达式等进据类型、常量变量、运算符及表达式等
10、进行详细介绍。行详细介绍。教学目标教学目标1掌握数据类型的概念,了解C51语言能够处理的数据类型。2掌握常量的概念,掌握各种类型常量的特点及表示形式。3掌握变量的概念,了解int、float、char型变量的特点,掌握这三种类型变量的定义、赋值和使用方法。理解C51中变量的存储和编译模式的关系,掌握单片机片内资源的访掌握单片机片内资源的访问方法。问方法。4了解C51语言的基本运算符及其特点,掌握运算符的优先级和结合性的概念。5了解算术运算表达式、关系表达式及逻辑表达式的特点,熟练进行表达式计算,能熟练进行实际问题的表达式描述。6熟悉自增、自减运算的特点,掌握赋值运算,了解逗号运算符和逗号表达式
11、。7掌握数据类型转换的概念,能进行基本的数据类型转换。1.1 C51基本数据类型n具有一定格式的数字或数值叫做数据,数据的不具有一定格式的数字或数值叫做数据,数据的不同格式叫作数据类型。任何程序设计都离不开数同格式叫作数据类型。任何程序设计都离不开数据的处理。据的处理。 nC51的数据类型有位型(bit)、无符号字符(unsigned char)、有符号字符(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长型(unsigned long)、有符号长型(signed long)、浮点(float)和指针类型等。其中short与long
12、属整型数据、 float与 double型属浮点型数据。 数据类型数据类型长长 度度值值 域域 范范 围围bit1 bit0,1sbit1 bit0,1unsigned char1 byte0255signed char1 byte-128127sfr1 byte0255unsigned int2 byte065536signed int2 byte-3276832767sfr162 byte065536*13 byte对象的地址对象的地址unsigned long4 byte04294967295signed long4 byte-21474836482147483647float4 byt
13、e+1.175494E-38+3.402823E+38n当程序中出现表达式或变量赋值运算时,当程序中出现表达式或变量赋值运算时,若运算对象的数据类型不一致,数据类型若运算对象的数据类型不一致,数据类型可以自动进行转换,转换按以下优先级别可以自动进行转换,转换按以下优先级别自动进行:自动进行:bit(1) char(8) int(16) long(32) float(32)unsigned signedMSB LSB1.2 常量与变量1.2.1 常量n在程序运行中其值不能改变值不能改变的量称为常量。 1.整型常量。可以表示为十进制如123,0,-8等。十六进制则以0 x开头如0 x34。长整型就
14、在数字后面加字母L,如10L, 0 xF340L等。2.浮点型常量。分为十进制和指数表示形式。十进制由数字和小数点组成,如0.888,3345.345,0.0等,整数或小数部分为0时可以省略0但必须有小数点。指数表示形式为: 数字.数字e数字 中的内容为可选项,其中内容根据具体情况可有可无,但其余部分必须有,如123e3,5e6,-1.0e-3。而e3,5e4.0则是非法的表示形式。3.字符型常量是单引号内的字符,如a,d等。4.字符串型常量由双引号内的字符组成,如hello,english等。当引号内的没有字符时,为空字符串。n用标识符代表的常量称为用标识符代表的常量称为常量。常量。例如:在
15、指令“ #define PI 3.1415926”后,符号常量PI即代表圆周率3.1415926。#define uchar unsigned charuchar x unsigned char x1.2.2 变量1.2.2.1变量类型n在程序运行中,其在程序运行中,其值可以改变值可以改变的量称为变的量称为变量量n一个变量主要由两部分构成:一个是变量一个变量主要由两部分构成:一个是变量名,一个是变量值。名,一个是变量值。n每个变量都有一个变量名,在内存中占据每个变量都有一个变量名,在内存中占据一定的存储单元一定的存储单元(地址地址),并在该内存单元中,并在该内存单元中存放该变量的值。存放该变量
16、的值。C51支持的变量通常有如下类型:支持的变量通常有如下类型:位位变量变量(bit)位变量的值可以是位变量的值可以是1(true)或或0(false)。与。与8051硬件特性操作有关的位硬件特性操作有关的位变量必须定位在变量必须定位在8051CPU片内存储区片内存储区(RAM)的的可位寻址空间可位寻址空间中。中。(char)字符变量的长度为字符变量的长度为1 byte,即,即8位。位。C51编译器默认的字符型变量编译器默认的字符型变量为无符号型为无符号型(unsigned char)。负数在计算机中存储时一般用。负数在计算机中存储时一般用补码补码表示。表示。整型变量整型变量(int)整型变量
17、的长度为整型变量的长度为16位。位。8051系列系列CPU将整型变量的将整型变量的msb存放在低存放在低地址字节。地址字节。有符号整型变量有符号整型变量(signed int)也使用也使用msb位作为标志位,并使用二进制的补位作为标志位,并使用二进制的补码表示数值。码表示数值。 长整型变量长整型变量(1ong int)长整型变量占用长整型变量占用4个字节个字节(byte),其它方面与,其它方面与整型变量整型变量(int)相似。相似。浮点型变量浮点型变量(float)浮点型变量占浮点型变量占4个字节个字节(byte),许多复杂的数学表达式都采用浮,许多复杂的数学表达式都采用浮点变量数据类型。它用
18、符号位表示数的符号,用阶码和尾数表示数的大小。用它们进点变量数据类型。它用符号位表示数的符号,用阶码和尾数表示数的大小。用它们进行任何数学运算都需要使用由编译器决定的各种不同效率等级的库函数。(补充存储行任何数学运算都需要使用由编译器决定的各种不同效率等级的库函数。(补充存储格式)格式) (2 2)数据存储器)数据存储器 片内数据存储器片内数据存储器工作寄存器:工作寄存器:内部内部RAM的最低的最低32个字节个字节(00H FFH),共共分分4组组,每组每组8个(个(R0 R7)特殊功能寄存器特殊功能寄存器(SFR):P0P3口寄存器、定时口寄存器、定时/计数器寄存器串口计数器寄存器串口数据缓
19、冲器、数据缓冲器、I/O端口锁存器以及各种控制端口锁存器以及各种控制寄存器和状态寄存器。寄存器和状态寄存器。地址:地址:80HF0H字节寻址区(数据缓冲器):字节寻址区(数据缓冲器):位寻址区:位寻址区:内部内部RAM的的20H2FH,这这16个单元的个单元的位位地址地址范围是范围是00H 7FH字节字节地址地址位地址位地址765432102FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH
20、59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H
21、00H字节地址与位地址之间的关系字节地址与位地址之间的关系n在编程时,为了书写方便,经常使用简化在编程时,为了书写方便,经常使用简化的缩写形式来定义变量的数据类型。其方的缩写形式来定义变量的数据类型。其方法是在源程序开头使用法是在源程序开头使用#define语句。语句。例如: #define uchar -unsigned char #define uint -unsigned int 1.2.2.2变量的存储n变量的存储器类型是指该变量在变量的存储器类型是指该变量在8051单片机硬件系统中所使用的存储区域,单片机硬件系统中所使用的存储区域,并在编译时准确的定位。并在编译时准确的定位。n805
22、1系列单片机将程序存储器系列单片机将程序存储器(ROM)和数据存储器和数据存储器(RAM)分开分开,并各有各自并各有各自的寻址机构和寻址方式。的寻址机构和寻址方式。8051系列单片机在物理上有四个存储空间:系列单片机在物理上有四个存储空间: *片内程序存储器空间; *片外程序存储器空间, *片内数据存储器空间; *片外数据存储器空间80C51单片机的存储器采用单片机的存储器采用Harvard结构结构程序存储器和数据存储器程序存储器和数据存储器截然分开,各有自己的寻址方式、寻址空间和控制系统。截然分开,各有自己的寻址方式、寻址空间和控制系统。 在在物理物理上有上有4个存储空间:个存储空间:程序存
23、储器:程序存储器:片内程序存储器片内程序存储器 片外程序存储器片外程序存储器数据存储器:数据存储器:片内数据存储器片内数据存储器 片外数据存储器片外数据存储器 在在逻辑逻辑上有上有3个存储地址空间:个存储地址空间:片内、片外统一的片内、片外统一的64KB程序存储器地址空间程序存储器地址空间片内片内256(或(或384)字节数据存储器地址空间)字节数据存储器地址空间片外片外64KB数据存储器地址空间数据存储器地址空间存储器空间划分存储器空间划分80C5180C52KEIL Vision2所能支持的存储器类型所能支持的存储器类型: 存储器类型存储器类型说说 明明datadata直接访问内部数据存储
24、器(直接访问内部数据存储器(128128字节字节),),访问速度最快访问速度最快bdatabdata可可位位寻址内部数据存储器(寻址内部数据存储器(1616字节),允许位与字节混合访问字节),允许位与字节混合访问idataidata间接访问内部数据存储器(间接访问内部数据存储器(256256字节),允许访问全部字节),允许访问全部256B256B地址地址pdatapdata分页访问外部数据存储器(分页访问外部数据存储器(256256字节),用字节),用MOVX RiMOVX Ri指令访问指令访问xdataxdata外部数据存储器外部数据存储器(64KB)(64KB),用,用MOVX DPTRM
25、OVX DPTR指令访问指令访问codecode程序存储器(程序存储器(64KB64KB), ,用用MOVC A+DPTRMOVC A+DPTR指令访问指令访问n注意的是在注意的是在AT89C51芯片中芯片中RAM只有低只有低128位,位于位,位于80H到到FFH的高的高128位则在位则在52芯片中才有用,并和特殊寄存器地址重芯片中才有用,并和特殊寄存器地址重叠。叠。n定义变量时如果省略存储器类型,系统则会按编译模式定义变量时如果省略存储器类型,系统则会按编译模式SMALL、COMPACT或或LARGE所规定的默认存储器类型所规定的默认存储器类型去指定变量的存储区域。去指定变量的存储区域。无论
26、什么存储模式都可以声明变无论什么存储模式都可以声明变量在任何的量在任何的8051存储区范围,然而把最常用的变量、命存储区范围,然而把最常用的变量、命令放在内部数据区可以显著的令放在内部数据区可以显著的提高系统性能提高系统性能。 C51支持的主要编译模式 存储模式存储模式说说 明明SMALLSMALL 函数参数及局部变量放在片内函数参数及局部变量放在片内RAMRAM(默认变量类型为(默认变量类型为DATADATA,最大最大128128字节)。另外所有对象包括栈都优先放置于片内字节)。另外所有对象包括栈都优先放置于片内RAMRAM,当,当片内片内RAMRAM用满,再向片外用满,再向片外RAMRAM
27、放置。放置。 COMPACTCOMPACT 参数及局部变量放在参数及局部变量放在片外片外RAMRAM(默认的存储类型是(默认的存储类型是PDATAPDATA,最大最大256256字节);通过字节);通过R0R0、R1R1间接寻址间接寻址,栈位于,栈位于80518051片内片内RAMRAM。LARGELARGE 参数及局部变量直接放入参数及局部变量直接放入片外片外RAM(RAM(默认的存储类型是默认的存储类型是XDATAXDATA,最大最大64KB)64KB);使用数据指针;使用数据指针DPTDPTR R间接寻址间接寻址。因此访问。因此访问效率较低效率较低且直且直接影响代码长度接影响代码长度1.
28、2. 3 8051片内资源及位变量1.2.3.1 特殊功能寄存器的C51定义n8051单片机的内部高单片机的内部高128个字节为专用寄个字节为专用寄存器区,其中存器区,其中51子系列有子系列有21个(个(52子系列子系列有有26个)特殊功能寄存器(个)特殊功能寄存器(SFR),它们),它们离散的分布在这个区中,分别用于离散的分布在这个区中,分别用于CPU并并行口、串行口、中断系统、定时行口、串行口、中断系统、定时/计数器等计数器等功能单元及控制和状态寄存器。功能单元及控制和状态寄存器。 n对对SFR的操作,只能采用直接寻址方式。为了能直接访问的操作,只能采用直接寻址方式。为了能直接访问这些特殊
29、功能寄存器,这些特殊功能寄存器,Keil C51扩充了两个关键字扩充了两个关键字“sfr”、“sfr16”,可以直接对,可以直接对51单片机的特殊寄存器进行定义,单片机的特殊寄存器进行定义,这种定义方法与标准这种定义方法与标准C51语言不兼容,只适用于对语言不兼容,只适用于对8051系列单片机系列单片机C51编程。编程。定义方法如下:定义方法如下:sfr 特殊功能寄存器名= 特殊功能寄存器地址常数;sfr16 特殊功能寄存器名= 特殊功能寄存器地址常数;对于8051片内I/O口,定义方法如下:sfr P1 = 0 x90; /定义P1口,地址90Hsfr P2 = 0 xA0; /定义P1口,
30、地址A0Hnsfr后面是一个要定义的名字,要符合标识符的命名规则,名字最好有一定的含义 n等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH)。sfr是定义8位的特殊功能寄存器, sfr16用来定义16位特殊功能寄存器,如8052的T2定时器,可以定义为:nsfr16 T2 = 0 xCC; /这里定义8052定时器2,地址为T2L=CCH,T2H=CDHn用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是,sfr16不能用于定时器0和1的定义。n对于需要单独访问SFR中的位,C5
31、1的扩充关键字sbit可以访问位寻址对象。nsbit定义某些持殊位,并接受任何符号名定义某些持殊位,并接受任何符号名,“=”号号后将绝对地址赋给变量名后将绝对地址赋给变量名n这种地址分配,有三种方法:1)sbit 位变量名位地址sbit P1_1 = Ox91;这样是把位的绝对地址赋给位变量。同sfr一样,sbit的位地址必须位于80HFFH之间。2)Sbit 位变量名特殊功能寄存器名位位置sfr P3 = 0 xB0;sbit P3_1 = P3 1; /先定义一个特殊功能寄存器名,再指定位变量名所在的位置。当可寻址位位于特殊功能寄存器中时可采用这种方法。3)sbit 位变量名字节地址位位置
32、sbit P3_1 = 0 xB0 1;1.2.3.2 位寻址区及位变量定义位寻址区及位变量定义C51提供一个提供一个bdata的存储器类型,用于访问单片的存储器类型,用于访问单片机的可位寻址区的数据机的可位寻址区的数据 如:unsigned char bdata age; /在位寻址区定义ucsigned char类型的变量ageint bdata score2; /在可位寻址区定义数组score2sbit flag=age7 /用关键字sbit定义位变量来独立访问可寻址位对象的其中一位C51提供关键字“bit”实现位变量的定义及访问。bit flag; / 将flag定义为位变量bit v
33、alve_state; / 将valve_state定义为位变量n通常C51编译器会将位变量分配在位寻址区的某一位。定义位变量时应注意以下问题定义位变量时应注意以下问题1)位变量不能定义成一个指针,如不能定义:bit * POINTER。2) 不能定义位数组,如不能定义: bit array2。3) bit与sbit的不同。bit不能指定位变量的绝对地址,当需要指定位变量的绝对地址(范围必须在0 x80-0 xff)时,需要使用sbit来定义。例:sbit flag=P10;n也可使用也可使用sbit访问可位寻址对象的位。访问可位寻址对象的位。bdata char jj ; * jj定义为bd
34、ata整型变量*int bdata sum2; /*在可位寻址区定义数组sum2,也称为可寻址位对象*/ sbit mybit7=jj7; *mybit7 定义为jj的第7位*/ sbit score12=sum112; * score12定义为sum1的第12位*/ n可位寻址对象也可以字节寻址。可位寻址对象也可以字节寻址。例: jj=0; *jj赋值为0*sbit定义要求基址对象的存储类型为bdata,否则只有绝对的特殊位定义(sbit)是合法的。位置(操作符)后的最大值依赖于指定的访问对象型,对于char、uchar而言是0-7,对于int、uint而言是015。nsbit定义要求基址对
35、象的存储类型为定义要求基址对象的存储类型为bdata,否,否则只有绝对的特殊位定义则只有绝对的特殊位定义(sbit)是合法的。位置是合法的。位置(操作符操作符)后的最大值依赖于指定的访问对象型,后的最大值依赖于指定的访问对象型,对于对于char、uchar而言是而言是0-7,对于,对于int、uint而而言是言是015。1.3 自定义变量类型typedefn通常定义变量的数据类型时都是使用标准通常定义变量的数据类型时都是使用标准的关键字,方便别人阅读程序。但使用的关键字,方便别人阅读程序。但使用typedef可以有方便程序的移植和简化较长可以有方便程序的移植和简化较长的数据类型定义的数据类型定
36、义 例如:程序设计者对变量的定义习惯了DELPHI的关键字,如整型数据习惯用关键字integer来定义,在用C51时还想用integer的话,你可以这样写:typedef int integer;integer a,b;1.4 运算符与表达式运算符与表达式1.4.1赋值运算n利用赋值运算符将一个变量与一个表达式连接起来的式子为赋值表达式,在表达式后面加“;”便构成了赋值语句。n使用=的赋值语句格式如下:变量变量 = 表达式;表达式;例如:a = 0 x10; /将常数十六进制数10赋于变量ab = c = 2; /同时将2赋值给变量b,cd = e; /将变量e的值赋于变量df = d-e;
37、/将变量d-e的值赋于变量fn赋值语句的意义就是先计算出=右边的表达式的值,然后将得到的值赋给左边的变量。而且右边的表达式可以是一个赋值表达式。1.4.2算术运算1.4.2.1 算术运算符及算术表达式nC51中的算术运算符有如下几个,其中只有取正中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双值和取负值运算符是单目运算符,其它则都是双目运算符:目运算符:1.十 (加法运算符,或正值符号) 2.- (减法运算符,或负值符号) 3.* (乘法运算符)4./ (除法运算将) 5. (模(求余)运算符。例如5%3结果是5除以3所得的余数2) n用算术运算符和括号将运算对
38、象连接起来用算术运算符和括号将运算对象连接起来的式子称为算术表达式。运算对象包括常的式子称为算术表达式。运算对象包括常量、变量、函数、数组、结构体等等。量、变量、函数、数组、结构体等等。n算术表达式的形式:表达式1算术运算符表达式2例如:a+b, (x+4)/(y-b),y-sin(x)/21.4.2.2 算术运算的优先级与结合性n算术运算符的优先级规定为:先乘除模,后加减,算术运算符的优先级规定为:先乘除模,后加减,括号最优先。乘、除、模运算符的优先级相同,括号最优先。乘、除、模运算符的优先级相同,并高于加减运算符。括号中的内容优先级最高。并高于加减运算符。括号中的内容优先级最高。 a+b*
39、c; / 乘号的优先级高于加号,故先运算乘号的优先级高于加号,故先运算b*c,所得的结果再与,所得的结果再与a相加相加 (a+b)*(c-d)-6; / 括号的优先级最高,括号的优先级最高,*次之,减号优先级最低故先运次之,减号优先级最低故先运算算(a+b)和和(c-d),/ 然后将二者的结果相乘,最后再与然后将二者的结果相乘,最后再与6相减相减n算术运算的结合性规定为自左至右方向,称为算术运算的结合性规定为自左至右方向,称为“左结合性左结合性”。即当一个运算对象两边的算术运。即当一个运算对象两边的算术运算符优先级相同时,运算对象先与左面的运算符算符优先级相同时,运算对象先与左面的运算符结合。
40、结合。n a+b-c; / b两边是两边是“+”、“-”运算符优先级相同,按左结合性优先执行运算符优先级相同,按左结合性优先执行a+b再减再减C 1.4.2.3 数据类型转换运算n当运算符的两侧的数据类型不同时必须通当运算符的两侧的数据类型不同时必须通过数据类型转换将数据转换成同种类型。过数据类型转换将数据转换成同种类型。 转换的方式有两种:自动类型转换和强制转换的方式有两种:自动类型转换和强制类型转换。类型转换。自动类型转换n由C51编译器编译时自动进行。如图1-4-1所示为自动数据类型转换规则。 charintlongfloatdoubleunsigned signed低 高图1-4-1数
41、据类型转换规则强制类型转换n需要使用强制类型转换运算符,其格式为:(类型名) (表达式);例如:(double)xx / 将xx强制转换成double类型。(int)(a+b) / 将a+b的值强制转换成int类型。n使用强制转换类型运算符后,运算结果被强制转换成规定的类型。例如:unsigned char x,y;unsigned char z;z (unsigned char)(x*y);1.4.3关系运算1.4.3.1关系运算符1. (小于) 2. (大于) 3. (小于或等于) 4. (大于或等于) 5. (等于) 6.! (不等于) n关系运算符同样有着优先级别。前四个具有相同的优先
42、级,后两个也具有相同的优先级,但是前四个的优先级要高于后两个。n关系运算符的结合性为左结合。1.4.3.2 关系表达式关系表达式n关系表达式就是用关系运算符连接起来两关系表达式就是用关系运算符连接起来两个表达式。个表达式。n关系表达式通常是用来判别某个条件是否关系表达式通常是用来判别某个条件是否满足。满足。n要注意的是用关系运算符的运算结果只有要注意的是用关系运算符的运算结果只有0和和1两种,也就是逻辑的真与假,当指定的两种,也就是逻辑的真与假,当指定的条件满足时结果为条件满足时结果为1,不满足时结果为,不满足时结果为0。n关系表达式结构如下:关系表达式结构如下:表达式表达式1关系运算符表达式关系运算符表达式2例如: 1.ab; /若a大于b,则表达式值为1(真)2.b+ca; /若a=3,b=4,c=5, 则表达式值为0(假)3.(ab)c; /若a=3,b=2,c=1, 则表达式值为1(真)。因为ab值为1,等于c值4.c5ab;/若a=3,b=2,c=1, 则表达式值为0(假)。1.4.4逻辑运算关系运算符反映两个表达式之间的大小等于关系,关系运算符反映两个表达式之间的大小等于关系,逻辑运算符则用于求条件式的逻辑值,用逻辑运逻辑运算符则用于求条件式的逻辑值,用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高校食品化工原理化工专业期末萃取分离计算大题模拟试卷
- 2026年注册建筑师考试建筑构造专项训练卷解析
- 2026年卫生职称《医学伦理学》专项训练卷
- 2026年一级建筑师考试《建筑法规》模拟试题集(含答案)
- 2026年省考事业单位招聘试卷公共基础知识冲刺押题
- 人教版数学八年级下册 湖南省株洲市茶陵县 期末考试 含答案
- 2026年城市公共交通公司职员招聘考试模拟试卷
- 2026年教师资格证《幼儿园教育》学科考试模拟试卷
- 2026人教版PEP三年级下册英语期末学业水平检测卷
- 14492学前儿童发展的观察与评价模拟试题
- 江苏水利工程设计概(估)算编制规定2017年修订版
- 污水处理PLC控制系统方案设计指南
- 设施设备维护人员面试题及答案
- 1105 非无菌产品微生物限度检查:2020年版 VS 2025年版对比表
- 医务人员职业暴露试题(附答案)
- 公路施工项目安全风险评估报告范本
- 安静的力量主题班会课件
- 《2025型钢采购合同》
- 全麻术后导尿管刺激征管理
- 以例启思:高中思想政治教学中案例教学法的深度应用与策略探索
- 高等职业学校空中乘务专业 实训教学条件建设标准
评论
0/150
提交评论