单片机应用技术(C语言)805_第1页
单片机应用技术(C语言)805_第2页
单片机应用技术(C语言)805_第3页
单片机应用技术(C语言)805_第4页
单片机应用技术(C语言)805_第5页
已阅读5页,还剩800页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1认识单片机《单片机应用技术(C语言版)》1.1.1什么是单片机什么是单片机?输入设备输出设备CPU存储器输入接口电路输出接口电路CPU:CentralProcessingUnit中央处理单元控制器运算器主机板计算机系统把CPU、存储器、和输入/输出接口电路集成在一个芯片上,这就是单片机。输入设备输出设备CPU存储器输入接口电路输出接口电路CPU:CentralProcessingUnit中央处理单元控制器运算器主机板单片机单片机是集成在一块(单)芯片上的微型计算机。MCU:Micro-ControllerUnit,微控制器为什么还要有单片机呢?体积大,功能强,价格高桌面应用体积小、实时性强、价格低嵌入式应用计算机单片机数字钟电路图输入设备输出设备程序单片机应用系统以单片机为核心,配上输入输出外围接口电路和控制程序,能实现一种或多种功能的实用系统,叫做单片机应用系统。程序单片机应用系统单片机应用系统的设计方法1.硬件电路设计2.控制程序设计3.硬软件调试方法4位微处理器Intel40041971年1976年1978年1982年现在1993年未来8048问世SCM——SingleChipMicrocomputer,单片机4位微处理器Intel40041971年1976年1978年1982年现在1993年未来探索1980年,8051推出完善的、典型的MCS-51单片机8051,成为我们现在学习的51单片机的基础。8048问世4位微处理器Intel40041971年1976年1978年1982年现在1993年未来探索完善8位单片机广泛普及。接口电路有了很大的扩充。推出了多种类型和型号的新型单片机。出现了面向更高层应用的16位单片机。1980年,8051推出8048问世4位微处理器Intel40041971年1976年1978年1982年现在1993年未来探索完善巩固1980年,8051推出8048问世4位微处理器Intel40041971年1976年1978年1982年现在1993年未来探索完善巩固百花齐放低功耗CMOS化微型单片化主流与多品种共存1980年,8051推出8048问世4位微处理器Intel40041971年1976年1978年1982年现在1993年未来探索完善巩固百花齐放发展趋势1.1.2单片机内部结构家长:爸爸和妈妈,控制核心家里的统一节拍由混乱恢复最初的和谐大姐:远距离通信二姐:行程时间安排三姐:帮CPU处理突发紧急事件孪生四兄弟:近距离通信存放程序存放程序存放数据单片机控制台部件名称简介中央处理器(CentralProcessingUnit,简称CPU)中央处理器是单片机的控制核心,由运算器和控制器组成。运算器的主要功能是对数据进行各种运算,包括加、减、乘、除等基本算术运算,以及与、或、非等基本逻辑运算以及数据的比较、移位等操作。控制器相当于人的大脑,它控制和协调整个单片机的动作。内部数据存储器RAM(RandomAccessMemory)8051内部共有256个RAM单元,可读可写,掉电后数据丢失。其中,高128个单元被专用寄存器占用;低128个单元供用户使用,用于暂存中间数据,通常所说的内部数据存储器就是指低128个单元。内部程序存储器ROM(Read-onlyMemory)8051内部共有4KB掩膜ROM,只能读不能写,掉电后数据不会丢失,用于存放程序或程序运行过程中不会改变的原始数据,通常称为程序存储器。并行I/O口(ParallelInput/OutputPort)8051内部有四个8位并行I/O接口(称为P0、P1、P2和P3),可以实现数据的并行输入输出。串行口(SerialPort)8051内部有一个全双工异步串行口,可以实现单片机与其它设备之间的串行数据通信。该串行口既可作为全双工异步通信收发器使用,也可作为同步移位器使用,扩展外部I/O端口。定时/计数器

(Timer/Counter)8051内部有两个16位的定时/计数器,可实现定时或计数功能。中断系统(InterruptSystem)8051内部共有5个中断源,分为高级和低级两个优先级别。时钟电路(ClockCircuit)8051内部有时钟电路,只需外接石英晶体和微调电容即可。晶振频率通常选择6MHz、12MHz或11.0592MHz。单片机内部结构简介感谢您的观看Thanks

for

your

attention.

