51单片机超详细教程(绝对值)ppt课件.ppt

上传人:飞****2 文档编号:33754380 上传时间:2022-08-12 格式:PPT 页数:242 大小:4.44MB
返回 下载 相关 举报
51单片机超详细教程(绝对值)ppt课件.ppt_第1页
第1页 / 共242页
51单片机超详细教程(绝对值)ppt课件.ppt_第2页
第2页 / 共242页
点击查看更多>>
资源描述

《51单片机超详细教程(绝对值)ppt课件.ppt》由会员分享,可在线阅读,更多相关《51单片机超详细教程(绝对值)ppt课件.ppt(242页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、l全国高职高专规划教材全国高职高专规划教材精品与示范系列精品与示范系列单片机应用技术(C语言版)王静霞王静霞 主主 编编 本章内容本章内容p什么是单片机什么是单片机 pMCS-51内部组成及信号引脚内部组成及信号引脚p单片机最小系统电路单片机最小系统电路pMCS-51存储器结构存储器结构第第1 1章章 单片机硬件系统单片机硬件系统什么是单片机什么是单片机 单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Inpu

2、t/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。单片机内部基本结构如图1.7所示。由于它的结构与指令功能都是按照工业控制要求设计的,故又称为微控制器(Micro-Controller Unit,简称MCU)。什么是单片机什么是单片机 C P U 存 储 器定 时 器 / 计 数 器 中 断 系 统P0-P3TxDRxD TINT并行I/O口串行I/O口单片机应用系统单片机应用系统单单片片机机接口接口电路电路及外及外设等设等单片机应用系统由单片机应用系统由硬件硬件和和软件软件组组成成硬件是硬件是应用系统的基础应用系统的基础软件是

3、在硬件的基础上软件是在硬件的基础上对其资源对其资源进行合理调配和使用进行合理调配和使用,从而完成,从而完成应用系统所要求的任务,二者相应用系统所要求的任务,二者相互依赖,缺一不可互依赖,缺一不可单片机种类 单片机硬件结构单片机硬件结构时钟电路CPUROMRAMT0 T1中断系统串行接口并行接口P0 P1 P2 P3TXD RXDINT0 INT1定时计数器中央处理器中央处理器CPU:8位,位,运算和控制运算和控制功能功能内部内部RAM:共共256个个RAM单单元,用户使用元,用户使用前前128个单元,个单元,用于存放可读用于存放可读写数据,后写数据,后128个单元被个单元被专用寄存器占专用寄存

4、器占用。用。内部内部ROM:4KB掩膜掩膜ROM,用于存放程序、用于存放程序、原始数据和表原始数据和表格。格。定时定时/计数器:计数器:两个两个16位的定位的定时时/计数器,实计数器,实现定时或计数现定时或计数功能。功能。并行并行I/O口:口:4个个8位的位的I/O口口P0、P1、P2、P3。串行口:串行口:一个全一个全双工串行口。双工串行口。中断控制系统:中断控制系统:5个中断源(外个中断源(外中断中断2个,定时个,定时/计数中断计数中断2 个,串行中断个,串行中断1个)个)时钟电路:时钟电路:可可产生时钟脉冲产生时钟脉冲序列,允许晶序列,允许晶振频率振频率6MHZ和和12MHZ复位电路80

5、518051单片机的基本组成单片机的基本组成中央处理器中央处理器CPU:8位,运算和控制功能位,运算和控制功能内部内部RAM:共共256个个RAM单元,用户使用前单元,用户使用前128个单元,个单元,用于存放可读写数据,后用于存放可读写数据,后128个单元被专用寄存器占用。个单元被专用寄存器占用。内部内部ROM:4KB掩膜掩膜ROM,用于存放程序、原始数据和表格。,用于存放程序、原始数据和表格。定时定时/计数器:计数器:两个两个16位的定时位的定时/计数器,实现定时或计数功能。计数器,实现定时或计数功能。并行并行I/O口:口:4个个8位的位的I/O口口P0、P1、P2、P3。串行口:串行口:一

6、个全双工串行口。一个全双工串行口。中断控制系统:中断控制系统:5个中断源(外中断个中断源(外中断2个,定时个,定时/计数中断计数中断2个,个, 串行中断串行中断1个)个)时钟电路:时钟电路:可产生时钟脉冲序列,允许晶振频率可产生时钟脉冲序列,允许晶振频率6MHZ和和12MHZVCCVSSXTAL2XTAL1RSTP0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0ALEP3. 0P3.1P3.2 P3.3 P3.4

7、P3.5 P3.6 P3.7EAPSENRXD/TXD/INT0/ INT1/ T0/ T1/WR/ RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051 875189C51时钟电路与复位电路时钟电路与复位电路 (1)时钟振荡电路1XTAL1XTAL2C1C2晶振8051至内部时钟电路时时 序序 关于MCS-51系列单片机的时序概念有4个,可用定时单位来说明,从小到大依次是:节拍、状态、机器周期和指令周期,下面分别加以说明。l1)节拍与状态 把振荡脉冲的周期定义为节拍,用P表示,也就

