单片机应用技术C语言版(上篇共上中下3篇)_第1页
单片机应用技术C语言版(上篇共上中下3篇)_第2页
单片机应用技术C语言版(上篇共上中下3篇)_第3页
单片机应用技术C语言版(上篇共上中下3篇)_第4页
单片机应用技术C语言版(上篇共上中下3篇)_第5页
已阅读5页,还剩233页未读 继续免费阅读

下载本文档

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

文档简介

“十二五”职业教育国家规划教材经全国职业教育教材审定委员会审定控制1只发光二极管闪烁显示任务要求搭建单片机控制一只发光二极管闪烁显示的电路,在KeilµVision4集成开发环境中新建一个Keil工程,将给定的控制发光二极管闪烁显示程序添加到Keil工程中,编译生成单片机可执行的hex文件,然后用STC-ISP-6.63工具软件将hex文件下载至单片机应用系统中,观察发光二极管的显示效果。1、单片机的引脚功能STC89C51有DIP40、PLCC-44、TQFP-44几种封装,DIP40的引脚分布及功能如下:1脚20脚21脚40脚识别DIP封装芯片的引脚方法是,引脚向外,缺口朝上时,左上方第1个引脚为1脚,依逆时针方向数,依次为1、2、3、……,最后一个引脚位于右上角。相关知识+5V电源脚接地引脚内部振荡电路的输出端外部程序存储器读选通信号输出引脚复位信号输入端,外接复位电路地址锁存控制信号输出引脚程序存储器选择控制端。该脚接高电平,系统从片内程序存储器中开始执行程序。该脚接地,系统从片外程序存储器中开始执行程序内部振荡电路的输入端双向8位并行端口P3双向8位并行端口P1双向8位并行端口P0双向8位并行端口P2接晶振2、单片机的内部结构相关知识外接晶振和微调电容构成单片机的时钟电路,产生时钟信号。有5个中断源,2个中断优先级。有4个8位并行口,可以实现数据的并行输入/输出。全双工的串行口,用于单片机与其他计算机之间进行串行数据通信、扩展外部输入/输出端口。2个16位的定时/计数器,用于产生时标间隔、记录外部事件的数量设置单片机内部电路的运行方式,记录单片机的运行状态存放运算的中间结果。保存用户程序和用户表格数据。中央处理器,由运算器和控制器组成。控制器主要完成指令的读取、指令的译码和指令的执行等工作,并协调单片机内部各部分工作,运算器主要完成算术运算和逻辑运算。内部还包含PC、A、B、DPTR、PSW、SP等几个寄存器。2、单片机的内部结构CPU内部的寄存器①SP:堆栈指针寄存器。用来记录堆栈的栈顶位置。

堆栈的作用:在程序被打断时存放程序返回的地址和断点的现场,以便程序正确返回并从断点处继续执行原来的程序。MCS-51单片机的堆栈的特点:对堆栈的操作包括压入(PUSH)和弹出(POP)2种,并遵循“先加后压,先弹后减”的操作原则。堆栈只能定义在片内数据存储器中(idata区中),由SP记录栈顶位置。相关知识2、单片机的内部结构CPU内部的寄存器设SP的值为m,则堆栈位于idata区中,堆栈区的首地址为m+1,idata区中地址m+1、m+2、m+3、……单元为堆栈区,第1个压入堆栈中的数据存放在idata区m+1单元中。用C51开发单片机应用程序时,用户只需在初始化程序中通过设置SP的值来定义堆栈区的起始地址。堆栈定义在片内RAM从0x70开始的区域中的程序代码如下:SP=0x6f; //将堆栈区定义在片内RAM从0x70开始的区域中相关知识2、单片机的内部结构CPU内部的寄存器②PC:程序计数器。用来存放CPU要执行的下一条指令在程序存储器中的地址。③A:累加器。在算术运算和逻辑运算中用来存放参加运算的一个操作数和运算结果。④B:B寄存器。在乘除法运算中用来存放参加运算的另一个操作数,同时用来保存部分运算结果。⑤DPTR:数据指针寄存器。在访问扩展RAM或程序存储器时,用来存放16位的地址。相关知识2、单片机的内部结构CPU内部的寄存器⑥PSW:程序状态字。用来记录指令执行后的状态。PSW的D3位、D4位为RS0、RS1,用来选择CPU的当前工作寄存器组。【说明】A、B、DPTR、SP、PSW在特殊功能寄存器中都有对应的映射特殊功能寄存器。用C51开发单片机应用程序时,需要掌握上述寄存器中的SP,其他寄存器用户一般不直接操作相关知识3、单片机的存储组织结构MCS-51单片机有4个存储空间:①片内数据存储器(片内RAM)、②特殊功能寄存器(SFR)、③扩展数据存储器(扩展RAM)、④程序存储器(ROM)。⑴片内RAM标准的MCS-51单片机(如8051)片内RAM只有128字节,其地址范围为0x00~0x7f,增强型的MCS-51单片机(如STC89C52)的片内RAM有256字节,地址范围为0x00~0xff,相关知识⑴片内RAM①工作寄存器组区共32字节,地址范围为0x00~0x1f。分为4组,每组8个字节,称为一个工作寄存器组,任何时刻CPU都只能使用其中的某一组工作寄存器。CPU正在使用的工作寄存器组称为当前工作寄存器组,依次用R0、R1、……、R7表示,主要用来传递参数或者临时存放数据。相关知识⑴片内RAM②位地址区(bdata区)共16字节,地址范围为0x20~0x2f。常用作位变量的存储器特点:每个字节都分配有一个位地址,共128位,每一位都可以单独访问,从0x20单元的最低位到0x2f的最高位各位的位地址依次为0x00、0x01……0x7f相关知识⑴片内RAM④数据缓冲区1共80字节,地址范围为0x30~0x7f。用来存放运算过程中的中间值⑤数据缓冲区2共128字节,地址范围为0x80~0xff。用来存放运算过程中的中间值【说明】①在C51中,idata区是指整个片内RAM区(0x00~0xff区),data区是指0x00~0x7f区,bdata区是指0x20~0x2f的位地址区。②标准的MCS-51单片机中只有0x00~0x7f区域,其data区与idata区重合,增强型MSC-51单片机片机RAM的范围为0x00~0xff,共256字节。相关知识3、单片机的存储组织结构⑵特殊功能寄存器(SFR)标准的MCS-51单片机有21个SFR,不连续地分配在0x80~0xff地址区中,用来设置单片机内部电路的运行方式,记录单片机的运行状态,以及实现I/O端口的读写操作。符号地址功能P00x80P0口映射SFR。对P0读/写,可实现对P0端口的输入/输出操作SP0x81CPU内部的堆栈指针寄存器的映射特殊功能寄存器DPL0x82数据指针寄存器DPTR的低字节映射特殊功能寄存器DPH0x83数据指针寄存器DPTR的高字节映射特殊功能寄存器PCON0x87电源控制寄存器TCON0x88定时/计数器的控制寄存器TMOD0x89定时/计数器的模式控制寄存器相关知识3、单片机的存储组织结构⑵特殊功能寄存器(SFR)符号地址功能TL00x8a定时/计数器T0的计数器低字节TL10x8b定时/计数器T1的计数器低字节TH00x8c定时/计数器T0的计数器高字节TH10x8d定时/计数器T1的计数器高字节P10x90P1口映射SFR。对P1读/写,可实现对P1端口的输入/输出操作SCON0x98串行端口控制寄存器SBUF0x99串行端口数据缓冲器P20xa0P2口映射SFR。对P2读/写,可实现对P2端口的输入/输出操作IE0xa8中断允许控制寄存器相关知识3、单片机的存储组织结构⑵特殊功能寄存器(SFR)符号地址功能P30xb0P3口映射SFR。对P3读/写,可实现对P3端口的输入/输出操作IP0xb8中断优先级控制寄存器PSW0xd0程序状态字寄存器映射的特殊功能寄存器,用来记录程序运行的状态ACC0xe0累加器A的映射特殊功能寄存器B0xf0B寄存器的映射特殊功能寄存器相关知识3、单片机的存储组织结构⑵特殊功能寄存器(SFR)相关说明①增强型MCS-51单片机除了上述21个SFR外,还新增了若干个SFR,不同单片机的SFR数量并不一定相同,SFR越多,单片机的功能越强大。②字节地址能被8整除的SFR的每一位都分配有位地址,可以单独访问其中的位。③SFR的地址与片内RAM的高128字节单元的地址虽然相同,但它们是不同的存储空间,具有不同的功能,访问方式也不同,SFR与片内RAM的关系如图所示。

