《第3章单片机并行口应用PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章单片机并行口应用PPT讲稿.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章单片机并行口应用章单片机并行口应用第1页,共64页,编辑于2022年,星期一单片机单片机I/OI/O口的使用口的使用l对单片机的控制,其实就是对对单片机的控制,其实就是对I/O口的控制,无口的控制,无论单片机对外界进行何种控制,或接受外部的论单片机对外界进行何种控制,或接受外部的控制,都是通过控制,都是通过I/O口进行的。口进行的。51单片机总共有单片机总共有P0、P1、P2、P3四个四个8位双向输入输出端口,位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲每个端口都有锁存器、输出驱动器和输入缓冲器。器。4个个I/O端口都能作输入输出口用,其中端口都能作输入输出口用,其中P
2、0和和P2通常用于对外部存储器的访问。通常用于对外部存储器的访问。第2页,共64页,编辑于2022年,星期一MCS-51MCS-51单片机的并行端口结构与操作单片机的并行端口结构与操作l51系列单片机有系列单片机有4个个I/O端口,每个端口都是端口,每个端口都是8位准双向口位准双向口,共占,共占32根引脚。每个端口都包括一个根引脚。每个端口都包括一个锁存器(即专用寄存器锁存器(即专用寄存器P0P3)、一个输出驱动)、一个输出驱动器和输入缓冲器。通常把器和输入缓冲器。通常把4个端口笼统地表示为个端口笼统地表示为P0P3。第3页,共64页,编辑于2022年,星期一l 在无片外扩展存储器的系统中,这
3、在无片外扩展存储器的系统中,这4个端口的每个端口的每一位都可以作为准双向通用一位都可以作为准双向通用I/O端口使用。在具有端口使用。在具有片外扩展存储器的系统中,片外扩展存储器的系统中,P2口作为高口作为高8位地位地址线,址线,P0口口分时作为分时作为低低8位地址线和双向数据总线位地址线和双向数据总线。l51单片机单片机4个个I/O端口线路设计的非常巧妙,端口线路设计的非常巧妙,学习学习I/O端口逻辑电路,不但有利于正确合理地使用端口逻辑电路,不但有利于正确合理地使用端口,而且会给设计单片机外围逻辑电路有所启发。端口,而且会给设计单片机外围逻辑电路有所启发。下面简单介绍一下输入下面简单介绍一下
4、输入/输出端口结构。输出端口结构。第4页,共64页,编辑于2022年,星期一D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚一、一、P0P0口的结构口的结构下图为下图为P0口口的某位的某位P0.n(n=07)结构图,它由)结构图,它由一个输出锁存器、两个三态输入缓冲器和输出驱一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。从图中可以看出,动电路及控制电路组成。从图中可以看出,P0口口既可以作为既可以作为I/O用,也可以作为地址用,也可以作为地址/数据线用。数据线用。第5页,共6
5、4页,编辑于2022年,星期一1 1、P0P0口作为口作为普通普通I/OI/O口口输出时输出时CPUCPU发出控制电平发出控制电平“0 0”封锁封锁“与与”门,将输出上拉场效门,将输出上拉场效应管应管T T1 1截止,同时使多路开关截止,同时使多路开关MUXMUX把锁存器把锁存器与输出与输出D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第6页,共64页,编辑于2022年,星期一驱动场效应管驱动场效应管T T2 2栅极接通。故内部总线与栅极接通。故内部总线与P0P0口同相。由口同相。由于输出驱
6、动级是漏极开路电路,必须于输出驱动级是漏极开路电路,必须外接上拉电阻外接上拉电阻才能才能有高电平输出。有高电平输出。P0P0的输出级可驱动的输出级可驱动8 8个个LSTTLLSTTL负载。负载。D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第7页,共64页,编辑于2022年,星期一 输入时输入时-分分读引脚读引脚或或读锁存器读锁存器读引脚:读引脚:由传送指令由传送指令(MOVMOV)实现;实现;下下面一个缓冲器用于读端口面一个缓冲器用于读端口引脚引脚数据,当执行一条由端口数据,当执行一条由端
7、口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。的数据经过缓冲器读入到内部总线。D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第8页,共64页,编辑于2022年,星期一 输入时输入时-分分读引脚读引脚或或读锁存器读锁存器读锁存器:读锁存器:有些指令有些指令 如:如:P0=P0&0 x0FP0=P0&0 x0F称为称为“读读-改改-写写”指令,需要读锁存器。指令,需要读锁存器。上上面面一个缓冲器用于读
8、端口一个缓冲器用于读端口锁存器锁存器数据。数据。D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第9页,共64页,编辑于2022年,星期一*原因:原因:如果此时该端口的负载恰是一个晶体管如果此时该端口的负载恰是一个晶体管基极基极,且原端口,且原端口输出值为输出值为1 1,那么导通了的,那么导通了的PNPN结会把端口引脚高电平拉低;若结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的此时直接读端口引脚信号,将会把原输出的“1 1”电平误读为电平误读为“0 0”电平。现采用读输出锁
9、存器代替读引脚,图中,上面的三电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器态缓冲器就为读锁存器Q Q端信号而设,读输出锁存器可避免上端信号而设,读输出锁存器可避免上述可能发生的错误。述可能发生的错误。*D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第10页,共64页,编辑于2022年,星期一准准双向口:双向口:从图中可以看出,在读入端口数据时,由于输出驱动从图中可以看出,在读入端口数据时,由于输出驱动FETFET并接在引脚上,如果并接在引脚上,如果T2T2导通,就会
10、将输入的高电平拉导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器向端口锁存器写写“1”,使使T2T2截止,截止,引脚处于悬浮状态,引脚处于悬浮状态,变为高阻抗输入,以避免锁存器为变为高阻抗输入,以避免锁存器为“0 0”时对引脚读入的干时对引脚读入的干扰。这就是所谓的扰。这就是所谓的准准双向口。双向口。D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第11页,共64页,编辑于2022年,星期一2 2、P0P
11、0作为作为地址地址/数据总线数据总线 在系统扩展时,在系统扩展时,P0P0端口作为端口作为地址地址/数据总线数据总线使用时,分为:使用时,分为:P0P0引脚引脚输出地址输出地址/数据数据信息。信息。D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第12页,共64页,编辑于2022年,星期一 CPU CPU发出控制电平发出控制电平“1 1”,打开,打开“与与”门,又使多路开关门,又使多路开关MUXMUX把把CPUCPU的的地址地址/数据总线数据总线与与T2T2栅极反相接通,输出地址或数据。栅极反
12、相接通,输出地址或数据。由图上可以看出,上下两个由图上可以看出,上下两个FETFET处于反相,构成了推拉式的输出处于反相,构成了推拉式的输出电路,其负载能力大大增强。电路,其负载能力大大增强。2 2、P0P0作为作为地址地址/数据总线数据总线D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第13页,共64页,编辑于2022年,星期一 P0 P0引脚引脚输出地址输出地址/输入数据输入数据 输入信号是从引脚通过输入缓冲器进入输入信号是从引脚通过输入缓冲器进入内部总线内部总线。此时,此时,CPUCP
13、U自动使自动使MUXMUX向下,并向向下,并向P0P0口写口写“1 1”,“读引脚读引脚”控控制信号有效,下面的缓冲器打开,外部数据读入内部总线。制信号有效,下面的缓冲器打开,外部数据读入内部总线。2、P0作为地址地址/数据总线数据总线-真正的双向口D QCLK QMUXP0.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚地址地址/数据数据控制控制VCCT1T2P0P0口引口引脚脚第14页,共64页,编辑于2022年,星期一二、二、P2P2的内部结构的内部结构1.P21.P2口作为口作为普通普通I/OI/O口口D QCLK QMUXP2.n读锁存器读锁存器内部总线写锁存器写锁存
14、器读引脚读引脚地址地址控制控制VCCRTP2口引脚CPUCPU发出控制电平发出控制电平“0 0”,使多路开关,使多路开关MUXMUX倒向锁存器倒向锁存器输出输出Q Q端,构成一个准双向口。其功能与端,构成一个准双向口。其功能与P1P1相同。相同。第15页,共64页,编辑于2022年,星期一 2.P22.P2口作为口作为地址总线地址总线 在系统扩展片外在系统扩展片外程序存储器程序存储器扩展数据存储器且容量超过扩展数据存储器且容量超过256B 256B(用用MOVX DPTRMOVX DPTR指令指令)时,时,CPUCPU发出控制电平发出控制电平“1 1”,使多路开关,使多路开关MUXMUX倒倒内
15、部地址线内部地址线。此时,。此时,P2P2输出高输出高8 8位地址。位地址。D QCLK QMUXP2.n读锁存器读锁存器内部总线写锁存器写锁存器读引脚读引脚地址地址控制控制VCCRTP2口引脚第16页,共64页,编辑于2022年,星期一P1P1口、口、P3P3口的内部结构口的内部结构 P1 P1口的一位的结构口的一位的结构 它由一个它由一个输出锁存器输出锁存器、两个三态输入缓冲器两个三态输入缓冲器和和输出驱动电输出驱动电路路组成组成-准双向口。准双向口。D QD QCLK QCLK QP1.nP1.n读读锁存器锁存器内部总线内部总线写写锁存器锁存器读读引脚引脚VCCRT TP1口引脚第17页
16、,共64页,编辑于2022年,星期一P3P3的内部结构的内部结构一、作为通用一、作为通用I/OI/O口与口与P1P1口类似口类似-准双向口准双向口(W=1)(W=1)D QD QCLK QCLK QP3.nP3.n读读锁存器锁存器内部总线内部总线写锁存器写锁存器读读引脚引脚VCCRT TP3口引脚第二第二输入功能输入功能第二第二输出功能输出功能W第18页,共64页,编辑于2022年,星期一P3P3的内部结构的内部结构二、二、P3P3第二功能第二功能(Q=1Q=1)此时引脚部分输入此时引脚部分输入(Q=1Q=1、W=1)W=1),部分输出部分输出(Q=1Q=1、W W输出输出)。D QD QCL
17、K QCLK QP3.nP3.n读读锁存器锁存器内部总线内部总线写锁存器写锁存器读读引脚引脚VCCRT TP3口引脚第二第二输入功能输入功能第二第二输出功能输出功能W第19页,共64页,编辑于2022年,星期一P3P3第二功能各引脚功能定义:第二功能各引脚功能定义:P3.0P3.0:RXDRXD串行串行口输入口输入P3.1P3.1:TXDTXD串行串行口输出口输出P3.2P3.2:INT0INT0外部中断外部中断0 0输入输入P3.3P3.3:INT1INT1外部中断外部中断1 1输入输入P3.4P3.4:T0T0定时器定时器0 0外部输入外部输入P3.5P3.5:T1T1定时器定时器1 1外
18、部输入外部输入P3.6P3.6:WRWR外部写外部写控制控制P3.7P3.7:RDRD外部读外部读控制控制第20页,共64页,编辑于2022年,星期一综上所述:综上所述:*当当P0作为作为I/O口使用时,特别是作为输出时,输出级口使用时,特别是作为输出时,输出级属于开漏电路,必须外接上拉电阻才会有高电平输属于开漏电路,必须外接上拉电阻才会有高电平输出;如果作为输入,必须先向相应的锁存器写出;如果作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。,才不会影响输入电平。*当当CPU内部控制信号为内部控制信号为“1”时,时,P0口作为地址口作为地址/数数据总线使用,这时,据总线使用,这时,
19、P0口就无法再作为口就无法再作为I/O口使口使用了。用了。第21页,共64页,编辑于2022年,星期一任务一:一个任务一:一个LEDLED发光二极管的闪烁控制发光二极管的闪烁控制状态灯原理图状态灯原理图 任务三:控制任务三:控制8 8个个LEDLED发光二极管的闪烁控制发光二极管的闪烁控制任务二:调试发光二极管的闪烁控制任务二:调试发光二极管的闪烁控制第22页,共64页,编辑于2022年,星期一#include/包含头文件包含头文件reg51.hvoid delay(unsigned char a);/延时函数声明延时函数声明sbit P1_0=P10;/特殊功能位声明特殊功能位声明void
20、main()/主函数主函数while(1)P1_0=0;/将将P0的第的第1个引脚置个引脚置“0”,LED点亮点亮delay(250);/延时延时 P1_0=1;/将将P0的第的第1个引脚置个引脚置“1”,LED熄灭熄灭delay(250);/延时延时void delay(unsigned char a)/延时函数延时函数unsigned char x,y;for(x=a;x0;x-)for(y=250;y0;y-);第23页,共64页,编辑于2022年,星期一C C5151的数据类型的数据类型基本数据类型基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型
21、字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsignedint0655353204294967295unsignedlongintunsignedshortint16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsignedchar80255第24页,共64页,编辑于2022年,星期一C C语言中的基本数据类型语言中的基本数据类型类型类型符
22、号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsignedint0655353204294967295unsignedlongintunsignedshortint16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsignedchar80255第25页,共64页,编辑于2022
23、年,星期一C C5151的数据类型扩充定义的数据类型扩充定义sfr:sfr:特殊功能寄存器声明特殊功能寄存器声明sfr16:sfrsfr16:sfr的的1616位数据声明位数据声明sbit:sbit:特殊功能位特殊功能位声明声明bit:bit:位变量声明位变量声明例:例:sfr SCON=0X98;sfr SCON=0X98;sfr16 T2=0 xCC;/sfr16 T2=0 xCC;/sbit OV=PSW2;sbit OV=PSW2;第26页,共64页,编辑于2022年,星期一任务四:模拟汽车左右转向灯控制任务四:模拟汽车左右转向灯控制左左右右第27页,共64页,编辑于2022年,星期一
24、认识认识C C语言语言C C程序基本结构程序基本结构 C语言程序以函数形式组织程序结构,语言程序以函数形式组织程序结构,C程序程序中的函数与其他语言中所描述的中的函数与其他语言中所描述的“子程序子程序”或或“过过程程”的概念是一样的。的概念是一样的。第28页,共64页,编辑于2022年,星期一认识认识C C语言语言v一个一个C语言源程序是由一个或若干个函数组成,每一个语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个函数完成相对独立的功能。每个C程序都必须有(且仅有)程序都必须有(且仅有)一个主函数一个主函数main(),程序的执行总是从主函数开始,调,程序的执行总是从主函
25、数开始,调用其他函数后返回主函数用其他函数后返回主函数main(),不管函数的排列顺序,不管函数的排列顺序如何,最后在主函数中结束整个程序。如何,最后在主函数中结束整个程序。vC语言程序中可以有预处理命令,预处理命令通常放在语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。源程序的最前面。vC语言程序使用语言程序使用“;”作为语句的结束符,一条语句可作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。以多行书写,也可以一行书写多条语句。第29页,共64页,编辑于2022年,星期一3.3 C3.3 C语言的基本语句语言的基本语句语言程序的执行部分由语句组成。语言程序的执行
26、部分由语句组成。C语言提供了语言提供了丰富的程序控制语句,按照结构化程序设计的基丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。复合语句、选择语句和循环语句等。第30页,共64页,编辑于2022年,星期一一、表达式语句和复合语句一、表达式语句和复合语句 v表达式语句是最基本的表达式语句是最基本的C语言语句。表达式语句由表达式语言语句。表达式语句由表达式加上分号加上分号“;”组成,其一般形式如下:组成,其
27、一般形式如下:表达式表达式;v执行表达式语句就是计算表达式的值。执行表达式语句就是计算表达式的值。v在在 C 语言中有一个特殊的表达式语句,称为空语句。语言中有一个特殊的表达式语句,称为空语句。空语句中只有一个分号空语句中只有一个分号“;”,程序执行空语句时需要,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在占用一条指令的执行时间,但是什么也不做。在C51程程序中常常把空语句作为循环体,用于消耗序中常常把空语句作为循环体,用于消耗CPU时间等时间等待事件发生的场合。待事件发生的场合。第31页,共64页,编辑于2022年,星期一一、表达式语句和复合语句一、表达式语句和复合语句 v
28、把多个语句用大括号把多个语句用大括号 括起来,组合在一起形成具括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。条语句,而不是多条语句。v复合语句在程序运行时,复合语句在程序运行时,中的各行单语句是依次中的各行单语句是依次顺序执行的。在顺序执行的。在C语言的函数中,函数体就是一个复合语言的函数中,函数体就是一个复合语句。语句。第32页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 基本基本if语句的格
29、式如下:语句的格式如下:if(表达式表达式)语句组;语句组;if语句执行过程:当语句执行过程:当“表达式表达式”的结果为的结果为“真真”时,执行其时,执行其后的后的“语句组语句组”,否则跳过该语句组,继续执行下面的语,否则跳过该语句组,继续执行下面的语句。句。第33页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 if语句中的语句中的“表达式表达式”通常为逻辑表达式或关系表达式,通常为逻辑表达式或关系表达式,也可以是任何其他的表达式或类型数据,只要表达式的值也可以是任何其他的表达式或类型数据,只要表达式的值非非0即为即为“真真”。以下语句都是合法的:。以下语句都是合法的:if(3
30、)if(x=8)if(P3_0)在在if语句中,语句中,“表达式表达式”必须用括号括起来。必须用括号括起来。在在if语句中,花括号语句中,花括号“”里面的语句组如果只有一条语里面的语句组如果只有一条语句,可以省略花括号。如句,可以省略花括号。如“if(P3_0=0)P1_0=0;”语句,语句,但是为了提高程序的可读性和防止程序书写错误,建议但是为了提高程序的可读性和防止程序书写错误,建议读者在任何情况下,都加上花括号。读者在任何情况下,都加上花括号。第34页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 if-else语句的一般格式如下:语句的一般格式如下:if(表达式表达式)语
31、句组语句组1;else 语句组语句组2;if-else语句执行过程:当语句执行过程:当“表达式表达式”的结果为的结果为“真真”时,时,执行其后的执行其后的“语句组语句组1”,否则执行,否则执行“语句组语句组2”。第35页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 if-else-if语句是由语句是由 if else 语句组成的嵌套,用来实语句组成的嵌套,用来实现多个条件分支的选择,其一般格式如下:现多个条件分支的选择,其一般格式如下:if(表达式表达式1)语句组语句组1;else if(表达式表达式2)语句组语句组2;else if(表达式表达式n)语句组语句组n;else
32、语句组语句组n+1;第36页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 第37页,共64页,编辑于2022年,星期一二、选择语句二、选择语句 多分支选择的多分支选择的switch语句,语句,其一般形式如下:其一般形式如下:switch(表达式表达式)case常量表达式常量表达式1:语句组语句组1;break;case常量表达式常量表达式2:语句组语句组2;break;case常量表达式常量表达式n:语句组语句组n;break;default :语句组语句组n+1;该语句的执行过程是:首先计算表达式的值,并逐个与该语句的执行过程是:首先计算表达式的值,并逐个与case后的常后的
33、常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行则执行对应该常量表达式后的语句组,再执行break语句,跳出语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行后的常量表达式均不相同,则执行default后的语句组。后的语句组。第38页,共64页,编辑于2022年,星期一whilewhile语句用来实现语句用来实现“当型当型”循环,循环,执行过程:首先判断表达式,执行过程
34、:首先判断表达式,当表达式的值为真(非当表达式的值为真(非0 0)时,)时,反复执行循环体。为假(反复执行循环体。为假(0 0)时)时执行循环体外面的语句。执行循环体外面的语句。循环体循环体循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非0(真)(真)0(假)(假)循环体语句组循环体语句组while执行过程执行过程格式:格式:while(循环继续的条件表达式)(循环继续的条件表达式)语句组语句组;花括号不花括号不能丢掉!能丢掉!请问:下述程序实现了什么功能?请问:下述程序实现了什么功能?main()main()int i,sum=0;int i,sum=0;while(i=10
35、)while(i=10)sum=sum+i;sum=sum+i;i+;i+;三、循环语句三、循环语句 第39页,共64页,编辑于2022年,星期一do-while语句用来实现语句用来实现“直到型直到型”循环循环执行过程:先无条件执行一次循环体,执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值然后判断条件表达式,当表达式的值为真(非为真(非0)时,返回执行循环体直)时,返回执行循环体直到条件表达式为假(到条件表达式为假(0)为止。)为止。绝对不能少分号!绝对不能少分号!循环体循环体格式:格式:dodo 循环体语句组;循环体语句组;while(while(循环继续条件循环继续条件
36、);花括号花括号不能丢不能丢掉!掉!循环继续的条循环继续的条件表达式件表达式下一条语句下一条语句非非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);三、循环语句三、循环语句 第40页,共64页,编辑于2022年,星期一总循环次数已确定总循环次数已确定的情况下,可采用的情况下,可采用forfor语句形式为:语句形式为:forfor语句的一般形式:语
37、句的一般形式: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;三、循环语句三、循环语句 第41页,共64页,编辑于2022年,星期一任务三:控制任务三:控制8个发光个发光LED闪烁闪烁 任务五:流水灯控制任务五:流水灯控制 第42页,共64页,编辑于2022年,星期一第43页,共64
38、页,编辑于2022年,星期一第44页,共64页,编辑于2022年,星期一第45页,共64页,编辑于2022年,星期一第46页,共64页,编辑于2022年,星期一第47页,共64页,编辑于2022年,星期一第48页,共64页,编辑于2022年,星期一第49页,共64页,编辑于2022年,星期一第50页,共64页,编辑于2022年,星期一第51页,共64页,编辑于2022年,星期一运算类型运算类型运算符运算符优先级优先级结合性结合性括号运算符括号运算符()()1 1从左至右从左至右逻辑非和按位取反逻辑非和按位取反!2 2从右至左从右至左算术运算算术运算*/%*/%3 3从左至右从左至右+-+-4
39、4从左至右从左至右左移、右移运算左移、右移运算5 5从左至右从左至右关系运算关系运算 =6 6从左至右从左至右=!=!=7 7从左至右从左至右位运算位运算&8 8从左至右从左至右 9 9从左至右从左至右|1010从左至右从左至右逻辑与逻辑与&1111从左至右从左至右逻辑或逻辑或|1212从左至右从左至右赋值运算与复合赋值赋值运算与复合赋值运算运算=、*=、/=/=、&=&=、=、|=|=、=1414从右至左从右至左例如:例如:(1)xy&mn 等效于等效于 (xy)&(mc 等效于等效于(!a)&(bc)第52页,共64页,编辑于2022年,星期一位运算位运算与操作与操作按位与操作符按位与操作
40、符:&p格式:格式:x&yp规则:对应位均为规则:对应位均为1时才为时才为1,否则为,否则为0 例如,例如,i=i&0 x0f;等同于等同于 i&=0 x0f;p主要用途:取主要用途:取(或保留或保留)1个数的某个数的某(些些)位,其余各位置位,其余各位置0。第53页,共64页,编辑于2022年,星期一位运算位运算或操作或操作按位或操作符按位或操作符:|p格式:格式:x|yp规则:对应位均为规则:对应位均为0时才为时才为0,否则为,否则为1 例如,例如,i=i|0 x0f;等同于等同于 i|=0 x0f;p主要用途:将主要用途:将1个数的某个数的某(些些)位置位置1,其余各位不变,其余各位不变
41、第54页,共64页,编辑于2022年,星期一位运算位运算异或操作异或操作按位异或操作符按位异或操作符:p格式:格式:xyp规则:对应位相同时为规则:对应位相同时为0,不同时为,不同时为1 例如,例如,i=i0 x0f;等同于等同于 i=0 x0f;p主要用途:使主要用途:使1个数的某个数的某(些些)位翻转位翻转(即原来为即原来为1的位变为的位变为0,为,为0的变为的变为1),其余各位不变。,其余各位不变。第55页,共64页,编辑于2022年,星期一位运算位运算按位取反操作按位取反操作按位取反操作符按位取反操作符:p格式:格式:xp规则:各位翻转,即原来为规则:各位翻转,即原来为1的位变成的位变
42、成0,原来为,原来为0的位变的位变成成1 例如,例如,i=i;p主要用途:间接地构造一个数,以增强程序的可移植主要用途:间接地构造一个数,以增强程序的可移植性。性。第56页,共64页,编辑于2022年,星期一l左移运算符左移运算符“”的功能,的功能,是把是把“”左边的操作数的各二左边的操作数的各二进制位全部左移若干位,移动的位数由进制位全部左移若干位,移动的位数由“”右边的常数指右边的常数指定,定,高位丢弃,低位补高位丢弃,低位补0。例如:例如:“a”的功能,的功能,是把是把“”左边的操作数的各二进左边的操作数的各二进制位全部右移若干位,移动的位数由制位全部右移若干位,移动的位数由“”右边的常数指定。右边的常数指定。进行右移运算时,进行右移运算时,如果是无符号数,则总是在其左端补如果是无符号数,则总是在其左端补“0”位运算位运算第57页,共64页,编辑于2022年,星期一第58页,共64页,编辑于2022年,星期一第59页,共64页,编辑于2022年,星期一第60页,共64页,编辑于2022年,星期一第61页,共64页,编辑于2022年,星期一第62页,共64页,编辑于2022年,星期一第63页,共64页,编辑于2022年,星期一蜂鸣器sbitbeep=P1_0;beep=0;第64页,共64页,编辑于2022年,星期一