8、是晶振的振荡频率fosc。l2)状态 振荡脉冲fosc经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示。一个状态包含两个节拍,其前半周期对应的节拍叫P1,后半周期对应的节拍叫P2。l3)机器周期 MCS-51系列单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。l小提示小提示 当振荡脉冲频率为12 MHz时, 一个机器周期为1s;当振荡脉冲频率为6 MHz时,一个机器周期为2 s。(2)复位电路MCS-51V C CVCCRESETVSS22uF1KMCS-51V C CVCCRESETVSS22u

9、F1KRESETR1R220012345678910111213142827262524232221 201918171615EPROM276412345678910111213142827262524232221 201918171615EPROM27641234567891011121314151617181920403938373635343332313029282726252424222112345678910111213142827262524232221 201918171615RAM6264 12345678910111213142827262524232221 20191817

10、1615RAM6264 80318751805189C51256B(字节)4K程序程序存储器存储器内部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序执行的起始单元,在这三个单元存放一条无条件转移指令中断5中断4中断3中断2中断10003H000BH0013H001BH0023H002BH外部中断0定时器0中断外部中断1定时器1中断串行口中断8位位0FFFH0FFEHEA=1 EA=0EA=1 EA=0程序程序存储器资源分布存储器资源分布中断入口地址l在单片机C语言程序设计中,用户无需考虑程序的存放

11、地址,编译程序会在编译过程中按照上述规定,自动安排程序的存放地址。l例如:C语言是从main()函数开始执行的,编译程序会在程序存储器的0000H处自动存放一条转移指令,跳转到main()函数存放的地址;中断函数也会按照中断类型号,自动由编译程序安排存放在程序存储器相应的地址中。因此,读者只需了解程序存储器的结构就可以了。0000HFFFFH(64K)内部外部数据数据存储器存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器0000H H07H07H0808H H0FH0FH1010H H17H17H1818H H1FH1FH0区区R0R0R7R7R0R0R7R7R0R0

12、R7R7R0R0R7R71区区2区区3区区工作寄存器区工作寄存器区可位寻址区可位寻址区20H2FH7F 7807 0030H7FH数据缓冲区数据缓冲区/堆栈区堆栈区内部内部RAMRAM存储器存储器 工作寄存器区选择位RS0、RS1注意注意: : 一个单元地址对应有一个单元地址对应有8 8个位地址个位地址MSBMSBMost Significant Bit Most Significant Bit (最高有效位)(最高有效位)LSB LSB Least Significant Bit Least Significant Bit (最低有效位)(最低有效位)单元地址2FH2EH2DH2CH2BH2

13、AH29H28H27H26H25H24H23H22H21H20H7F7F77776F6F67675F5F57574F4F47473F3F37372F2F27271F1F17170F0F0707 MSB 位地址 LSB7E7E76766E6E66665E5E56564E4E46463E3E36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D45453D3D35352D2D25251D1D15150D0D05057C7C74746C6C64645C5C54544C4C44443C3C34342C2C24241C1C14140C0C0404

14、7B7B73736B6B63635B5B53534B4B43433B3B33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A42423A3A32322A2A22221A1A12120A0A020279797171696961615959515149494141393931312929212119191111090901017878707068686060585850504848404038383030282820201818101008080000RAM位寻址区位地址表离散分布有离散分布有2121个个特殊功能寄存器特殊功能寄存器SFR