相关知识3、单片机的存储组织结构⑵特殊功能寄存器(SFR)相关说明④特殊功能寄存器SP、PSW、ACC、B分别是CPU内部的SP、PSW、A、B四个寄存器的映射特殊功能寄存器,DPL、DPH是寄存器DPTR的映射特殊功能寄存器

。用C51编写单片机应用程序时,数据运算和存储单元访问操作的代码由C51编译器生成,这6个寄存器以及R0~R7主要是供C51编译器使用,除了在定义堆栈时需要直接设置SP的值外,C51程序中一般不直接使用这6个寄存器以及R0~R7,否则程序中将会出现一些预想不到的后果。

相关知识3、单片机的存储组织结构⑶扩展数据存储器/外部数据存储器用来存放运算过程中的中间值,通过在单片机外部扩展RAM芯片来实现。【说明】有些MCS-51单片机的片内也集成有一定容量的扩展RAM,例如STC15F2K60S2单片机集成有2KB的扩展RAM,用户完全可以通过适当选择单片机的型号来避免在单片机的外部扩展RAM芯片。MCS-51单片机具有16根地址线,单片机外部最多可以扩展64KB的外部数据存储器,地址范围为0x0000~0xffff。在C51中,扩展数据存储器叫做xdata区,其中高8位地址相同的256字节的区域为pdata区。相关知识3、单片机的存储组织结构⑷程序存储器(ROM)共64KB的空间,地址范围为0x0000~0xffff,通过外接ROM芯片来实现,用来存放用户程序和用户表格数据,C51中称程序存储器为code区。现代的MCS-51单片机内部一般都集成有一定数量的程序存储器,片内的程序存储器位于从0x0000开始的地址低端。相关知识3、单片机的存储组织结构⑷程序存储器(ROM)STC89C51单片机内就集成有4KB的程序存储器,地址范围为0x0000~0x0fff,其程序存储器的结构如下图所示。图中阴影部分为CPU实际访问的程序存储器。相关知识3、单片机的存储组织结构【说明】①不同单片机片内程序存储器的大小不同,例如,STC89C58片内有32KB的程序存储器,STC15F2K60S2片内有61KB的程序存储器,用户可以根据程序的大小适当选择单片机来避免片外扩展程序存储器。此时,用户程序和表格数据固化在内部程序存储器中,而将单片机的引脚接高电平。②扩展RAM与程序存储器的地址范围均为0x0000~0xffff,但它们属于不同的存储空间,单片机通过、引脚选择扩展RAM,通过

引脚选择程序存储器。相关知识4、单片机的最小系统⑴时钟电路作用:产生时钟脉冲信号,单片机缺少了时钟信号就无法工作指保证单片机能独立工作所必须要的外部电路,包括时钟电路、复位电路、存储器电路和电源电路。相关知识Y:晶振,起反馈选频作用,它的频率的高低决定了单片机运行速度的快慢

C1、C2为振荡微调电容,要求容量相等,一般取5pF~30pF

Y、C1、C2要尽可能地安装在XTAL1、XTAL2引脚的附近①时钟周期(Tosc):又称为振荡周期,即时钟信号的周期。若晶振的频率为fosc,则Tosc=1/fosc。与时钟相关的概念②机器周期(MC):CPU完成一个基本操作所需要的时间。标准的MCS-51单片机的一个机器周期包括12个振荡周期。即MC=12/fosc。时钟电路4、单片机的最小系统⑵复位电路作用:为单片机产生复位信号,保证单片机上电后从一个确定的状态开始工作相关知识4、单片机的最小系统C1=10~30μF

R1=1~10KΩ

R2为0~200ΩC1、R1与上电复位电路相同

相关知识RAM的内容不变,SFR恢复到初复状态单片机复位后的状态特殊功能寄存器初始状态特殊功能寄存器初始状态A0x00TMOD0x00B0x00TCON0x00PSW0x00TH00x00SP0x07TL00x00DPL0x00TH10x00DPH0x00TL10x00P0~P30xffSBUF不定IPxxx00000BSCON0x00IE0xx00000BPCON0x00复位电路4、单片机的最小系统⑶最小系统电路STC89C51单片机的外部接上时钟电路、复位电路,将其VCC和GND引脚分别接上+5V电源和地,然后将引脚接高电平就构成了单片机的最小系统相关知识5、C51程序特点任务1的程序代码#include <reg51.h>sbit led=P1^0;void delay(void);void main(void) //主函数{ while(1) { led=~led; delay(); }}/*------------------------------------------*/void delay(void) //delay子函数{ unsigned long i; for(i=0;i<12500;i++);}C51程序的特点:

①由一个main函数和若干个其他函数组成。函数是C51程序的基本单位。②有且只有一个main函数,main函数可以放在程序中任意位置,无论main函数放在何处,C51程序总是从main函数开始执行的。③其他函数根据程序的需要可以为0个也可以是多个,其他函数可以放在程序中的任意位置。相关知识5、C51程序特点④语句由分号(;)结尾,分号是语句的组成部分。函数是由若干条语句组成的。⑤一条语句可以分多行写书,一行内也可以书写多条语句。⑥注释有“//注释”和“/*注释*/”两种形式。其中“//注释”为单行注释,“//”表示注释开始,在本行内,“//”后面的内容为注释的内容。“/*注释*/”可以对多行注释,“/*”为注释的开始,“*/”为注释的结束,“/*”和“*/”之间的内容为注释内容。⑦C51程序中大小写字母有别,标点符号要用半角方式录入。C51程序的特点:

相关知识1、搭建硬件电路单片机最小系统发光二极管控制电路在单片机最小系统的基础上再加上发光二极管控制电路而构成

任务实施1、找到USB转串口驱动程序CH341SER.exe,然后双击驱动程序文件图标“”,打开驱动安装对话框。2、在“驱动安装”对话框的“选择INF文件”下拉列表框中选择“CH341SER.INF”列表项,然后单击“安装”按钮,系统就开始执行安装程序,驱动程序安装结束后会自动弹出如图所示的驱动安装成功提示框。2、安装USB转串口驱动程序任务实施(1)将含有CH340芯片的USB转串口通信线插入计算机的某个USB口中。(2)在桌面上右击“我的电脑”图标,在弹出的快捷菜单中单击“属性”菜单命令,打开“系统属性”对话框。(3)单击“硬件”选项卡标签,然后在“硬件”选项卡中单击“设备管理器”按钮,打开“设备管理器”窗口。3、查看USB口映射的串口号任务实施(4)在“设备管理器”窗口中单击“端口”左边的“+”号,展开“端口”项,“端口”项下面会出“USB-SERIALCH340”项(参考图1-16)。该项右边的COMX就是当前USB口所映射的串口号3、查看USB口映射的串口号任务实施①安装好keilµVision4,并记下安装目录。②下载STC单片机的ISP下载编程烧录软件STC_ISP_6.63。网址为http://www.STCMCU.com。③双击STC_ISP软件图标“”,打开“STC-ISP”窗口。4、在Keil中添加STC单片机任务实施单击左移右移按钮单击标签名单击“添加MCU型号到Keil中”按钮,打开“浏览文件夹”对话框选择keil的安装目录,然后单击“确定”按钮,会出现“STCMCU型号添加成功”提示框

4、在Keil中添加STC单片机任务实施⑴建立工程文件①在D盘新建一个名为EX01文件夹②双击桌面上的快捷图标“”,打开KeilµVision4窗口。输出窗口Project标签显示工程的结构工程管理窗口Function标签显示工程中的函数Books标签显示CPU的附加说明文件Templates标签显示常用结构模板状态栏工具图标按钮菜单栏5、建立Keil工程任务实施③单击菜单栏上的“project”→“newproject”菜单,打开新建工程对话框。④在此对话框中进行设置单击此按钮选择文件夹在此处输入工程名在此处选择工程类型单击“保存”5、建立Keil工程任务实施⑤在选择CPU数据库对话框的下拉列表框中选择“STCMCUDatabase”列表项,然后单击“OK”按钮,打开选择单片机对话框。单击“STC”前面的“+”号

选择STC89C52RC单片机单击“OK”5、建立Keil工程任务实施⑵新建C51程序文件①单击“File”→“New…”菜单,KeilµVision4集成开发环境的右边会出现文本编辑窗口,窗口标签上会显示当前新建文件的文件名“Text1*”。②在文本编辑窗口中录入任务1的程序代码。③单击保存文件图标按钮,弹出保存文件对话框,然后在“文件名”文本框中输入文件名“ex01.c”,再单击“保存”按钮5、建立Keil工程任务实施【相关说明】①用keil新建文件时,keil默认的文件名为texti*(i=1、2、…),此时文本编辑窗口上的标签显示的是默认的文件名,保存文件后,文本编辑窗口上的标签显示的是保存后的文件名。②C51程序文件实际上是一个文本文件,可以用任何文本编辑器新建和编辑。③在程序代码中,“//”后面的内容为语句的注释部分。本例中,这一部分可以暂不录入。“//”是C语言程序的注释符。④程序中的标点符号必须在半角状态录入。例如“;”(半角状态下的分号)不能录入成“;”(全角状态下的分号)。⑤如果事先已建立了C51程序文件,则跳过此步直接进入第3步。5、建立Keil工程任务实施5、建立Keil工程任务实施⑶在Keil工程中添加程序文件①单击“target1”前面的“+”号,然后用鼠标右键单击“SourceGroup1”,在弹出来的快捷菜单中单击“AddFiletoGroup‘SourceGroup1’”,打开添加文件对话框

②在“查找范围”下拉列表框内显示的是工程文件所在目录“EX01”,“查找范围”下面的列表框是文件列表框,显示的是指定目录中的指定类型的所有文件。单击“文件类型”下拉列表框,从中选择“CSourcefile(*.c)”,此时文件列表框中将显示EX01目录中所有C语言源程序文件,单击刚才所建立的程序文件“ex01.c”,再单击“Add”按钮。【说明】程序文件添加后,在KeilµVision4集成开发环境的工程管理窗口中,“SourceGroup1”前面将出现一个“+”号,单击“+”号可看到“SourceGroup1”下面会出现所添加的文件“ex01.c”,表示程序文件已经添加成功。但添加文件对话框仍保持不变,此时应单击“Close”按钮关闭对话框,如果在对话框中再次单击“Add”按钮,则会出现右图所示的警告提示。5、建立Keil工程任务实施右键击“Target1”,在弹出的快捷菜单中单击“OptionforTarget‘Target1’”菜单项,打开“OptionforTarget‘Target1’”对话框