1.2学习单片机的准备《单片机应用技术(C语言版)》1.2.1单片机开发流程与工具1.2.2单片机的仿真学习与ISP下载实验板在线仿真学习环境借助单片机仿真器模拟用户实际的单片机,能随时观察程序运行的中间过程,而不改变性能和结果,从而进行模仿现场的真实调试。ISP下载实验板软件仿真学习环境感谢您的观看Thanks

for

your

attention.

1.2学习单片机的准备《单片机应用技术(C语言版)》12345678910111213141516171819204039383736353433323130292827262524232221VCCGND电源引脚接入单片机的工作电源VCC(40):接+5V电源GND(20):接地12345678910111213141516171819204039383736353433323130292827262524232221VCCGNDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0口(39~32):P0.0~P0.7引脚P1口(1~8):P1.0~P1.7引脚P2口(21~28):P2.0~P2.7引脚P3口(10~17):P3.0~P3.7引脚12345678910111213141516171819204039383736353433323130292827262524232221VCCGNDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0XTAL2XTAL1RSTRST(9):Reset,复位信号XTAL1(19):片内振荡器的反相放大器和外部时钟发生器的输入端XTAL2(18):片内振荡器的反相放大器和外部时钟发生器的输出端12345678910111213141516171819204039383736353433323130292827262524232221VCCGNDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0XTAL2XTAL1RSTEAALEPSENPSEN(29):外部程序存储器读选通信号,低电平有效。ALE(30):地址锁存控制信号EA(31):访问程序存储控制信号,通常接高电平。引脚名称引脚功能P0.0~P0.7P0口8位双向端口线P1.0~P1.7P1口8位双向端口线P2.0~P2.7P2口8位双向端口线P3.0~P3.7P3口8位双向端口线ALE地址锁存控制信号外部程序存储器读选通信号访问程序存储控制信号RST复位信号XTAL1和XTAL2外接晶体引线端VCC+5V电源VSS地线12345678910111213141516171819204039383736353433323130292827262524232221VCCGNDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0XTAL2XTAL1RSTEAALEPSENRXD/TXD/INT0/INT1/T0/T1/WR/RD/第一功能第二功能第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2外部中断0申请P3.3外部中断1申请P3.4T0定时/计数器0的外部输入P3.5T1定时/计数器1的外部输入P3.6外部RAM或外部I/O写选通P3.7外部RAM或外部I/O读选通P3口各引脚的第二功能12345678910111213141516171819204039383736353433323130292827262524232221VCCGNDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0XTAL2XTAL1RSTEAALEPSENRXD/TXD/INT0/INT1/T0/T1/WR/RD//D0/A0/D1/A1/D2/A2/D3/A3/D4/A4/D5/A5/D6/A6/D7/A7/A15/A14/A13/A12/A11/A10/A9/A8感谢您的观看Thanks

for

your

attention.

2.2单片机最小系统电路《单片机应用技术(C语言版)》2.2.1单片机时钟电路电源太阳空气水下载程序?人的脉搏波振荡信号心脏时钟电路振荡信号fosc:6MHz,12MHz,11.0592MHz起振电容C1和C2:30pf左右输入端输出端时钟电路是单片机应用系统中必需的电路。电源单片机下载程序时钟电路复位电路单片机最小系统单片机中的各种操作在时间上要有一个严格的先后次序,这种次序就是单片机时序。单片机时序foscTosc=1/foscTosc把振荡脉冲的周期定义为节拍,用P表示

振荡信号:时钟电路产生的信号状态:单片机时钟信号的周期fosc时钟信号P1P2S把时钟信号的周期定义为状态,用S表示

一个机器周期机器周期:是单片机中最基本的时间单位fosc时钟信号P1P2规定一个机器周期的宽度为6个状态,表示为S1~S6。

P1P2P1P2P1P2P1P2P1P2S1S2S3S4S5S6S1P1S1P2S2P1S2P2S3P1S3P2S4P1S4P2S5P1S5P2S6P1S6P2T机器=12*Tosc=12

/foscfosc=6MHzT机器=12