15、SFR。 1111个可以进行个可以进行位寻址。位寻址。特别提示:对特别提示:对SFRSFR只能使用直接只能使用直接寻址方式,书写时寻址方式,书写时可使用寄存器符号,可使用寄存器符号,也可用寄存器单元也可用寄存器单元地址。地址。在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,例如:sfr P1=0 x90; /特殊功能寄存器P1的地址是90H,对应P1口的8个I/O引脚在程序中就可以直接使用P1这个特殊功能寄存器了,下面语句是合法的:P1=0 x00; /将P1口的8位I/O口全部清0C语言中,还可以通过关键字sbit来定义特殊功能寄存器中的可

16、寻址位,在程序ex1_1.c中,采用了下面语句定义P1口的第0位:sbit P1_0=P10;通常情况下,这些特殊功能寄存器已经在头文件reg51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。如果没有头文件reg51.h,或者该文件中只定义了部分特殊功能寄存器和位,用户也可以在程序中自行定义。AVR,单片机,C语言,C51, 编程基础,实例,好资料 本章内容本章内容p单片机开发系统及功能单片机开发系统及功能pKeil C51软件的使用软件的使用第第2 2章章 单片机开发系统单片机开发系统单片机开发系统及功能单片机开发系统及功能 单片机开发系统是单片机应用系统设

17、计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。 p在线仿真功能p调试功能 1) 运行控制功能 2) 目标系统状态的读出修改功能p辅助设计功能 1) 程序设计语言 2) 程序编译p程序固化功能KeilKeil C51 C51软件的使用软件的使用 Keil C51启动窗口KeilKeil C51 C51软件的使用软件的使用 建立工程文件KeilKeil C51 C51软件的使用软件的使用 选择目标CPUKeilKeil C51 C51软件的使用软件的使用 图2.17 文本编缉窗口KeilKeil C51 C51软件的使用软件的使用 增加文件到组中KeilKeil C51 C51软

18、件的使用软件的使用 选择文件类型KeilKeil C51 C51软件的使用软件的使用 目标属性KeilKeil C51 C51软件的使用软件的使用 产生执行文件KeilKeil C51 C51软件的使用软件的使用 选择仿真方式KeilKeil C51 C51软件的使用软件的使用 Keil C51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。 本章内容本章内容p单片机开发系统及功能单片机开发系

19、统及功能pKeil C51软件的使用软件的使用第第2 2章章 单片机开发系统单片机开发系统单片机开发系统及功能单片机开发系统及功能 单片机开发系统是单片机应用系统设计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。 p在线仿真功能p调试功能 1) 运行控制功能 2) 目标系统状态的读出修改功能p辅助设计功能 1) 程序设计语言 2) 程序编译p程序固化功能KeilKeil C51 C51软件的使用软件的使用 Keil C51启动窗口KeilKeil C51 C51软件的使用软件的使用 建立工程文件KeilKeil C51 C51软件的使用软件的使用 选择目标CPUKeilKeil

20、 C51 C51软件的使用软件的使用 图2.17 文本编缉窗口KeilKeil C51 C51软件的使用软件的使用 增加文件到组中KeilKeil C51 C51软件的使用软件的使用 选择文件类型KeilKeil C51 C51软件的使用软件的使用 目标属性KeilKeil C51 C51软件的使用软件的使用 产生执行文件KeilKeil C51 C51软件的使用软件的使用 选择仿真方式KeilKeil C51 C51软件的使用软件的使用 Keil C51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还

21、是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。 本章内容本章内容p并行并行I/O口电路结构口电路结构p认识认识C语言语言pC语言的基本语句语言的基本语句pC语言数据与运算语言数据与运算p数组的概念数组的概念第第3 3章章 单片机并行单片机并行I/OI/O口应用口应用并行并行I/OI/O口电路结构口电路结构 MCS-51系列单片机共有四个8位并行I/O口,分别用P0、P1、P2、P3表示。 每个I/O口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。P0P0口的结构口的结构 输出控制电路输出驱动电路P0口逻辑电路 当P0