6、配置工程任务实施Target页面功能:设置单片机的晶振频率、变量的存储空间分配等进入方法:单击target标签片外扩展程序存储器的起始地址及大小晶振的频率默认状态下变量分配的存储空间程序代码的大小选择操作系统是否选用片内程序存储器是否选用片内扩展RAM是否双数据指针片外扩展RAM的起始地址及大小6、配置工程任务实施Target页面“Memorymodel”下拉列表框的选项选项注释含义Small小型模式所有变量都定义在data区内(片内RAM0x00~0x7f区域)Compact紧凑模式变量可以使用一页扩展RAM区域(pdata区)。Large大型模式变量可使用64KB的扩展RAM(xdata区)。“CodeRomSize”下拉列表框的选项选项注释含义Small小型模式所有程序使用低2KB程序存储器空间。Compact紧凑模式单个函数的代码量不能超过2KB,整个程序可以使用64KB空间。Large大型模式可以使用全部64KB程序存储空间。6、配置工程任务实施功能:设置输出文件的形式进入页面的方法:单击Output标签勾选此项,编译、连接后会生成HEX文件6、配置工程任务实施Listing页面功能:对列表文件进行详细设置进入页面的方法:单击Listing标签常用的是“CCompilerListing”下面的“AssemblyCode”选项,选中此项,则可以在列表文件中生成C语言源程序所对应的汇编程序代码,其他选项选一般选用系统的默认值。

6、配置工程任务实施C51页面控制Keil的C51编译器的编译过程。其中常用的设置项是“CodeOptimization”框中的几项,其他项一般采用默认设置。设置编译时的优化等级。一般选用默认的第8级,如果编译中出现一些问题,可以降低优化级别试一试。编译的优先方式。共有三个选项:①Favorsize:代码量优先,即生成的代码量最少。②Favorspeed:速度优先,即生成的代码运行速度最快。③default:系统缺省项。默认值是第二项,通常情况下就选默认项Favorspeed。R0~R7是否用绝对地址访问用C51开发单片机应用程序时,R0~R7一般不采用绝对地址访问,需要勾选此项6、配置工程任务实施Debug页面设置程序的调式方式,如果选用软件模拟调试,该页一般采用默认设置。如果选用的是硬件仿真调试,需要进行一些设置单击此处单选钮选择“STCMonitor-51Driver”列表项单击“Setting”按钮,打开设置仿真器对话框单击“COMPort”下拉列表框,从中选择单片机与计算机相连的串行口单击“Baudrate”下拉列表框,从中选择单片机与计算机通信的波特率6、配置工程任务实施方法:单击菜单栏上的“Project”→“Buildtarget”菜单如果源程序中存在语法上的错误,输出窗口中将会有错误报告出现,双击错误报告行,可以定位到出错的位置。对源程序反复修改后最终会得到如上图所示的结果。连接后,Keil集成开发环境下面的输出窗口中就会显示连接的结果,如图下图所示。7、编译、连接任务实施与编译、连接相关的图标按钮编译连接重新连接7、编译、连接任务实施调试程序的目的:查找程序中的逻辑错误调试程序的方法:跟踪程序的运行,查看程序运行的结果。如果结果与理论值不符,表明程序存在逻辑错误,再逐条运行程序中的相关语句,找出产生错误的语句,并修改程序,直至程序运行的结果正确。调试中常用的技术:设置断点,采取全速运行、单步运行、过程单步等多种运行方式反复运行程,在程序运行的过程中观察相关变量的值8、调试程序任务实施⑴进入调试状态方法:单击菜单栏上的“Debug”→“Start/StopDebugSession”子菜单项或者单击开始/停止调试图标按钮“”。调试状态下的窗口界面如下:调试工具按钮8、调试程序任务实施⑵显示“Registers”窗口窗口的功能:显示单片机内部的主要寄存器以及这些寄存器的当前值【说明】显示窗口的菜单命令和图标按钮具有开关特性。如果Keil左边窗口的标签中显示了“Registers”标签名,则单击“RegistersWindow”命令会关闭寄存器窗口,再次单击“RegistersWindow”命令则会显示寄存器窗口。显示窗口的方法:单击“View”→“RegistersWindow”菜单命令或者单击调试工具栏上的显示寄存器窗口图标按钮“”。8、调试程序任务实施窗口的功能:显示变量的当前值。包括Locals、Watch1和Watch2三个观察窗口显示Locals窗口的方法:如图所示显示Watch1和Watch2窗口的方法与此相同⑶显示观察窗口8、调试程序任务实施Locals窗口介绍Locals观察窗口当前函数中的变量及其值程序运行的时间8、调试程序任务实施在Watch窗口中指定观察变量的方法双击这里使字符呈蓝底白字的反向显示,再输入所要观察的变量名,然后单击窗口中的空白处选择显示值的进制右击显示值在弹出的菜单中选择NumberBase/Hex(16进制)或者Decimal(10进制)8、调试程序任务实施⑷显示CallStack窗口窗口的功能:显示当前执行函数的调用层次关系显示窗口的方法:单击“View”→“CallStackWindow”菜单命令窗口界面当前执行的函数CallStack窗口Callee列显示被调用函数Caller列显示主调函数第000行显示的是delay函数的调用情况。其含义是:在ex1.c文件的main函数第9行处调用ex1.c文件中的delay函数。第001行显示的是main函数的调用情况,其含义是,在code区的0x0000地址处调用ex1.c文件中的main函数。8、调试程序任务实施⑸设置断点目的:让程序运行至指定行后暂停运行,以便用户观察程序运行的结果设置方法:单击需要程序停止运行的行,再用单击“Debug”→“Insert/RemoveBreakpoint”菜单命令或者在某行语句的尾部双击鼠标左键【说明】①设置断点行后,断点行的右边会出现一个红色小矩形框。②断点设置命令具有开关特性。若某行为断点行,再次对该行设置断点时,则为取消该行断点。8、调试程序任务实施⑹观察外围设备的运行状态可观察的内容:外部中断、并行口、定时/计数器、串行口等外围设备的运行状态操作方法:在Peripherals菜单中,单击Interrupt、I/O-Ports、Serial、Timer四个子菜单项之一P1口窗口操作:单击“Peripherals”→“I/O-Ports”→“Port1”菜单命令8、调试程序任务实施⑺选择程序的运行方式并运行程序有6个菜单命令,位于Debug菜单中,另有6个调试图标按钮与这之相对应。说明功能快捷键菜单命令图标按钮程序不间断运行,遇到断点后停止运行,用于模拟调试中观察断点处程序运行结果或者在仿真调试中观察单片机系统的运行结果全速运行F5Go只执行箭头所指行中的语句,若箭头所指行为函数调用语句,则进入被调函数中。用于逐条查看被调函数中各语句的执行结果。单步运行F11Step只执行箭头所指行中的语句,若箭头所指行为函数调用语句,则把调用函数看作成一条语句来执行,而不进入被函数中。用于逐条查看函数中各语句的执行结果。过程单步F10StepOver8、调试程序任务实施⑺选择程序的运行方式并运行程序说明功能快捷键菜单命令图标按钮停止运行ESCStopRunning执行完整个函数体后暂停运行。用于查看函数运行的结果。执行完当前函数Ctrl+F11Stepoutofcurrentfunction从箭头所指行执行至光标所在行。用于快速执行一段程序。运行至光标处Ctrl+F10Runtocursor控制程程序运行的图标按钮8、调试程序任务实施9、下载Hex文件至单片机中任务实施⑴用USB线将实验平台上的USB口与计算机的某个USB口相接。⑵双击STC_ISP软件图标“”,打开“STC-ISP”窗口。⑶单击这里,选择单片机的型号⑷单击“扫描”按钮,检测计算机中可用串口单击这里,选择与实训平台相接的串行口编号单击这里,打开“打开程序代码文件”对话框。在对话框中选择所需要的下载的文件“ex01.hex”这里会显示所打开Hex文件对应的16进制代码这里会显示所打开Hex文件的路径单击此按钮,然后按实验平台上的电源开关,给单片机接通电源。STC-ISP就会将所打开的文件下载到单片机中去。有关注意事项①下载程序时,必须先单击“下载”按钮,再给单片机加电。②第4步中,如果STC-ISP扫描不到串口编号,一般是由于USB线与计算机或者实训平台没有可靠连接所致。③第4步中,如果选择的串口不是与实验平台相接的串口,则给单片机加后,则通信提示框中会显示“正在检测目标单片机…”,如下图所示解决方法:核对与实验平台相接的串口号,并重选串口号9、下载Hex文件至单片机中任务实施单片机应用系统的开发过程(1)根据开发要求,设计并搭建好硬件电路(2)编写软件程序(3)利用开发工具(如KeilµVision4)调试软件程序并编译生成目标文件(4)将目标文件下载至单片机应用系统中学习单片机的主要内容(1)硬件电路(2)单片机的编程结构应用总结与拓展任务实施任务1中的硬件电路单片机的引脚功能、时钟电路、复位电路、最小系统电路等单片机的编程结构是指单片机内部的存储组织结构,它们是单片机应用程序设计的基础。在研究单片机的编程结构时要弄清单片机有哪些存储器,各存储器的功能是什么,如何访问等。尤其是要弄清楚单片机的特殊功能寄存器。MCS-51单片机有片内RAM、扩展RAM、程序存储器和特殊功能寄存器4个存储空间,片内RAM和扩展RAM用于存放数据,程序存储器主要是存放程序和表格数据,特殊功能寄存器设置单片机内部电路的运行方式,记录单片机的运行状态。学习单片机在很大程度上是学习单片机内部的特殊功能寄存器。应用总结与拓展任务实施学习C51时除了要注意C51的语法规则外,还要注意典型程序的设计方法。掌握C51程序设计方法是单片机应用系统设计的基本技能之一。熟练地使用KeilµVision4也是单片机应用系统开发的基本技能之一,在应用系统开发中要充用利用KeilµVision4的强大功能。应用总结与拓展任务实施主编:李文华“十二五”职业教育国家规划教材经全国职业教育教材审定委员会审定显示开关量的输入单片机的P0口作输入端口,外接一个8位的拨码开关。P1口作输出端口,控制8个发光二极管的显示输出,用发光二极管指示拨码开关的状态。当拨码开关的某一位拨到ON位置时,与该位对应的发光二极管就亮,否则就熄灭。

