51单片机超详细教程PPT(超赞).ppt
l全国高职高专规划教材全国高职高专规划教材精品与示范系列精品与示范系列单片机应用技术(C语言版)王静霞王静霞 主主 编编 本章内容本章内容p什么是单片机什么是单片机 pMCS-51内部组成及信号引脚内部组成及信号引脚p单片机最小系统电路单片机最小系统电路pMCS-51存储器结构存储器结构第第1 1章章 单片机硬件系统单片机硬件系统什么是单片机什么是单片机 单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。单片机内部基本结构如图1.7所示。由于它的结构与指令功能都是按照工业控制要求设计的,故又称为微控制器(Micro-Controller Unit,简称MCU)。什么是单片机什么是单片机 C P U 存 储 器定 时 器/计 数 器 中 断 系 统P0-P3TxDRxD TINT并行I/O口串行I/O口单片机应用系统 单片机应用系统单片机应用系统单单片片机机接口接口电路电路及外及外设等设等软软软软件件件件硬件硬件硬件硬件单单片片机机应应用用系系统统由由硬硬件件和和软软件件组组成成硬件是硬件是应用系统的基础应用系统的基础软件是在硬件的基础上软件是在硬件的基础上对其资源对其资源进行合理调配和使用进行合理调配和使用,从而完成,从而完成应用系统所要求的任务,二者相应用系统所要求的任务,二者相互依赖,缺一不可互依赖,缺一不可单片机种类 目前目前8 8位位单片机仍是单片机的单片机仍是单片机的主流主流机型;机型;生产厂商:生产厂商:单片机的发展经历了由单片机的发展经历了由单片机的发展经历了由单片机的发展经历了由4 4 4 4位位位位机到机到机到机到8 8 8 8位位位位机机机机,再到再到再到再到16161616位位位位机的发展过程机的发展过程机的发展过程机的发展过程美国微芯片公司美国微芯片公司美国微芯片公司美国微芯片公司:PIC16C:PIC16C:PIC16C:PIC16C系列、系列、系列、系列、PIC17CPIC17CPIC17CPIC17C系列、系列、系列、系列、PIC1400PIC1400PIC1400PIC1400系列,系列,系列,系列,美国英特尔公司的美国英特尔公司的美国英特尔公司的美国英特尔公司的MCS-48MCS-48MCS-48MCS-48和和和和MCS-51MCS-51MCS-51MCS-51系列,系列,系列,系列,美国摩托罗拉公司的美国摩托罗拉公司的美国摩托罗拉公司的美国摩托罗拉公司的MC68HC05MC68HC05MC68HC05MC68HC05系列和系列和系列和系列和MC68HC11MC68HC11MC68HC11MC68HC11系列,系列,系列,系列,美国齐洛格公司的美国齐洛格公司的美国齐洛格公司的美国齐洛格公司的Z8Z8Z8Z8系列,系列,系列,系列,日本电气公司的日本电气公司的日本电气公司的日本电气公司的PD78PD78PD78PD78系列,系列,系列,系列,美国莫斯特克公司和仙童公司合作生产的美国莫斯特克公司和仙童公司合作生产的美国莫斯特克公司和仙童公司合作生产的美国莫斯特克公司和仙童公司合作生产的F8F8F8F8(3870387038703870)系列等。)系列等。)系列等。)系列等。单片机硬件结构单片机硬件结构时钟电路CPUROMRAMT0T1中断系统串行接口并行接口P0P1P2P3TXDRXDINT0INT1定时计数器中央处理器中央处理器CPU:8位,位,运算和控制运算和控制功能功能内部内部RAM:共共256个个RAM单单元,用户使用元,用户使用前前128个单元,个单元,用于存放可读用于存放可读写数据,后写数据,后128个单元被个单元被专用寄存器占专用寄存器占用。用。内部内部ROM:4KB掩膜掩膜ROM,用于存放程,用于存放程序、原始数据序、原始数据和表格。和表格。定时定时/计数器:计数器:两个两个16位的定位的定时时/计数器,实计数器,实现定时或计数现定时或计数功能。功能。并行并行I/O口:口:4个个8位的位的I/O口口P0、P1、P2、P3。串行口:串行口:一个全一个全双工串行口。双工串行口。中断控制系统:中断控制系统:5个中断源(外个中断源(外中断中断2个,定时个,定时/计数中断计数中断2 个,串行中断个,串行中断1个)个)时钟电路:时钟电路:可可产生时钟脉冲产生时钟脉冲序列,允许晶序列,允许晶振频率振频率6MHZ和和12MHZ复位电路80518051单片机的基本组成单片机的基本组成中央处理器中央处理器CPU:8位,运算和控制功能位,运算和控制功能内部内部RAM:共共256个个RAM单元,用户使用前单元,用户使用前128个单元,个单元,用于存放可读写数据,后用于存放可读写数据,后128个单元被专用寄存器占用。个单元被专用寄存器占用。内部内部ROM:4KB掩膜掩膜ROM,用于存放程序、原始数据和表格。,用于存放程序、原始数据和表格。定时定时/计数器:计数器:两个两个16位的定时位的定时/计数器,实现定时或计数功能。计数器,实现定时或计数功能。并行并行I/O口:口:4个个8位的位的I/O口口P0、P1、P2、P3。串行口:串行口:一个全双工串行口。一个全双工串行口。中断控制系统:中断控制系统:5个中断源(外中断个中断源(外中断2个,定时个,定时/计数中断计数中断2个,个,串行中断串行中断1个)个)时钟电路:时钟电路:可产生时钟脉冲序列,允许晶振频率可产生时钟脉冲序列,允许晶振频率6MHZ和和12MHZMCS-51单片机信号引脚简介 P3P3口线的第二功能口线的第二功能口线的第二功能口线的第二功能VCCVSSXTAL2XTAL1RSTP0.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 P3.5 P3.6 P3.72 2、振荡电路:、振荡电路:、振荡电路:、振荡电路:XTAL1XTAL1、XTAL2XTAL23 3、复位引脚:、复位引脚:、复位引脚:、复位引脚:RSTRST4 4、并行口:、并行口:、并行口:、并行口:P0P0、P1P1、P2P2、P3P37 7、ALEALE:地址锁存控制信号:地址锁存控制信号:地址锁存控制信号:地址锁存控制信号1 1、电源线:、电源线:、电源线:、电源线:VCC(+5V)VCC(+5V)、VSS(VSS(地地地地)EAPSEN5 5、EAEA:访问程序存储控制信号:访问程序存储控制信号:访问程序存储控制信号:访问程序存储控制信号6 6、PSENPSEN:外部:外部:外部:外部ROMROM读选通信号读选通信号读选通信号读选通信号RXD/TXD/INT0/INT1/T0/T1/WR/RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051 875189C51时钟电路与复位电路时钟电路与复位电路(1)时钟振荡电路时时 序序 关于MCS-51系列单片机的时序概念有4个,可用定时单位来说明,从小到大依次是:节拍、状态、机器周期和指令周期,下面分别加以说明。l1)节拍与状态 把振荡脉冲的周期定义为节拍,用P表示,也就是晶振的振荡频率fosc。l2)状态 振荡脉冲fosc经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示。一个状态包含两个节拍,其前半周期对应的节拍叫P1,后半周期对应的节拍叫P2。l3)机器周期 MCS-51系列单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。l小提示小提示 当振荡脉冲频率为12 MHz时,一个机器周期为1s;当振荡脉冲频率为6 MHz时,一个机器周期为2 s。(2)复位电路单片机复位条件单片机复位条件单片机复位条件单片机复位条件:必须使必须使必须使必须使RSTRST引脚持续引脚持续引脚持续引脚持续2 2微秒微秒微秒微秒高电平高电平高电平高电平(外部时钟外部时钟外部时钟外部时钟12MHz)12MHz)12345678910111213142827262524232221 201918171615EPROM276412345678910111213142827262524232221 201918171615EPROM27641234567891011121314151617181920403938373635343332313029282726252424222112345678910111213142827262524232221 201918171615RAM6264 12345678910111213142827262524232221 201918171615RAM6264 存储器80318751805189C51片内片内片内片内RAMRAM片内片内片内片内ROMROM256B(字节)4K(1)(1)程序存储器程序存储器程序程序存储器存储器内部外部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语言程序设计中,用户无需考虑程序的存放地址,编译程序会在编译过程中按照上述规定,自动安排程序的存放地址。l例如:C语言是从main()函数开始执行的,编译程序会在程序存储器的0000H处自动存放一条转移指令,跳转到main()函数存放的地址;中断函数也会按照中断类型号,自动由编译程序安排存放在程序存储器相应的地址中。因此,读者只需了解程序存储器的结构就可以了。0000HFFFFH(64K)内部外部(2)(2)数据存储器数据存储器数据数据存储器存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器00H00H07H07H08H08H0FH0FH10H10H17H17H18H18H1FH1FH0区区R0R0R7R7R0R0R7R7R0R0R7R7R0R0R7R71区区2区区3区区工作寄存器区工作寄存器区可位寻址区可位寻址区20H2FH7F 7807 0030H7FH数据缓冲区数据缓冲区/堆栈区堆栈区内部内部RAMRAM存储器存储器1 11 1第第第第 3 3 区区区区18H1FH18H1FH0 10 1第第第第 1 1 区区区区08H0FH08H0FHRS1 RS0RS1 RS0寄存器区寄存器区寄存器区寄存器区片内片内片内片内RAMRAM地址地址地址地址0 00 0第第第第 0 0 区区区区00H07H00H07H 1 0 1 0第第第第 2 2 区区区区10H17H10H17H工作寄存器区选择位RS0、RS1注意注意:一个单元地址对应有一个单元地址对应有8 8个位地址个位地址MSBMSBMost Significant Bit Most Significant Bit (最高有效位)(最高有效位)LSB LSB Least Significant Bit Least Significant Bit(最低有效位)(最低有效位)单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F7F77776F6F67675F5F57574F4F47473F3F37372F2F27271F1F17170F0F0707MSB 位地址 LSB7E7E76766E6E66665E5E56564E4E46463E3E36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D45453D3D35352D2D25251D1D15150D0D05057C7C74746C6C64645C5C54544C4C44443C3C34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B43433B3B33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A42423A3A32322A2A22221A1A12120A0A020279797171696961615959515149494141393931312929212119191111090901017878707068686060585850504848404038383030282820201818101008080000RAM位寻址区位地址表高高128128个单元个单元离散分布有离散分布有2121个个特殊功能寄存器特殊功能寄存器SFRSFR。1111个可以进行个可以进行位寻址。位寻址。特别提示:对特别提示:对SFRSFR只能使用直接只能使用直接寻址方式,书写时寻址方式,书写时可使用寄存器符号,可使用寄存器符号,也可用寄存器单元也可用寄存器单元地址。地址。在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,例如:sfr P1=0 x90;/特殊功能寄存器P1的地址是90H,对应P1口的8个I/O引脚在程序中就可以直接使用P1这个特殊功能寄存器了,下面语句是合法的:P1=0 x00;/将P1口的8位I/O口全部清0C语言中,还可以通过关键字sbit来定义特殊功能寄存器中的可寻址位,在程序ex1_1.c中,采用了下面语句定义P1口的第0位:sbit P1_0=P10;通常情况下,这些特殊功能寄存器已经在头文件reg51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。如果没有头文件reg51.h,或者该文件中只定义了部分特殊功能寄存器和位,用户也可以在程序中自行定义。AVR,单片机,C语言,C51,编程基础,实例,好资料AVR,单片机,C语言,C51,编程基础,实例,好资料 本章内容本章内容p单片机开发系统及功能单片机开发系统及功能pKeil C51软件的使用软件的使用第第2 2章章 单片机开发系统单片机开发系统单片机开发系统及功能单片机开发系统及功能 单片机开发系统是单片机应用系统设计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。p在线仿真功能p调试功能 1)运行控制功能 2)目标系统状态的读出修改功能p辅助设计功能 1)程序设计语言 2)程序编译p程序固化功能Keil C51Keil C51软件的使用软件的使用 KeilC51启动窗口Keil C51Keil C51软件的使用软件的使用 建立工程文件Keil C51Keil C51软件的使用软件的使用 选择目标CPUKeil C51Keil C51软件的使用软件的使用 图2.17文本编缉窗口Keil C51Keil C51软件的使用软件的使用 增加文件到组中Keil C51Keil C51软件的使用软件的使用 选择文件类型Keil C51Keil C51软件的使用软件的使用 目标属性Keil C51Keil C51软件的使用软件的使用 产生执行文件Keil C51Keil C51软件的使用软件的使用 选择仿真方式Keil C51Keil C51软件的使用软件的使用 Keil C51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。本章内容本章内容p单片机开发系统及功能单片机开发系统及功能pKeil C51软件的使用软件的使用第第2 2章章 单片机开发系统单片机开发系统单片机开发系统及功能单片机开发系统及功能 单片机开发系统是单片机应用系统设计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。p在线仿真功能p调试功能 1)运行控制功能 2)目标系统状态的读出修改功能p辅助设计功能 1)程序设计语言 2)程序编译p程序固化功能Keil C51Keil C51软件的使用软件的使用 KeilC51启动窗口Keil C51Keil C51软件的使用软件的使用 建立工程文件Keil C51Keil C51软件的使用软件的使用 选择目标CPUKeil C51Keil C51软件的使用软件的使用 图2.17文本编缉窗口Keil C51Keil C51软件的使用软件的使用 增加文件到组中Keil C51Keil C51软件的使用软件的使用 选择文件类型Keil C51Keil C51软件的使用软件的使用 目标属性Keil C51Keil C51软件的使用软件的使用 产生执行文件Keil C51Keil C51软件的使用软件的使用 选择仿真方式Keil C51Keil C51软件的使用软件的使用 Keil C51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。本章内容本章内容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口作为输出口使用时,内部总线将数据送入锁存器,内部的写脉冲加在锁存器时钟端CP上,锁存数据到Q、端。经过MUX,T2反相后正好是内部总线的数据,送到P0口引脚输出。当P0口作为输入口使用时,应区分读引脚和读端口两种情况,所谓读引脚,就是读芯片引脚的状态,这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。读端口是指通过上面的缓冲器读锁存器Q端的状态。读端口是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如下面的C51语句:P0=P0&0 xf0;/将P0口的低4位引脚清0输出P0口的结构口的结构 除了I/O功能以外,在进行单片机系统扩展时,P0口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。P0口的结构口的结构 P1P1口的结构口的结构 P1口逻辑电路pP1口是准双向口,只能作为通用I/O口使用。pP1口作为输出口使用时,无需再外接上拉电阻。pP1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“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口作为通用I/O的输出口使用时,不用外接上拉电阻。P3口的结构口的结构 认识认识C C语言语言 C语言程序以函数形式组织程序结构,C程序中的函数与其他语言中所描述的“子程序”或“过程”的概念是一样的。C程序基本结构认识认识C C语言语言p一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。pC语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。pC语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。认识认识C C语言语言p结构化语言p丰富的数据类型p便于维护管理p与汇编语言相比,C语言的优点如下:不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;结构清晰,程序可读性强;编译器提供了很多标准库函数,具有较强的数据处理能力。C C语言的基本语句语言的基本语句语言程序的执行部分由语句组成。C语言提供了丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。表达式语句和复合语句表达式语句和复合语句 p表达式语句是最基本的C语言语句。表达式语句由表达式加上分号“;”组成,其一般形式如下:表达式;表达式;执行表达式语句就是计算表达式的值。p在 C 语言中有一个特殊的表达式语句,称为空语句。空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。表达式语句和复合语句表达式语句和复合语句 p把多个语句用大括号括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。p复合语句在程序运行时,中的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。选择语句选择语句 基本if语句的格式如下:if(表达式)语句组;if语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组”,否则跳过该语句组,继续执行下面的语句。选择语句选择语句 pif语句中的“表达式”通常为逻辑表达式或关系表达式,也可以是任何其他的表达式或类型数据,只要表达式的值非0即为“真”。以下语句都是合法的:if(3)if(x=8)if(P3_0)p在if语句中,“表达式”必须用括号括起来。p在if语句中,花括号“”里面的语句组如果只有一条语句,可以省略花括号。如“if(P3_0=0)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;选择语句选择语句 选择语句选择语句 多分支选择的switch语句,其一般形式如下:switch(表达式)case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;case常量表达式n:语句组n;break;default :语句组n+1;该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。whilewhile语句用来实现语句用来实现“当型当型”循环,循环,执行过程:首先判断表达式,执行过程:首先判断表达式,当表达式的值为真(非当表达式的值为真(非0 0)时,)时,反复执行循环体。为假(反复执行循环体。为假(0 0)时)时执行循环体外面的语句。执行循环体外面的语句。循环体循环体循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组while执行过程执行过程格式:格式:while(循环继续的条件表达式)(循环继续的条件表达式)语句组语句组;花括号不花括号不能丢掉!能丢掉!请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main()main()int i,sum=0;int i,sum=0;while(i=10)while(i=10)sum=sum+i;sum=sum+i;i+;i+;循环语句循环语句 do-while语句用来实现语句用来实现“直到型直到型”循环循环执行过程:先无条件执行一次循环体,执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值然后判断条件表达式,当表达式的值为真(非为真(非0)时,返回执行循环体直)时,返回执行循环体直到条件表达式为假(到条件表达式为假(0)为止。)为止。绝对不能少分号!绝对不能少分号!循环体循环体格式:格式:dodo 循环体语句组;循环体语句组;while(while(循环继续条件循环继续条件);花括号不花括号不能丢掉!能丢掉!循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main()main()int i,sum=0;int i,sum=0;do do sum=sum+i;sum=sum+i;i+;i+;while(i=100);while(i=100);循环语句循环语句 总循环次数已确定总循环次数已确定的情况下,可采用的情况下,可采用forfor语句形式为:语句形式为:forfor语句的一般形式:语句的一般形式:for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增循环变量增值值 )循环体语句组;循环体语句组;分隔符分隔符为分号为分号请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main()main()int i,y=0;int i,y=0;for(i=1;i=10;i+)for(i=1;i=10;i+)y=y+i;y=y+i;循环语句循环语句 循环继续条件循环继续条件for的下一条语句的下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组循环变量赋初值循环变量赋初值循环变量增值循环变量增值forfor语句循环执行过程语句循环执行过程只求解一次只求解一次要执行若干次,要执行若干次,具体次数由具体次数由“循循环继续条件环继续条件”决决定定forfor语句不仅可用于语句不仅可用于语句不仅可用于语句不仅可用于循环次数已经确定循环次数已经确定循环次数已经确定循环次数已经确定的情况,也可用于的情况,也可用于的情况,也可用于的情况,也可用于循环次数虽不确定,循环次数虽不确定,循环次数虽不确定,循环次数虽不确定,但给出了循环继续但给出了循环继续但给出了循环继续但给出了循环继续条件的情况,它完条件的情况,它完条件的情况,它完条件的情况,它完全可以代替全可以代替全可以代替全可以代替whilewhile语语语语句和句和句和句和do-whiledo-while语句语句语句语句。for(for(循环变量赋初值循环变量赋初值;循环继续条件循环继续条件;循环变量增值循环变量增值 )循环体语句组;循环体语句组;分隔符分隔符为分号为分号C语言数据与运算语言数据与运算 l1.赋值运算符赋值运算符l2.算术运算符和算术表达式算术运算符和算术表达式 l3.关系运算符和关系表达关系运算符和关系表达l4.逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式赋值运算符赋值运算符l 赋值语句的作用是把某个常量或变量或赋值语句的作用是把某个常量或变量或表达式的值赋值给另一个变量。表达式的值赋值给另一个变量。l符号为符号为=。这里并不是等于的意思,。这里并不是等于的意思,只是赋值,等于用只是赋值,等于用=表示。表示。l赋值语句左边必须是赋值语句左边必须是变量或寄存器变量或寄存器,且,且必须必须先定义先定义。l常量不能出现左边。常量不能出现左边。赋值运算符和赋值表达式赋值运算符和赋值表达式简单的赋值运算符:简单的赋值运算符:复合的赋值运算符复合的赋值运算符=+=、-=、*=、%=、/=i+=2 等价于等价于 i=i+2 a*=b+5 等价于等价于 a=a*(b+5)x%=3 等价于等价于 x=x%3算术运算符算术运算符(加法运算)(加法运算)(减法运算)(减法运算)*(乘法运算符)(乘法运算符)(除法运算符)(除法运算符)%(求余运算符,或称模运算符)如:(求余运算符,或称模运算符)如:4%24%20 0+(+(变量自加变量自加1)1)-(变量自减(变量自减1 1)注注 意意p两个两个整数整数相除结果为相除结果为整数整数,如,如8/5的结果为的结果为1,舍去小数部分。,舍去小数部分。如果参加运算的两个数中有一个数为如果参加运算的两个数中有一个数为实数实数,则结果是,则结果是实型实型。p求余运算要求求余运算要求%两侧都是两侧都是整型数据整型数据。自增、自减运算实战演练:请说明程序运行完后实战演练:请说明程序运行完后x,y,z,m,nx,y,z,m,n的值分别是多的值分别是多少?少?main()main()int x=6,y,z,m,n;int x=6,y,z,m,n;y=+x;y=+x;z=x-;z=x-;m=y/z;m=y/z;n=y%z;n=y%z;自增运算符(自增运算符(+)和自减运算符()和自减运算符(-):):(1 1)前置运算前置运算变量、变量变量、变量 即先增减、后运算。即先增减、后运算。(2 2)后置运算后置运算变量、变量变量、变量 即先运算、后增减。即先运算、后增减。关系运算符关系运算符关系运算符 优先级 =!=低低高高关系表达式关系表达式p 用用关系运算符关系运算符将两个表达式(可以是算术表达将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式式、关系表达式、赋值表达式或逻辑表达式)连连接起来的式子,称为接起来的式子,称为关系表达式关系表达式。p关系表达式的值为关系表达式的值为逻辑值逻辑值“真真”或或“假假”,以,以1代表代表“真真”,以,以0代表代表“假假”。例如:例如:(1)关系表达式关系表达式“8=4”的值为的值为 ,表达式的,表达式的值为值为 。(2)关系表达式关系表达式“50”的值为的值为 ,表达式的,表达式的值为值为 。逻辑运算符及其优先级逻辑运算符及其优先级 逻辑运算符逻辑运算符 优先级优先级 !(逻辑非逻辑非)&(逻辑与逻辑与)|(逻辑或逻辑或)注意:逻辑运算符与位操作运算符的区别。注意:逻辑运算符与位操作运算符的区别。逻辑表达式逻辑表达式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)&(y=b)&0000运算类型运算类型运算符运算符优先级优先级结合性结合性括号运算符括号运算符()()1 1从左至右从左至右逻辑非和按位取反逻辑非和按位取反!2 2从右至左从右至左算术运算算术运算*/%*/%3 3从左至右从左至右+-+-4 4从左至右从左至右左移、右移运算左移、右移运算5 5从左至右从左至右关系运算关系运算 =6 6从左至右从左至右=!=!=7 7从左至右从左至右位运算位运算&8 8从左至右从左至右 9 9从左至右从左至右|1010从左至右从左至右逻辑与逻辑与&1111从左至右从左至右逻辑或逻辑或|1212从左至右从左至右赋值运算与复合赋赋值运算与复合赋值运算值运算=、*=、/=/=、&=&=、=、|=|=、=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规则:对应位均为规则:对应位均为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),其余各位不变。,其余各位不变。位运算位运算按位取反操作按位取反操作按位取反操作符按位取反操作符:p格式:格式:xp规则:各位翻转,即原来为规则:各位翻转,即原来为1的位变成的位变成0,原来为,原来为0的位变成的位变成1 例如,例如,i=i;p主要用途:间接地构造一个数,以增强程序的可移主要用途:间接地构造一个数,以增强程序的可移植性。植性。l左移运算符左移运算符“”的功能,的功能,是把是把“”左边的操作数左边的操作数的各二进制位全部左移若干位,移动的位数由的各二进制位全部左移若干位,移动的位数由“”右边的常数指定,右边的常数指定,高位丢弃,低位补高位丢弃,低位补0。例如:例如:“a”的功能,的功能,是把是把“”左边的操作数左边的操作数的各二进制位全部右移若干位,移动的位数由的各二进制位全部右移若干位,移动的位数由“”右边的常数指定。进行右移运算时,右边的常数指定。进行右移运算时,如果是无符号数,如果是无符号数,则总是在其左端补则总是在其左端补“0”位运算位运算练习练习1.若x=10,则!X的值为真或假?2.若a=3,b=2,则if(a&b)的值为真或假?3.5&0|8的值为?4.53&4|84的结果为?分隔符分隔符为分号为分号数组的概念数组的概念 l数组属于常用的数据类型,数组中的元素有固定数组属于常用的数据类型,数组中的元素有固定数目和相同类型,数组元素的数据类型就是该数数目和相同类型,数组元素的数据类型就是该数组的基本类型。例如,整型数据的有序集合称为组的基本类型。例如,整