/(6*106)=2us机器周期:单片机中最基本的时间单位指令周期:一条指令执行的时间单周期指令:执行时间1个机器周期双周期指令:执行时间2个机器周期四周期指令:执行时间4个机器周期延时时间:把执行指令的时间累加起来晶振频率振荡信号频率振荡信号周期(节拍)状态时钟机器周期2分频6分频单周期指令双周期指令四周期指令2.2.2单片机复位电路复位让电脑从疯狂混乱的状态,恢复到一个最初的正常状态。从最初的状态开始继续工作,从头再来。死机电脑运行进入了疯狂混乱的状态,就像人昏死过去了,对外界没有了任何反映。程序计数器PC不可控制、不听指挥了。2个机器周期以上fosc=12MHzT机器=1us2us8051。。+5VGND10kΩ10μF。。+5VGND上电复位电路10kΩ10μF按键复位电路.RESET高电平10kΩ10μF单片机复位电路时钟电路单片机最小系统电路让单片机恢复到确定的初始状态让单片机从初始状态开始工作感谢您的观看Thanks

for

your

attention.

2.351单片机的存储器结构《单片机应用技术(C语言版)》2.3.1片内数据存储器8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址0x00~0x7F)和高128单元(单元地址0x80~0xFF)。片内数据存储器RAM:

RandomAccessMemory,随机存取存储器特点:可以随机读写数据,掉电内容丢失容量:低128×8用途:存放中间结果或临时数据——数据存储器序

号区

域地

址功

能1工作寄存器区0x00~0x07第0组工作寄存器(R0~R7)0x08~0x0F第1组工作寄存器(R0~R7)0x10~0x17第2组工作寄存器(R0~R7)0x18~0x1F第3组工作寄存器(R0~R7)2位寻址区0x20~0x2F位寻址区,位地址为:0x00~0x7F3用户RAM区0x30~0x7F用户数据缓冲区片内数据存储器低128单元这128字节的数据存储器怎样使用呢?其实,我们采用C语言编程的话,只要按照要求定义各类变量就可以了,不需要我们来具体考虑怎样存放这些中间变量,这也是我们采用C语言编程的好处,我们不需要了解太多单片机内部的结构。专用寄存器SFR控制程序硬件系统专用寄存器专用寄存器

单片机专用寄存器,也称为特殊功能寄存器(SpecialFunctionRegister,SFR)位于内部RAM地址空间的高128字节位置(80H~FFH)专用寄存器21个SFR地址不连续空闲单元用户不可使用程序计数器PC,物理独立,不占RAM单元程序计数器PCProgramCounter——PC16位的寄存器,寻址范围64KB程序计数器PC内容为下一条将要执行指令的地址有自动加1功能,从而控制程序的执行顺序程序计数器PC用户无法对它进行读写。但可以通过转移、调用等指令改变其内容,以实现程序的转移单片机复位时,PC=0000H累加器ACC寄存器B程序状态字PSW数据指针DPTR堆栈指针SP常用寄存器sfrP1=0x90;//专用寄存器P1的地址是0x90P1=0x00;sbitP1_0=P1^0;//定义SFR中的可寻址位

P1_0=1;sfr和sbit

在通常情况下,这些专用寄存器已经在头文件regx51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的专用寄存器。#include<regx51.h>sfr和sbit2.3.2片外数据存储器8051单片机最多可扩充片外数据存储器(片外RAM)64KB,称为XDATA区。在XDATA空间内进行分页寻址操作时,称为PDATA区。片外数据存储器可以根据需要进行扩展。当需要扩展存储器时,低8位地址A7~A0和8位数据D7~D0由P0口分时传送,高8位地址A15~A8由P2口传送。因此,只有在没有扩展片外存储器的系统中,P0口和P2口的每一位才可作为双向I/O端口使用。片外数据存储器2.3.3程序存储器单片机应用系统程序存储器程序存储器直接使用单片机内部程序存储器程序存储器直接使用单片机外部程序存储器程序存储器使用单片机内部程序存储器和外部存储器程序存储器直接使用单片机内部程序存储器中断向量区ORG0000HC语言程序在单片机C语言程序设计中,用户无须考虑程序的存放地址,编译程序会在编译过程中按照上述规定,自动安排程序的存放地址。C语言程序C语言是从main()函数开始执行的,编译程序会在程序存储器的0000H处自动存放一条转移指令,跳转到main()函数存放的地址;中断函数也会按照中断类型号,自动由编译程序安排存放在程序存储器相应的地址中。存储器类型描

述data直接访问内部数据存储器,允许最快访问(128B)bdata可位寻址内部数据存储器,允许位与字节混合访问(16B)idata间接访问内部数据存储器,允许访问整个内部地址空间(256B)pdata“分页”外部数据存储器(256B)xdata外部数据存储器(64KB)code程序存储器(64KB)

C51编译器支持的存储器类型感谢您的观看Thanks

for

your

attention.