任务要求1、C51中的数据类型基本类型数据如下表所示,构造类型则由基本类型构造而成的。数据类型名称长度unsignedchar无符号字符型1字节signedchar或char有符号字符型1字节unsignedint无符号整型2字节signedint或int有符号整型2字节相关知识unsignedlong无符号长整型4字节signedlong或long有符号长整型4字节float浮点型4字节*指针型1~3字节bit位型1位sfr特殊功能寄存器1字节sfr1616位特殊功能寄存器2字节sbit可寻址位1位说明:①C51中,char型、int型、long型默认为signedchar、signedint和signedlong。②MCS-51单片机是8位的单片机,它可以直接支持的数据类型是无符号字符型、位型(包括可寻址位)以及特殊功能寄存器,在应用程序设计时应尽量使用无符号字符型、位型数据,以便提高程序运行的速度。相关知识2、常量与变量⑴常量:在程序运行的过程中其值始终保持不变的量。常量的表示如下:类型表示方法示例整型十进制数:与日常书写一致0、-27、123、-227十六进制数:以0x开头的数字0x3、-0x1c、0x123八进制:以0开头的数字012、-034、067相关知识长整型数字后面加字母l或L12l、-45l、0x34l、-078l浮点型十进制:带有小数点的数字0.8、-7.8、5.0指数形式:e表示底数10,e后为指数,e前为系数1.2e3、2.3e-5、-4.5e2位型0或者1字符型用单撇号括起来的单个字符'3'、'a'、'W'、'+'字符串型用双撇号括起来的若干个字符"abc"、"中国"、"123"、"1"⑴常量符号常量的定义方法#define 标识符 常量值#defineCONST20//定义符号常量CONST,其值为20【说明】①符号常量的定义是宏定义,语句后面无分号(;)。②程序中使用符号常量可以提高程序的可读性,方便程序的修改。例如,如果要将程序中的常量改为30,则只需符号常量定义部分改为“#defineCONST30”。③习惯上符号常量的标识符采用大写字母表示。相关知识(2)变量定义方法:数据类型 变量名表;“数据类型”是前面介绍的基本类型和后面要学习的构造类型,“变量名表”是由逗号(,)间隔的若干个变量名。【举例】unsignedchari,j; //定义2个无符号字符型变量i,jbit mybit; //定义位变量mybit【说明】变量名只能由字母、数字和下划线3种字符组成,且首字符不能是数字字母的大小写有别变量名的最大长度为255个字符,但C51只识别前32个字符相关知识3、赋值运算运算符:=作用:给变量赋值赋值表达式:用赋值运算符“=”将一个变量与一个表达式连起来的式子。例如,“i=3”就是一个赋值表达式,它所执行的操作是把常数3赋给变量i。赋值语句:在赋值表达式后面加上分号(;)。格式如下:变量名=表达式;