22、口作为输出口使用时,内部总线将数据送入锁存器,内部的写脉冲加在锁存器时钟端CP上,锁存数据到Q、端。经过MUX,T2反相后正好是内部总线的数据,送到P0口引脚输出。 当P0口作为输入口使用时,应区分读引脚和读端口两种情况,所谓读引脚,就是读芯片引脚的状态,这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。 读端口是指通过上面的缓冲器读锁存器Q端的状态。读端口是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如下面的C51语句: P0=P0&0 xf0;/将P0口的低4位引脚清0输出P0口的结构口的结构 除了I/O功能以外,在进行单片机

23、系统扩展时,P0口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。 当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。P0口的结构口的结构 P1P1口的结构口的结构 P1口逻辑电路pP1口是准双向口,只能作为通用I/O口使用。pP1口作为输出口使用时,无需再外接上拉电阻。pP1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的

24、锁存器写入“1”,使输出级的FET截止。P1口的结构口的结构 P2P2口的结构口的结构 P2口逻辑电路pP2口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。pP2口作为通用I/O口的输出口使用时,与P1口一样无需再外接上拉电阻。pP2口作为通用I/O口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”。P2口的结构口的结构 P3P3口的结构口的结构 P3口逻辑电路pP3口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。pP3

25、口作为通用I/O的输出口使用时,不用外接上拉电阻。P3口的结构口的结构 认识认识C C语言语言 C语言程序以函数形式组织程序结构,C程序中的函数与其他语言中所描述的“子程序”或“过程”的概念是一样的。 C程序基本结构认识认识C C语言语言p一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。pC语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。pC语言程序使用“;”作为语句的结束符,一条语句可以

26、多行书写,也可以一行书写多条语句。认识认识C C语言语言p结构化语言p丰富的数据类型p便于维护管理p与汇编语言相比,C语言的优点如下:不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;结构清晰,程序可读性强;编译器提供了很多标准库函数,具有较强的数据处理能力。C C语言的基本语句语言的基本语句语言程序的执行部分由语句组成。C语言提供了丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。 表达式语句和复合语句表达式语

27、句和复合语句 p表达式语句是最基本的C语言语句。表达式语句由表达式加上分号“;”组成,其一般形式如下: 表达式;表达式;执行表达式语句就是计算表达式的值。p在 C 语言中有一个特殊的表达式语句,称为空语句。空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。 表达式语句和复合语句表达式语句和复合语句 p把多个语句用大括号括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。p复合语句在程序运行时,中

28、的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。 选择语句选择语句 基本if语句的格式如下:if (表达式) 语句组; if语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组”,否则跳过该语句组,继续执行下面的语句。 选择语句选择语句 pif语句中的“表达式”通常为逻辑表达式或关系表达式,也可以是任何其他的表达式或类型数据,只要表达式的值非0即为“真”。以下语句都是合法的: if(3) if(x=8) if(P3_0)p在if语句中,“表达式”必须用括号括起来。p在if语句中,花括号“ ”里面的语句组如果只有一条语句,可以省略花括号。如“if (P3_0=0

29、) P1_0=0;”语句,但是为了提高程序的可读性和防止程序书写错误,建议读者在任何情况下,都加上花括号。选择语句选择语句 if-else语句的一般格式如下:if (表达式) 语句组1; else 语句组2; if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组1”,否则执行“语句组2” 选择语句选择语句 if-else-if语句是由 if else 语句组成的嵌套,用来实现多个条件分支的选择,其一般格式如下:if (表达式1) 语句组1; else if (表达式2) 语句组2; else if (表达式n) 语句组n; else 语句组n+1; 选择语句选择语句 选

30、择语句选择语句 多分支选择的switch语句, 其一般形式如下: switch(表达式) case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; case常量表达式n: 语句组n;break; default : 语句组n+1; 该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。whilewhile

31、语句用来实现语句用来实现“当型当型”循环,循环,执行过程:首先判断表达式,执行过程:首先判断表达式, 当表达式的值为真(非当表达式的值为真(非0 0)时,)时,反复执行循环体。为假(反复执行循环体。为假(0 0)时)时执行循环体外面的语句。执行循环体外面的语句。循环体循环体循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组while执行过程执行过程格式:格式:while(循环继续的条件表达式)(循环继续的条件表达式) 语句组语句组; 花括号不花括号不能丢掉!能丢掉!请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?ma