2.4单片机并行I/O端口《单片机应用技术(C语言版)》2.4.1并行I/O端口电路结构51单片机典型芯片8051共有4个8位并行I/O端口,分别用P0、P1、P2、P3表示。每个I/O端口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。P0口位电路结构P1口位电路结构P2口位电路结构P3口位电路结构2.4.2作为输入端口使用P1P0P2P3单片机输入输出读引脚P0=0xFF;和读引脚相对应的,51单片机还有一个读端口的操作,这是指执行一类特殊指令的时候需要的操作,我们只要了解就可以了。绝大多数时候我们还是读引脚操作。输入操作四个并行I/O接口的输入操作完全相同区分读引脚和读端口读引脚的时候,需要向端口中写入12.4.3作为输出端口使用P1P0P2P3单片机输入输出P1P0P2P3单片机+5V。4.7K×8P0口作为输出接口的时候,需要给它在外部电路中连接上拉电阻。输出操作P0口需外接上拉电阻才能有高电平输出P1、P2和P3口作为输出端口使用时,外接可以不接上拉电阻。2.4.4I/O端口的第二功能P1P0P2P3单片机8位双向8位双向8位双向8位双向一专多能P0口简单专职P1口专兼皆备P2口第二功能身兼两职P3口感谢您的观看Thanks

for

your

attention.

3.1认识C语言《单片机应用技术(C语言版)》3.1.1第一个C语言程序“//”是单行注释符号,通常用从该符号开始直到一行结束的内容来说明相应语句的意义,或者对重要的代码行、段落进行提示,方便程序的编写、调试及维护工作,提高程序的可读性。程序在编译时,不对这些注释内容做任何处理。C语言的另一种注释符号是“/**/”。在程序中可以使用这种成对注释符进行多行注释,注释内容从“/*”开始,到“*/”结束,中间的注释文字可以是多行文字。这两行是C语言的程序预处理部分:文件包含语句,表示把语句中指定文件的全部内容复制到此处,与当前的源程序文件链接成一个源文件。定义函数delay()。delay()函数的功能是延时,用于控制发光二极管的闪烁速度。定义主函数main()。main()函数是C语言中必不可少的主函数,也是程序开始执行的函数。3.1.2C语言的基本结构程是规矩和法则的意思,是指按照一定的结构、框架办事;序是指以时间为基准的先后关系,在时间上有先有后、有始有终。点亮LED让LED亮一会儿熄灭LED让它灭一会儿重复以上过程1个信号灯闪烁编写程序就是把我们想要单片机做的事情,用我们的语言,按照一定框架结构和时间顺序写出来。点亮LED让LED亮一会儿熄灭LED让它灭一会儿重复以上过程信号灯闪烁信号灯闪烁控制C语言程序

准备工作

预编译步骤1步骤2步骤3步骤4步骤5步骤6步骤7步骤8步骤9步骤10步骤11步骤12步骤13步骤14步骤15voidmain(){语句1;语句2;语句3;语句4;语句5;语句6;语句7;语句8;语句9;语句10;语句11;语句12;语句13;语句14;语句15;}

准备工作

预编译步骤1步骤2步骤3步骤4步骤5步骤6步骤7步骤8步骤9步骤10步骤11步骤12步骤13步骤14步骤15voidmain(){语句1;语句2;语句3;语句4;语句5;语句6;语句7;语句8;语句9;语句10;语句11;语句12;语句13;语句14;语句15;}函数头函数体

准备工作

预编译步骤1步骤2步骤3步骤4步骤5步骤6步骤7步骤8步骤9步骤10步骤11步骤12步骤13步骤14步骤15voidmain(){语句1;语句2;语句3;语句4;语句5;语句6;语句7;语句8;语句9;语句10;语句11;语句12;语句13;语句14;语句15;}函数头函数体主函数程序总是从主函数开始执行,到主函数结束;主函数名字main不能修改。

预编译voidmain(){语句1;语句2;语句3;语句4;语句5;语句6;语句7;语句8;语句9;语句10;语句11;语句12;语句13;语句14;语句15;}重复使用function1(){语句3;语句4;语句5;}

预编译voidmain(){语句1;语句2;function1();语句6;语句7;function1();语句11;语句12;语句13;语句14;语句15;}完成相对独立的一个功能function1(){语句3;语句4;语句5;}

预编译intmain(){语句1;语句2;function1();语句6;语句7;function1();语句11;语句12;语句13;语句14;语句15;}function2(){语句12;语句13;语句14;语句15;}完成相对独立的一个功能function1(){语句3;语句4;语句5;}