相关知识例如:i=a+b; //将表达式a+b的值赋给变量ij=0x12; //将常数0x12赋给变量j。语句执行后j=0x12i=(j=3)+(k=4);//将表达式(j=3)+(k=4)的值赋给i。语句执行后i=7,j=3,k=4C51中,当赋值运算符两边的数据类型不一致时,系统会自动地进行数据类型转换。转换的法则是,把“=”右边的类型转换成左边的类型,具体的规定如下表所示赋值方式转换规则float赋给int舍去小数int赋给float值不变,加上小数,小数为0unsignedchar赋给整型值赋给整型的低字节,整型的高字节为0x00signedchar赋给整型值赋给整型的低字节,字符型的最高位为1时,整型的高字节为0xff,字符型的最高位为0,整型的高字节为0x00。int赋给char舍去高字节,低字节赋给char相关知识例题下列程序段执行后,a=0xff80,b=0x0040。相关知识unsigned int a,b;char i,j;i=0x80;j=0x40;a=i;b=j;4、特殊功能寄存器的定义⑴8位的特殊功能寄存器定义:sfr 特殊功能寄存器名=特殊功能寄存器的地址;

例如:sfr P0=0x80; //定义特殊功能寄存器P0,其地址为0x80sfr P1=0x90; //定义特殊功能寄存器P1,其地址为0x90sfr TMOD=0x89; //定义特殊功能寄存器TMOD,其地址为0x89【说明】①关键字sfr后面的特殊功能寄存器名实际上是一个标识符,可以任意选取,但一般用大写字母表示。②赋值符“=”后面的地址必须是位于0x80~0xff之间的常数,不能是带有运算符的表达式。③MCS-51单片机的特殊功能寄存器的地址详见表1-2。相关知识⑵16位的特殊功能寄存器的定义sfr16 寄存器名=寄存器低字节的地址值;例如:sfr16 DPTR=0x82;//定义16位的寄存器DPTR,其低字节DPL的地址为0x82,高字节DPH的地址为0x83【说明】用sfr16将2个特殊功能寄存器定义成一个16位的特殊功能寄存器,需要这两个特殊功能寄存器满足下列条件:①需要组合成16位来访问。②两特殊功能寄存器的地址连续,且高字节位于高地址处,低字节位于地址处。相关知识⑶可寻址位的定义特殊功能寄存器中,字节地址能被8整除的特殊功能寄存器的每一位都分配有位地址,这些特殊位就是可寻址位。另外,片内RAM0x20~0x2f这16个字节的每一位也都分配有位地址,也是可寻址位。格式一:sbit 可寻址位名=特殊功能寄存器名^位置编号;【说明】①特殊功能寄存器名必须是已经定义了的特殊功能寄存器的名称,并且该特殊功能寄存器的字节地址能被8整除。②位置编号为可寻址位在特殊功能寄存器中的位置编号,其值为0~7。例如:sfr P0=0x80; //定义特殊功能寄存器P0,其地址为0x80sbitP0_0=P0^0; //定义可寻址位P0_0,它是P0的第0位相关知识格式二:sbit 可寻址位名=字节地址^位置编号;相关知识【说明】①定义特殊功能寄存器中的可寻址位时,字节地址必须位于0x80~0xff之间,并且能被8整除。②定义片内RAM0x20~0x2f中的可寻址位时,字节地址必须位于0x20~0x2f之间。③位置编号与格式一中相同。例如:sbit P1_1=0x90^1;//定义可寻址位P1_1,其位地址为0x91sbit TR0=0x88^4; //定义可寻址位TR0,其位地址为0x8csbit mybit=0x20^1;//定义可寻址位mybit,它是片内RAM0x20的第1位格式三:sbit 可寻址位名=位地址值;相关知识例如:sbit P1_1=0x91; //定义可寻址位P1_1,其位地址为0x91sbit OV=0xd7; //定义可寻址位OV,其位地址为0xd75、并行端口P1的应用特性P1口的位结构如下:相关知识P1口的输出特性①输出驱动级内接有上拉电阻。P1口作为输出端口使用时,其外部引脚上可以不接上拉电阻。②输出具有锁存功能。特殊功能寄存器P1是P1口的输出锁存器。③输出数据操作。向特殊功能寄存器P1写数,数据就从P1口并行输出;向特殊功能寄存器P1的某一位P1.i写一位数,该数位就从P1.i引脚输出。相关知识例如:sfr P1=0x90; //定义特殊功能寄存器P1sbit P1_1=P1^1; //定义P1的第1位sbit P1_5=P1^5 ; //定义P1的第5位P1=0x5a; //P1口并行输出数据0x5a,P1.7~P1.0依次输出01011010P1_1=1; //P1.1口线输出高电平1P1_5=0; //P1.5口线输出低电平0相关知识P1口的输入特性①输入具有缓冲功能。②读取引脚信号的方法比较特殊。读引脚输入的方法是,先向特殊功能寄存器P1的每一位数写1,再读端口。相关知识例如,读P1.5引脚上的数据就要用如下程序段:P1_5=1; //向锁存器P1.5写1,切断驱动级对引脚输入信号的影响mybit=P1_5; //读引脚P1.5上的输入数据至mybit位中将P1口8个引脚上的信号读至无符号字符型变量m中:P1=0xff; //向P1口8位锁存器写1m=P1; //读P1口引脚输入信号至m中相关知识③对P1进行“读-修改-写”操作时,所读入的数据为特殊功能寄存器P1中的数据。例如:P1=P1|0x5a; //P1口的内容与数0x5a按位或后再写入P1口P1--; //P1口的内容自减1P1口的输出驱动能力只能驱动4个LSTTL负载。如果负载过大,则需要在端口上外接驱动电路后方可接负载。相关知识⑷复位后的状态单片机复位后,特殊功能寄存器P1的值为0xff,P1口输出全为高电平1,即输出0xff。【说明】现代增强型MCS-51单片机中,在P1.0、P1.1两个引脚上分配了第二功能,某位引脚上的第二功能没使用时,该端口可作为普通的I/O端口使用。复位时,P1.0和P1.1口的第二功能自动关闭,这些端口自动处于I/O端口状态。相关知识6、并行端口P0的应用特性P0口的位结构如下:既可以作普通的I/O端口使用,又可以作数据/地址总线口使用。控制C=1时,P0口作地址/数据总线使用,由Q1、Q0组成推挽输出电路对地址/数据信号输出。控制C=0时,P0口作普通I/O口使用,此时使Q1截止,Q0处于漏极开路输出状态。相关知识6、并行端口P0的应用特性控制C=0时P0口的位结构如下:相关知识P0的输出特性输出驱动级为漏极开路电路。作输出口使用时,如果电流是从端口流向负载(即负载为拉电流负载),则需要在输出引脚与正电源之间接上一个10KΩ左右的上拉电阻。如果电流是从负载流向端口(负载为灌电流负载),则可以不加上拉电阻,也可以外接上拉电阻。输出具有锁存功能。特殊功能寄存器P0就是P0口的内部锁存器输出操作方法与P1口相同。相关知识P0口的输入特性与P1口作为输入口使用一样。P0口的输出驱动能力P0口的每一位可以驱动8个LSTTL负载。复位后P0口的状态单片机复位后,特殊功能寄存器P0的值为0xff,可以作普通的I/O口直接进行输入或者输出操作。P0口作普通I/O口使用的条件当单片机片外不扩展程序存储器、不扩展并行RAM并且也不扩展并行I/O芯片时,P0口可作为普通的I/O口使用。相关知识电路图如下:任务实施1、搭建硬件电路(1)流程图:程序结构的图解表示方法。常用的符号如下:任务实施2、编写软件程序(1)流程图:程序结构的图解表示方法。任务2的流程图如下:变换拨码开关的某一位拨至ON位置时,对应输入引脚的输入为低电平0;在发光二极管的控制电路中,采用的是低电平有效控制,输出为0时,发光二极管就亮。因此,可以直接用拨码开关的输入状态数据来控制发光二极管的显示输出。