32、in( )main( ) intint i,sumi,sum=0;=0; while(iwhile(i=10)=10) sum= sum=sum+isum+i; ; i+; i+; 循环语句循环语句 do-while语句用来实现语句用来实现“直到型直到型”循环循环执行过程:先无条件执行一次循环体,执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值然后判断条件表达式,当表达式的值为真(非为真(非0)时,返回执行循环体直)时,返回执行循环体直到条件表达式为假(到条件表达式为假(0)为止。)为止。绝对不能少分号!绝对不能少分号!循环体循环体格式:格式:dodo 循环体语句组;循环体语

33、句组; while( while(循环继续条件循环继续条件) );花括号不花括号不能丢掉!能丢掉!循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main( )main( ) intint i,sumi,sum=0;=0; do do sum= sum=sum+isum+i; ; i+; i+; while(iwhile(i=100);=100); 循环语句循环语句 总循环次数已确定总循环次数已确定的情况下,可采用的情况下,可采用forfor语句形式为:语句形式为:f

34、orfor语句的一般形式:语句的一般形式: for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增循环变量增值值 ) ) 循环体语句组;循环体语句组; 分隔符分隔符为分号为分号请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main( )main( ) intint i,yi,y=0;=0; for(ifor(i=1;i=10;i+)=1;i=10;i+) y= y=y+iy+i; ; 循环语句循环语句 循环继续条件循环继续条件for的下一条语句的下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组循环变量赋初值循环变量赋初值循环变量增值循

35、环变量增值forfor语句循环执行过程语句循环执行过程只求解一次只求解一次要执行若干次,要执行若干次,具体次数由具体次数由“循循环继续条件环继续条件”决决定定for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增值循环变量增值 ) ) 循环体语句组;循环体语句组; 分隔符分隔符为分号为分号C语言数据与运算语言数据与运算 l1. 赋值运算符赋值运算符l2. 算术运算符和算术表达式算术运算符和算术表达式 l3. 关系运算符和关系表达关系运算符和关系表达l4. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式赋值运算符赋值运算符l 赋值语句的作用是把某个常量或变量或赋值语句的

36、作用是把某个常量或变量或表达式的值赋值给另一个变量。表达式的值赋值给另一个变量。l符号为符号为=。这里并不是等于的意思,。这里并不是等于的意思,只是赋值,等于用只是赋值,等于用=表示。表示。l赋值语句左边必须是赋值语句左边必须是变量或寄存器变量或寄存器,且,且必须必须先定义先定义。l常量不能出现左边。常量不能出现左边。赋值运算符和赋值表达式赋值运算符和赋值表达式简单的赋值运算符:简单的赋值运算符:复合的赋值运算符复合的赋值运算符=+ =、-=、*=、%=、/= i + = 2 等价于等价于 i = i + 2 a * = b + 5 等价于等价于 a = a * (b + 5) x% = 3