预编译intmain(){语句1;语句2;function1();语句6;语句7;function1();语句11;语句12;语句13;语句14;语句15;}function2(){语句12;语句13;语句14;语句15;}

预编译intmain(){语句1;语句2;function1();语句6;语句7;function1();function2();}C语言程序是以函数形式来组织程序结构的一个C语言的源程序是由一个或若干个函数组成的每个C程序都必须有,且仅有一个主函数main()

程序的执行总是从主函数开始,最后在主函数中结束整个程序程序执行顺序与函数的排列顺序无关信号灯闪烁控制C语言程序预编译子函数delay主函数//是单行注释符/*…*/是多行注释符语句以;作为结束符可以一条语句书写多行,也可以一行书写多个语句C语言大小写敏感3.1.3C语言的特点C语言由函数构成。函数包括标准函数和自定义函数,每个函数就是一个功能相对独立的模块。C语言还提供了多种结构化的控制语句,如顺序、条件、循环结构语句,满足程序设计结构化的要求。结构化语言C语言具有丰富的数据类型,便于实现各类复杂的数据结构,它还有与地址密切相关的指针及其运算符,直接访问内存地址,进行位(bit)一级的操作,能实现汇编语言的大部分功能,因此C语言被称为“高级语言中的低级语言”。

用C语言对51单片机开发应用程序,只要求开发者对单片机的存储器结构有初步了解,而不必十分熟悉处理器的指令集和运算过程,寄存器分配、存储器的寻址及数据类型等细节问题由编译器管理,不但减轻了开发者的负担,提高了效率,而且程序具有更好的可读性和可移植性。丰富的数据类型用C语言开发单片机应用系统程序,便于模块化程序设计。可采用开发小组来规划和完成项目,分工合作,灵活管理。基本上杜绝了因开发人员变化所造成的对项目进度、后期维护及升级的影响,从而保证了整个系统的品质、可靠性及可升级性。便于维护管理(1)不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构。(2)寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理。(3)程序结构清晰,可读性强。(4)编译器提供了很多标准函数,具有较强的数据处理能力。C语言优点感谢您的观看Thanks

for

your

attention.

3.2C语言的基本语句《单片机应用技术(C语言版)》3.2.1表达式语句和复合语句1+1=2圆的面积:S=π*r²三斜求积术:

由运算符和运算对象组成具有特定含义运算结果一般是一个数值

由运算符和运算对象组成,具有特定含义,运算结果必定是一个值的式子,就是表达式

表达式举例:1,π,1/4,r,a,b,c

1+1=2圆的面积:S=π*r²三斜求积术:

信号灯闪烁控制C语言程序i----自减运算符LED=0LED=1=赋值符,把式子左边表达式的值赋给右边

S=π*r*rS=sqrt((

c*c*a*a-pow((c*c+a*a-b*b)/2,2))/4)算术表达式LED=0赋值表达式a==b关系表达式3>5&&a>=b逻辑表达式a|0x0f位运算表达式a=3*5,a*4逗号表达式a?b++:c++条件表达式C语言中的表达式非常丰富,在程序中无处不在,就像我们身体中的血液一样,所以有人也把C语言称为表达式语言,各种表达式具体的描述方式,在使用的时候还会再学习。表达式语句:表达式加上分号信号灯闪烁控制C语言程序复合语句:是指把多个语句用花括号括起来信号灯闪烁控制C语言程序在程序中应把复合语句看成是单条语句,而不是多条语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。空语句:什么也不做,占用时间,用于延时信号灯闪烁控制C语言程序3.2.2选择语句选择结构程序条件判断事件1事件2假(N)真(Y)选择结构程序对给定的条件进行判断,并根据判断结果选择执行的程序,称为选择结构程序。单分支选择双分支选择多分支选择选择结构程序条件判断事件1事件2真(Y)假(N)双分支结构选择结构程序条件判断事件1单分支结构真(Y)假(N)选择结构程序多分支结构if语句if语句是C语言的选择程序结构控制语句。

if语句可以完成单分支选择、双分支选择和多分支选择结构控制。if语句的功能模型

如果(满足某个条件)

就{

执行某个动作

}

如果(今天是周一)

就{

早晨1、2节上课

}if语句的语法if(表达式){

语句组;}if语句例程if(m==0){delay(1200);

if(k){ w=0x01;}}“表达式”可以是任意表达式,只要表达式的值

