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