37、等价于等价于 x = x%3算术运算符算术运算符(加法运算)(加法运算) (减法运算)(减法运算) * * (乘法运算符)(乘法运算符) (除法运算符)(除法运算符)% % (求余运算符,或称模运算符)如:(求余运算符,或称模运算符)如: 4 % 24 % 20 0+ (+ (变量自加变量自加1)1)- - (变量自减(变量自减1 1) 注注 意意p两个两个整数整数相除结果为相除结果为整数整数,如,如8/5的结果为的结果为1,舍去小数部分。,舍去小数部分。如果参加运算的两个数中有一个数为如果参加运算的两个数中有一个数为实数实数,则结果是,则结果是实型实型。p求余运算要求求余运算要求%两侧都是两

38、侧都是整型数据整型数据。自增、自减运算实战演练:请说明程序运行完后实战演练:请说明程序运行完后x,y,z,m,nx,y,z,m,n的值分别是多的值分别是多少?少?main()main() intint x=6,y,z,m,n; x=6,y,z,m,n;y=+x;y=+x;z=x-; z=x-; m= m=y/zy/z; ; n= n=y%zy%z; ; 自增运算符(自增运算符(+)和自减运算符()和自减运算符(-):):(1 1)前置运算前置运算变量、变量变量、变量 即先增减、后运算。即先增减、后运算。(2 2)后置运算后置运算变量、变量变量、变量 即先运算、后增减。即先运算、后增减。关系运算

39、符关系运算符关系运算符 优先级 = = !=低低高高关系表达式关系表达式p 用用关系运算符关系运算符将两个表达式(可以是算术表达将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为连接起来的式子,称为关系表达式关系表达式。p关系表达式的值为关系表达式的值为逻辑值逻辑值“真真”或或“假假”,以,以1代表代表“真真”,以,以0代表代表“假假”。 例如:例如: (1)关系表达式关系表达式“8=4”的值为的值为 ,表达式的,表达式的值为值为 。 (2) 关系表达式关系表达式“50”的值为的值为 ,表达式的,表达式的值为值为 。

40、逻辑运算符及其优先级逻辑运算符及其优先级 逻辑运算符逻辑运算符 优先级优先级 ! (逻辑非逻辑非) & (逻辑与逻辑与) | (逻辑或逻辑或) 注意:逻辑运算符与位操作运算符的区别。注意:逻辑运算符与位操作运算符的区别。 逻辑表达式逻辑表达式p用逻辑运算符将用逻辑运算符将一个或多个表达式一个或多个表达式连接起来,连接起来,进行逻辑运算的式子。进行逻辑运算的式子。p逻辑量的真判断逻辑量的真判断非非0p逻辑量的假判断逻辑量的假判断0 若若a=1,b=2,c=3,x=4,y=3,写出下各个表达式的值:,写出下各个表达式的值:(1)a+bc&b=c(2)!ab&b!=c|x+y=3(3)!(x=a)&

41、(y=b)&0000运算类型运算类型运算符运算符优先级优先级结合性结合性括号运算符括号运算符()()1 1从左至右从左至右逻辑非和按位取反逻辑非和按位取反! 2 2从右至左从右至左算术运算算术运算* * / % / %3 3从左至右从左至右+ -+ -4 4从左至右从左至右左移、右移运算左移、右移运算5 5从左至右从左至右关系运算关系运算 = =6 6从左至右从左至右= != !=7 7从左至右从左至右位运算位运算& &8 8从左至右从左至右 9 9从左至右从左至右| |1010从左至右从左至右逻辑与逻辑与&1111从左至右从左至右逻辑或逻辑或|1212从左至右从左至右赋值运算与复合赋赋值运算

42、与复合赋值运算值运算 = = 、* *= =、/=/=、&=&=、=、|=|=、=1414从右至左从右至左例如:例如:(1) xy& mn 等效于等效于 (xy) & (mc 等效于等效于(!a) & (bc)位运算位运算与操作与操作按位与操作符按位与操作符 :&p格式:格式:x&yp规则:对应位均为规则:对应位均为1时才为时才为1,否则为,否则为0 例如,例如, i=i&0 x0f; 等同于等同于 i&=0 x0f;p主要用途:取主要用途:取(或保留或保留)1个数的某个数的某(些些)位,其余各位位,其余各位置置0。位运算位运算或操作或操作按位或操作符按位或操作符: |p格式:格式:x|yp规

43、则:对应位均为规则:对应位均为0时才为时才为0,否则为,否则为1 例如,例如, i=i|0 x0f; 等同于等同于 i|=0 x0f;p主要用途:将主要用途:将1个数的某个数的某(些些)位置位置1,其余各位不变,其余各位不变位运算位运算异或操作异或操作按位异或操作符按位异或操作符:p格式:格式:xyp规则:对应位相同时为规则:对应位相同时为0,不同时为,不同时为1 例如,例如, i=i0 x0f; 等同于等同于 i=0 x0f;p主要用途:使主要用途:使1个数的某个数的某(些些)位翻转位翻转(即原来为即原来为1的位的位变为变为0,为,为0的变为的变为1),其余各位不变。,其余各位不变。位运算位

44、运算按位取反操作按位取反操作按位取反操作符按位取反操作符:p格式:格式:xp规则:各位翻转,即原来为规则:各位翻转,即原来为1的位变成的位变成0,原来为,原来为0的位变成的位变成1 例如,例如, i=i;p主要用途:间接地构造一个数,以增强程序的可移主要用途:间接地构造一个数,以增强程序的可移植性。植性。l左移运算符左移运算符“”的功能,的功能,是把是把“”左边的操作数左边的操作数的各二进制位全部左移若干位,移动的位数由的各二进制位全部左移若干位,移动的位数由“”右边的常数指定,右边的常数指定,高位丢弃,低位补高位丢弃,低位补0。例如:例如:“a”的功能,的功能,是把是把“”左边的操作数左边的

45、操作数的各二进制位全部右移若干位,移动的位数由的各二进制位全部右移若干位,移动的位数由“”右边的常数指定。进行右移运算时,右边的常数指定。进行右移运算时,如果是无符号数,如果是无符号数,则总是在其左端补则总是在其左端补“0”位运算位运算练习练习1 .若x = 10, 则!X的值为真或假?2. 若a = 3, b = 2, 则if(a&b)的值为真或假?3. 5 & 0 |8的值为?4. 5 3 & 4 | 8 4 的结果为?分隔符分隔符为分号为分号数组的概念数组的概念 l数组属于常用的数据类型,数组中的元素有固定数组属于常用的数据类型,数组中的元素有固定数目和相同类型,数组元素的数据类型就是该

46、数数目和相同类型,数组元素的数据类型就是该数组的基本类型。例如,整型数据的有序集合称为组的基本类型。例如,整型数据的有序集合称为整型数组,字符型数据的有序集合称为字符型数整型数组,字符型数据的有序集合称为字符型数组。组。l数组还分为一维、二维、三维和多维数组等,常数组还分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。用的是一维、二维和字符数组。 数组的基本特点构造类形数据构造类形数据:由基本类型数据按照一定规:由基本类型数据按照一定规则组成。则组成。数组:数组:是有序数据的集合;数组中的每一个是有序数据的集合;数组中的每一个元素都属于同一个数据类型,用一个统一元素都属于同一个数

47、据类型,用一个统一的数组名和下标来唯一地确定数组中的元的数组名和下标来唯一地确定数组中的元素。素。应用场合应用场合: :需要处理的数据为数量已知的若干需要处理的数据为数量已知的若干相同类型的数据时。相同类型的数据时。 注意:先定义,后使用。注意:先定义,后使用。一维数组的定义和引用一维数组的定义:一维数组的定义: 一般格式:类型标识符一般格式:类型标识符 数组名数组名 常量表达式常量表达式 ; intint arrayarray10;10; unsigned charunsigned char numnum7; 7; 说明:说明:1.1.数组名数组名见名知意;数组名中存放的是一个地址常见名知意

48、;数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。素,按其下标的顺序占用一段连续的存储单元。2.2.方括弧而非圆括弧;方括弧而非圆括弧;3.3.常量表达式:可以是常量或符号常量;表示数组元素常量表达式:可以是常量或符号常量;表示数组元素的个数(也称数组长度)。不允许对数组大小作动态的个数(也称数组长度)。不允许对数组大小作动态定义。定义。4.4.数组元素下标从数组元素下标从0 0开始开始。array0,array1,array9;遵循标识符遵循标识符命名规则命名规则数组元素的表达形式

49、:数组元素的表达形式: 数组名数组名 下标表达式下标表达式 Array4 = 100; array8 = 34; Array4 = 100; array8 = 34; array10 = 56;array10 = 56;注意:数组下标不能越界!注意:数组下标不能越界!v一个数组元素具有和相同类型单个变量一样的属性,一个数组元素具有和相同类型单个变量一样的属性,可以对它赋值和参与各种运算。可以对它赋值和参与各种运算。一维数组的引用一般格式:一般格式: 数据类型数据类型 数组名数组名 常量表达式常量表达式 初值表初值表 1.1.定义时赋初值;定义时赋初值;intint score5=1,2,3,4

50、,5; score5=1,2,3,4,5;2.2.给一部分元素赋值;给一部分元素赋值;intint score5=1,2; score5=1,2;3.3.使所有元素为使所有元素为0 0;intint score5=0; score5=0;4.4.给全部数组元素赋初值时,可以不指定数组长度;给全部数组元素赋初值时,可以不指定数组长度; intint score=1,2,3,4,5; score=1,2,3,4,5;一维数组的初始化 本章内容本章内容p定时定时/计数器计数器 pC语言的函数语言的函数 p中断系统中断系统第第4 4章章 定时与中断系统定时与中断系统定时定时/ /计数器计数器 8051

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