非0

“真” 0“假”if语句例程if(m==0){delay(1200);

if(k){ w=0x01;}}“表达式”必须用()括起来;“语句组”必须用{}括起来。if语句例程if(m==0){delay(1200);

if(k){ w=0x01;}}花括号“{}”里面的语句组如果只有一条语句,可以省略花括号。If-else语句的语法if(表达式){

语句组1;}else{

语句组2;}if-else语句的执行过程if(K==0){w=0x01;P1=~w; }elseP1=0x00;真否则——假ifelseif语句ll

if(表达式1){语句组1;}elseif(表达式2){语句组2;}

……elseif(表达式n){语句组n;}else{语句组n+1;}ifelseif语句ll

实例已知:a=9,b=4,求P1的数值if(a<3){P1=0x01;b=10;

}elseif(a>b){P1=0x02;}elseP1=0x03;假不执行真执行选择结构程序多分支结构If-else-if语句switch语句switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法switch(i)

{case1:P1=0x00;break;

case2:P1=0x55;break;

case3:P1=0x0f;break;

case4:P1=0xf0;break;

default:break;}switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法注意,这里是冒号“:”,并不是分号“;”switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法每一个case后的常量表达式必须是不同的值以保证分支的唯一性。switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法每一个case语句后都要跟一个break用来退出switch语句。switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法default总是放在最后,这时default后不需要break语句。default不是必须,如果没有default,当switch后面圆括号中表达式的值与所有case后面的常量表达式的值都不相等时,则不执行任何一个分支直接退出switch语句。switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法在switch-case语句中,多个case可以共用一条执行语句,如:case'A':case'B':case'c':printf(">60\n");break;switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}switch语句的语法如果在case后面包含多条执行语句时,不需要像if语句那样加大括号,进入某个case后,会自动顺序执行本case后面的所有执行语句。.练习已知:a=9,b=4,求P1的数值if(a<3){i=2;b=10;

}elseif(a>b)i=1;elsei=3;switch(i){case1:P1=0x00;break; case2:P1=0x55;break; case3:P1=0x0f;break; case4:P1=0xf0;break; default:break;}假不执行3.2.3循环语句1+2+3+4+5+6+……+100=?和和和……和……重复了99次加法运算循环结构程序循环结构程序实现一种有规律的重复的程序,称为循环结构程序。i>100?Y开始i=1;s=0;s=s+i;i=i+1;结束N1+2+3+4+5+6+……+100=?循环初值设置重复执行的程序段——循环体循环结束条件循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledowhileforwhile(表达式){语句组;}while语句的语法“当型”循环while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}while(表达式){语句组;}1+2+3+4+5+6+……+100=?while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}while(表达式){语句组;}1+2+3+4+5+6+……+100=?while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?循环初值设置必须放在循环之外。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?表达式可以是任意表达式,“非0”为真,“0”为假。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?当表达式为常数时,形成无限循环,例如:while(1){……}因为单片机开始运行后是不能停下来的,所以嵌入式程序中都采用无限循环结构。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?while(1);称为停机语句,执行原地踏步操作。一般用于程序调试。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?While()语句中,如果表达式的结果一开始就为“假”,则循环体一次也不执行。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?循环体一般是一个复合语句,需用{}括起来。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。while语句的语法i=0;s=0;

while(i<=100){s=s+i;i++;}1+2+3+4+5+6+……+100=?循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledowhilefordo{语句组;}while(表达式);do-while语句的语法“直到型”循环i>100?Y开始i=1;s=0;s=s+i;i=i+1;结束N1+2+3+4+5+6+……+100=?i=0;s=0;

do{s=s+i;i++;}while(i<=100);i=0;s=0;

do{s=s+i;i++;}while(i<=100);do{语句组;}while(表达式);1+2+3+4+5+6+……+100=?do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);do{语句组;}while(表达式);1+2+3+4+5+6+……+100=?do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?循环初值设置必须放在循环之外。do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?表达式可以是任意表达式,“非0”为真,“0”为假。do-while语句的语法while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?如果表达式的结果一开始就为“假”,则循环体也要执行一次。i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?表达式后面一定要有分号“;”。do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?循环体一般是一个复合语句,需用{}括起来。do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。do-while语句的语法do-while语句的语法i=0;s=0;