任务实施2、编写软件程序任务实施2、编写软件程序(2)程序代码sfr P0=0x80; //1定义特殊功能寄存器P0sfr P1=0x90; //2定义特殊功能寄存器P1void main(void) //3主函数main{ while(1) //4while循环(详见任务4):永不停息地执行其后大括号中的内容(语句6、7),

{ //5while的循环体开始

P0=0x0ff; //6P0端口(输入口)写1 P1=P0; //7读P0口的引脚输入,并写入P1口输出

} //8while的循环体结束} //9main函数结束应用总结与拓展宏定义

宏定义是一种编译预处理命令,以“#”号开头,结尾处不用分号(;),一般放在程序开头处。⑴不带参数的宏定义定义格式: #define 标识符字符串作用:用标识符代表字符串,在编译预处理时,编译器会将源程序中的所有标识符替换成字符串。#define PI 3.14 //用PI代表常数3.14#define uchar unsignedchar //uchar代表字符unsignedchar宏名的有效范围:从宏定义位置起到文件的结束。如果要终止宏定义的作用域,可用#undef命令。⑵带参数的宏定义定义格式:#define 标识符(参数表) 字符串这种定义的作用是,编译预处理时,将源程序中所有标识符替换成字符串,并将字符串中的参数用实际使用的参数替换。例如:#define S(a,b) (a+b)/2如果程序中使用了S(2,3),则编译预处理时将S(2,3)替换成(2+3)/2应用总结与拓展主编:李文华“十二五”职业教育国家规划教材经全国职业教育教材审定委员会审定控制楼梯灯任务要求单片机的P2.0和P2.1口线上分别接有两只开关S0、S1,P3.5口线上接有发光二极管控制电路。开关S0、S1同时闭合或者同时断开时,发光二极管熄灭,开关S0、S1中一个断开另一个闭合时,发光二极管点亮。

相关知识1、关系运算符作用:用来测试两个数据之间的大小关系。C51中的关系运算符如下:运算符含义优先级结合方向<小于优先级相同(第6级)从左向右>大于<=小于或者等于>=大于或者等于==测试等于优先级相同(第7级)!=测试不等于相关知识说明:(1)关系运算符的优先级高于赋值运算符“=”。(2)如果一个表达式中含有多个运算符,则先进行优先级高的运算,同级别的运算由结合方向确定运算的先后顺序,若结合方向是从左向右,则按从左至右的顺序进行运算,若结合方向是从右向左,则按从右至左的顺序进行运算。举例:a>b!=c //>的优先级高于!=,此式等价于(a>b)!=ca==b<=c //==的优先级低于<=,此式等价于a==(b<=c)a>b<=c 此式等价于(a>b)<=c相关知识关系表达式:用关系运算符将两个表达式连起来的式子关系表达式的值是一个逻辑值,给定条件成立时,关系表达式的值为1(真),否则为0(假)。举例:若a=3,b=2,c=1,则在a>b!=c中,a>b成立,值为1,1!=c不成立,值为0,故表达式的值为0。在f=a>b>c中,关系运算符的优先级高于赋值运算符“=”,表达式为赋值表达式,等价于f=((a>b)>c),a>b的值为1,1>c为假,值为0,“=”右边的关系表达式的值为0,故f=0。相关知识2、逻辑运算符共3种,如下表所示:运算符含义优先级结合方向!逻辑非(NOT)第2级从右向左&&逻辑与(AND)第11级从左向右||逻辑或(OR)第12级“&&”和“||”是双目运算符,要求有两个运算对象,它们的结合方向都是从左至右,“!”是单目运算符,只要求一个运算对象,其结合方向是从右至左,运算对象位于“!”的右边。相关知识2、逻辑运算符各运算符的优先级:相关知识运算符表达式运算法则&&a&&ba、b均为真时,表达式的值为真,其他情况下表达式的值为假。||a||ba、b均为假时,表达式的值为假,其他情况下表达式的值为真。!!aa为真时,表达式的值为假,a为假时,表达式的值为真。2、逻辑运算符逻辑运算法则相关知识①参加逻辑运算的表达式的值不为0,该表达式的值为真,仅当参加运算的表达式的值为0时,才将该表达式的值视为假。②在逻辑表达式的结果中,真用1表示,假用0表示。③C51在求解逻辑表达式时,如果前面的操作数可以确定表达式的值,则逻辑运算符后面的式子将不被求解。即:在a&&b中,若a=0,则不求解b,仅当a≠0时,才求解b。在a||b中,若a≠0,则不求解b,仅当a=0时,才求解b。举例,下列程序段执行后,a、b、c的值各为多少?unsigned char a=2,b=3,c;c=(a=4)||(b=5);答:a=4,b=3,c=12、逻辑运算符逻辑运算法则相关知识3、表达式语句与复合语句(1)表达式语句在一个表达式后面加上分号(;),一般形式如下:表达式;C51中,单独的一个分号(;)是一条空语句(2)复合语句用大括号{}将多条语句括起来就构成了具有一定功能的语句块。复合语句在程序中应该当成单条语句看待。举例:if(i<5) //1{ //2语句块开始