do{s=s+i;i++;}while(i<=100);1+2+3+4+5+6+……+100=?循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。while与do-while语句比较while语句dowhile语句先判断,后执行先执行,后判断循环体可能一次也不执行循环体至少执行一次循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledowhileforfor语句while语句1+2+3+4+5+6+……+100=?循环初值设置重复执行的程序段——循环体修改循环变量循环结束条件判断i=1;s=0;

while(i<=100){s=s+i;i++;}i<=100?Y开始i=1;s=0;s=s+i;i=i+1;结束N1+2+3+4+5+6+……+100=?i=1;s=0;

while(i<=100){s=s+i;i++;}s=0;for(i=1;i<=100;i++){s=s+i;}1+2+3+4+5+6+……+100=?i=1;s=0;

while(i<=100){s=s+i;i++;}s=0;for(i=1;i<=100;i++){s=s+i;}for(表达式1;表达式2;表达式3){语句组;}for语句的语法表达式1:循环变量赋初值i=1;表达式2:循环条件判断i<=100;表达式3:修改循环变量i++;s=0;for(i=1;i<=100;i++){s=s+i;}for(表达式1;表达式2;表达式3){语句组;}for语句的语法表达式2Y表达式1;语句组表达式3N1+2+3+4+5+6+……+100=?s=0;for(i=1;i<=100;i++){s=s+i;}for语句的语法s=0;i=1;for(;i<=100;i++){s=s+i;}s=0;i=1;for(;i<=100;){s=s+i;i++;}s=0;for(i=1;;i++){s=s+i;if(i<=100)break;}for语句中的三个表达式都是可选项,可以省略,但必须保留“;”1+2+3+4+5+6+……+100=?s=0;for(i=1;i<=100;i++){s=s+i;}for语句的语法for(;;){

语句组;}for语句中的三个表达式都省略,但必须保留“;”,无限循环while(1){

语句组;}1+2+3+4+5+6+……+100=?s=0;for(i=1;i<=100;i++){s=s+i;}for语句的语法for(s=0,i=1;i<=100;i++){s=s+i;}for语句表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式循环的嵌套一个循环(称为“外循环”)的循环体内包含另一个循环(称为“内循环”)——循环的嵌套循环的嵌套三种循环语句while、do-while、for可以互相嵌套。循环的嵌套while(){

循环体;}while(){循环体

}do{

循环体;}while();do{循环体}while();for(;;){

循环体;}for(;;){循环体}循环的嵌套while(){

循环体;}for(;;){循环体

}do{

循环体;}while();while(){循环体}for(;;){

循环体;}while(){循环体}C语言的基本语句表达式语句If语句Switch语句while语句Dowhile语句For语句break语句continue语句switch(表达式){

case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}break语句的用法1s=0;for(i=1;;i++){s=s+i;if(i<=100)break;}break语句的用法2s=0;for(i=1;;i++){s=s+i;if(i<=100)break;}break语句的用法2在循环嵌套中,一个break语句只能向外跳一层。voidmain(){inti=0,sum;sum=0;for(i=1;i<=20;i++){

if(i%5==0)continue;//若i能整除5,即执行continue语句 sum=sum+i;

}

}continue语句的用法break语句和continue语句结束整个循环。结束本次循环。break语句continue语句感谢您的观看Thanks

for

your

attention.

3.3C语言数据与运算《单片机应用技术(C语言版)》3.3.1数据类型

室外温度:-10.5π=3.1415926半径:r=2.5显示数据:0xfe,0xfd,0xfb…0x7f身高:175延时参数:20000体重:61中国人口:1367820000海拔:-100底下车库:-3无符号字符型(unsignedchar):0~255无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号整型(unsignedint):0~65535无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号整型(unsignedint):0~65535有符号整型(signedint或int):-32768~+32767无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号整型(unsignedint):0~65535有符号整型(signedint或int):-32768~+32767无符号长整型(unsignedlong):0~4294967295无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号整型(unsignedint):0~65535有符号整型(signedint或int):-32768~+32767无符号长整型(unsignedlong):0~4294967295有符号长整型(signedlong或long):-2147483648~+21474837无符号字符型(unsignedchar):0~255有符号字符型(signedchar或char):-128~+127无符号整型(unsignedint):0~65535有符号整型(signedint或int):-32768~+32767无符号长整型(unsignedlong):0~4294967295有符号长整型(signedlong或long):-2147483648~+21474837浮点型(float):±1.175494E-38~±3.402823E+38