j=6; //3 k=i+4; //4} //5语句块结束相关知识4、if分支结构相关知识5、P2口的应用特性位结构控制C=1时,P2口作地址总线口使用。控制C=0时,P2口作普通I/O口使用。P2口既可以作普通的I/O端口使用,又可以作地址总线口使用。相关知识⑴P2口作普通的I/O口使用条件:单片机片外不扩展程序存储器、片外不扩展并行RAM也不扩展并行I/O芯片5、P2口的应用特性P2口的应用特性①输出驱动电路内接有上拉电阻,引脚上可以不接上拉电阻。②输出具有锁存功能,特殊功能寄存器P2是P2口的输出锁存器。③输入具有缓冲功能,读P2口的操作方法与P1口完全相同。相关知识⑵P2口作地址总线口使用条件:单片机的片外扩展了程序存储器、片外扩展并行RAM或者扩展并行I/O芯片时,P2口只能作地址总线口使用。5、P2口的应用特性特点:P2口用来输出高8位地址A15~A8。P2口的每一位端口可驱动4个LSTTL负载。单片机复位后,特殊功能寄存器P2=0xff,P2口处于普通I/O口状态。相关知识6、P3口的应用特性位结构P3端口是一个双功能I/O端口,各端口都具有两种功能选择,第一功能是作为通用的I/O口,如果P3口的某一位端口线上的第二功能没有启用,则该位端口线自动地处于第一功能状态,可以单独作普通的I/O口使用相关知识第一功能使用条件:端口线上的第二功能没有启用

6、P3口的应用特性特点:与P1口的作用相同输出具有锁存功能,输入具有缓冲功能,输入存在读引脚与读锁存器的区别,正确地读入引脚上的输入信号,必须先向端口写1,再读端口。

相关知识6、P3口的应用特性第二功能条件涉及的引脚第二功能串行口工作,接收数据P3.0RXD串行口工作,发送数据P3.1TXD打开外部中断0P3.2INT0打开外部中断1P3.3INT1定时/计数器0处于外部计数状态P3.4T0计数定时/计数器1处于外部计数状态P3.5T1计数写片外扩展RAM/扩展并行I/O芯片P3.6读片外扩展RAM/扩展并行I/O芯片P3.7相关知识作为输入时,不存在读引脚与读锁存器的区别,所读的数据是引脚上的信号,而不是锁存器的内容。P3口的每一位端口可驱动4个LSTTL负载。单片机复位后,特殊功能寄存器P3=0xff,P3口自动地处于作普通的I/O端口状态。任务实施1、搭建硬件电路电路图如下:任务实施2、编写软件程序(1)流程图任务实施2、编写软件程序#include <reg51.h>sbit s0=P2^0; //2开关S0接口定义:接P2.0口线sbit s1=P2^1; //3开关S1接口定义:接P2.1口线sbit led=P3^5; //4发光二极管接口定义:接P3.5口线void main(void) //5main函数{bit sw0,sw1; //6定义位变量sw0/sw1,用来保存S0/S1的状态while(1) //7while循环:永运为真,死循环(循环体为语句7至语句18) { //8while的循环体开始 s0=1; //9S0(P2.0)口线置高电平,准备读引脚输入 sw0=s0; //10读S0的输入至位变量sw0中 s1=1; //11S1(P2.1)口线置高电平,准备读引脚输入 sw1=s1; //12读S1的输入至位变量sw1中 if(sw0==sw1) //13若S0、S1的状态相同 { led=1; //14熄灭led(led=1) } //15 else //16不同 { led=0; //17则点亮led(led=0) } //18 } //19while的循环体结束} //20main函数结束应用总结与拓展文件包含是一种编译预处理命令。作用:在源程序中包含另一文件位置:一般放在源程序的开头处格式有两种格式一:#include <文件名>采用这种格式时,系统将到C51库函数的头文件所在的目录中(Keil目录中的inc子目录)中查找被包含的文件。格式二:#include “文件名”采用这种格式时,系统在指定的include目录中(默认为当前目录)寻找文件。主编:李文华“十二五”职业教育国家规划教材经全国职业教育教材审定委员会审定制作跑马灯任务要求单片机的P1口作输出口使用,控制8只发光二极管,使发光二极管呈跑马灯方式显示。所谓跑马灯方式显示,是指:设8只发光二极管依次为D0~D7,任何时刻都有且只有一只发光二极管被点亮显示,其中t0时间D0亮,t1时间D1亮,t2时间D2亮……,t7时间D7亮,t8时间D0亮……,如此反复,如下表所示。时间点亮的发光二极管时间点亮的发光二极管t0D7D6D5D4D3D2D1█t4D7D6D5█D3D2D1D0t1D7D6D5D4D3D2█D0t5D7D6█D4D3D2D1D0t2D7D6D5D4D3█D1D0t6D7█D5D4D3D2D1D0t3D7D6D5D4█D2D1D0t7█D6D5D4D3D2D1D0相关知识1、算术运算符运算符含义优先级结合方向-负号第2级从右向左++自加1--自减1*乘第3级向左向右/除%取余数+加第4级-减1、算运算符相关说明①负号(-)、自加(++)、自减(--)为单目运算符,其他运算符为双目运算符。②取余运算(%)要求两个运算对象均为字符型或整型(含长整型,下同)数据。③自加运算(++)与自减运算(--)的作用是使变量的值自加1或减1,这两个运算符只能用于变量,不能用于常量,它们可以用于变量之前,也可以用于变量之后,但两者的作用结果不同。i++(或者i--)的含义是,先使用变量i的值,然后使变量i加(减)1。++i(或者--i)的含义是,先对变量i加(减)1,然后使用i的值。

2、位操作运算运算符运算符含义优先级结合方向~对操作数按位取反第2级从右向左>>将操作数右移若干位第5级从左向右<<将操作数左移若干位&两操作数按位相与第8级^两操作数按位异或第9级|两操作数按位相或第10级说明:“~”是单目运算,其他5个运算符均为双目运算符参与运算的对象为整型或者字符型,不能是浮点型。

2、位操作运算运算法则位运算说明0&X=0X和0相与,结果为01&X=XX和1相与,结果不变0|X=XX和0相或,结果不变1|X=1X和1相或,结果为10^X=XX和0相异或,结果不变1^X=~XX和1相异或,结果为X的反~0=10的反是1~1=01的反是0<<、>>:将运算符左边的操作数的各位二进制位全部左移或右移若干位。移位后,空白位补0,舍弃溢出位。2、位操作运算按位运算的应用按位与:将一个变量的某些位清0,而保持其他位不变。方法:将变量和一个常数按位相与,常数按以下方法设置:保持不变的位取1,清0位取0。例

温馨提示

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

评论

0/150

提交评论