室外温度:-10.5π=3.1415926半径:r=2.5显示数据:0xfe,0xfd,0xfb…0x7f身高:175延时参数:20000体重:61中国人口:1367820000海拔:-1000底下车库:-3数据类型长度值域unsignedchar无符号字符型1B0~255signedchar有符号字符型-128~+127unsignedint无符号整型2B0~65535signedint有符号整型-32768~+32767unsignedlong无符号长整型4B0~4294967295signedlong有符号长整型-2147483648~+2147483647float浮点型4B±1.175494E-38~±3.402823E+38*指针型1~3B对象的地址sfr特殊功能寄存器1B0~255sfr1616位特殊功能寄存器2B0~65535bit位类型1b0或1sbit可寻址位0或1C51编译器所支持的数据类型3.3.2常量和变量姓名性别出生日期工作单位职务住址身高体重血型张三男1993-05-01学校学生宿舍21.87135.5B整型浮点型位类型1表示男,0表示女姓名性别出生日期工作单位职务住址身高体重血型张三11993-05-01学校学生宿舍21.87135.5B整型浮点型位类型1表示男,0表示女字符型字符型字符型可变不变不变不变不变可变可变可变可变姓名性别出生日期工作单位职务住址身高体重血型可变不变不变不变不变可变可变可变可变性别出生日期血型不变姓名工作单位职务住址身高体重可变姓名性别出生日期工作单位职务住址身高体重血型可变不变不变不变不变可变可变可变可变性别出生日期血型不变姓名工作单位职务住址身高体重可变常量变量常量是指程序执行期间其值固定,不能改变的量。数据格式示例十进制88、-192十六进制0x58、-0xc0长整型88L、0x58L、o130L整型常量举例流水灯程序数据格式示例十进制88、-192十六进制0x58、-0xc0长整型88L、0x58L、o130L整型常量举例浮点常量举例举例数据格式示例小数0.888、345.3指数8.88e-1、3.453e2数据格式示例英文单引号:’’‘A’、’9’ASCII码65、57字符常量举例ASCII:AmericanStandardCodeforInformationInterchange字符串常量举例数据格式示例说明双引号括起来”china”’c’、’h’、’i’、’n’、’a’、’\0’”A”

’A’、’\0’””空字符串,’\0’每个字符串的尾部都有一个’\0’作为结束符值域数据类型0或1位类型bit位类型常量信号灯闪烁控制C语言程序常量的定义整型常量浮点型常量字符型常量字符串常量位常量性别出生日期血型不变姓名工作单位职务住址身高体重可变常量变量30.8℃变量相当于一个存放数据的容器玻璃杯保温杯酒盅类型不同名字不同内容不同变量的类型变量名变量的值变量类型不同名字不同内容不同变量类型:float变量名:temperature30.8℃变量的值floattemperature;//定义浮点型变量temperature,存放温度值floattemperature,height,weight;//定义浮点型变量temperature,存放温度值

//定义浮点型变量height,存放身高//定义浮点型变量weight,存放体重变量类型变量列表,逗号相隔temperature=30.8;//初值height=178.5;weight=135.5;floattemperature=30.8,height=178.5,weight=135.5;//定义浮点型变量temperature,存放温度值,初值30.8

//定义浮点型变量height,存放身高,初值178.5//定义浮点型变量weight,存放体重,初值135.5unsignedinti,count=1000;//定义整型变量charled=0x7f;

//定义字符型变量bitflag=0;

//定义位变量………………存储器unsignedinti,count=1000;//定义整型变量charled=0x7f;

//定义字符型变量bitflag=0;

//定义位变量count………………iledflag10000x7f00unsignedinti,count=1000;//定义整型变量charled=0x7f;

//定义字符型变量bitflag=0;

//定义位变量存储器led=20000;//整型数赋值给字符变量i=3.1415926;//浮点数赋值给整型变量led=32;//20000-256*78=32i=3;//浮点数赋值给整型变量信号灯闪烁控制C语言程序流水灯程序内部变量(局部变量):在函数内部定义的变量。作用域仅限于函数内。不同函数的内部变量是可以重名的。指定效果流水灯程序变量是程序中存放临时数据的场所;变量需先定义,后使用;编译器按照变量类型,为变量分配存储空间;不同类型的变量分配的存储空间也不一样;在程序执行过程中不断变化,变量中存放的总是最新的值。流水灯程序流水灯程序流水灯程序流水灯程序#define<宏名>

<字符串>#definePI3.1415926

流水灯程序无符号整型数unsignedint

无符号字符型unsi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论