




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机知识学习手册项目一 单片机的认识一、单片机芯片引脚 89C51/89S51共有40个引脚,说明如下: 电源: VCC(40) - 芯片电源,接+5V VSS(20) - 接地端; 时钟:XTAL1(19)、XTAL2(18) - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG(30):地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN(29):外ROM读选通信号。 RST/VPP(9):复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPP功能:在Vcc掉电情况下,接备用电源。 (4) EA/VPP:内/外ROM选择/片内EPROM编程电源。89C51/89S51芯片用内部ROM(程序存储器),所以此引脚必须接高电平+5V.4. 输入输出口线 P0.0P0.7(3932) P0口8位双向口线 P1.0P1.7(18) P1口8位双向口线 P2.0P2.7 (2127) P2口8位双向口线 P3.0P3.7(1017) P3口8位双向口线其中P3中的各位有第二功能思考:判断第1脚的方法是什么?二、单片机的最小系统 能够让单片机工作的最小硬件电路,称为单片机最小系统。包括单片机芯片、电源电路、晶振电路、复位电路。1、电源电路 如果有现成的5V稳压电源,可直接把VCC脚与EA脚接+5V,然后把VSS脚接5V电源的地就可以了。如果没有现成的稳压电源,可通过220V交流电进行降压整流滤波稳压得到。2、复位电路 复位是指单片机的初始状态,当单片机刚上电时,单片机应在初始状态。有时程序执行过程中会出现动作乱的现象,也可让单片机复位一下,让程序从头开始执行。单片机复位后,各特殊功能寄存器的初始状态教材。复位电路的工作原理是一个RC电路的充电过程,因单片机的复位是高电平复位,必须在RST引脚上保持两个机器周期以上的高电压才能让单片机可靠复位,所以上图中的电阻及电容的大小要选择合适。复位过程是:当刚接上电源时,+5V通过22UF的电容及10K的电阻进行充电,电容相当于短路,所5V直接加到RST引脚上而复位,称之为上电复位,过一段时间,电容充电完毕,流过10K的电阻的电流为零,RST引相当于与地(低电平)接在一起,单片机在工作状态。当在程序执行过程中要进行复位时,可按下按键K1,RST为高电平而复位。3、晶振电路如右上图所示,晶振电路主要由晶振(12MHZ)与两个电容(30PF左右)组成,为单片机提供时钟脉冲。三、单片机中数的使用 十进制数 主要特点: 基数是10。有10个数码(数符)构成: 0、1、2、3、4、5、6、7、8、9。 进、借位规则是“逢十进一、借一当十”。【例】 1234.56= 1103+2102+3101+4100+510-1+610-2= 1000+200+30+4+0.5+0.06 上述,103、102、101、100、10-1、10-2 称为十进制数各数位的 “ 权 ” 二进制数 主要特点: 基数是2。只有两个数码:0 和 1。 进、借位规则是“逢二进一、借一当二”。 每左移一位,数值增大一倍;右移一位,数值减小一半。 二进制数用尾缀B作为标识符。 【例】 111.11B= 122 +121 +120 +12-1+12-2= 7.75 其中,22、21、20、2-1、2-2 称为二进制数各数位的“ 权 ” 十六进制数 主要特点: 基数是16。共有16个数符构成: 0、1、9、A、B、C、D、E、F。其中, A、B、C、D、E、F 代表的数值分别为 10、11、12、13、14、15。 进、借位规则是“逢十六进一、借一当十六”。 十六进制数用尾缀H表示。在C51中十六进制数“0X”开头的。【例】0XA3.4 = 10161+3160+416-1 = 160+3+0.25 = 163.25 其中,163、162、161、160、16-1、16-2 称为十六进制数各数位的“权”。 十六进制数、二进制数和十进制数对应关系表十进制数十六进制数二进制数十进制数十六进制数二进制数00X000000B110X0B 1011B10X010001B120X0C 1100B20X02 0010B130X0D 1101B30X03 0011B140X0E 1110B40X04 0100B150X0F 1111B50X05 0101B160X10 0001 0000B60X06 0110B170X11 0001 0001B70X07 0111B180X12 0001 0010B80X08 1000B190X13 0001 0011B90X09 1001B200X14 0001 0100B100X0A 1010B210X15 0001 0101B二、数制转换 二进制数与十六进制数相互转换 二进制数转换成十六进制数 整数部分: 自右向左,四位一组,不足四位,向左填零,各部分用相应的十六进制数替代;例0101 1010B=0X5A 11110101B=0XF5 1101010B=0X 10111B=0X 1011011B=0X 1011000B=0X 小数部分: 自左向右,四位一组,不足四位,向右填零,各部分用相应的十六进制数替代;如:0.1101B=0.D 0.1010B=0X 0.11101B=0X 十六进制数转换成二进制数每一位十六进制数分别用相应4位二进制数替代。十六进制数二进制数十六进制数二进制数0X0 0000B0X8 1000 B0X1 0001 B0X9 1001 B0X2 0010 B0XA 1010 B0X3 0011 B0XB 1011 B0X4 0100 B0XC 1100 B0X5 0101 B0XD 1101 B0X6 0110 B0XE 1110 B0X7 0111 B 0XF 1111 B如16H=0001,0110B 0X1FF=0001,1111,1111B 0X4F=0100,1111B0X16.D=0001,0110.1101B 0X89= B 0XF8= B0XED= B 0XBC= B 十进制数转换成二进制数、十六进制数 整数部分的转换 十进制整数转换成二进制整数的方法: 十进制数整数转换成十六进制数的方法:除2取余法 除16取余法 如48D(十进制)= 110000B(二进制数) 323D(十进制)= 143H(十六进制数) 小数部分的转换 十进制小数转换成二进制小数的方法:将小数部分乘2取整数法0.75D(十进制数)= 0.11B 4、二进制数运算(1) 二进制数加法运算 规则:0 + 0 = 0,0 + 1 = 1 + 0 = 1, 1 + 1 = 0(向高位进1):运算对象在运算符的右边功能:对运算对象的各二进位按位求反,即使每一位上的0变1;变1为0。 14:即0 0 0 0 1 1 1 0 B按位求反得00001110 11110001:左移 例如:a :右移例如:a2功能:把a的各二进位向右移动2位若a= 0000000000001111(十进制15),右移2位后为0000000000000011(十进制3)。00000000000011110000000000000011有符号数与无符号数 有符号数:最高位为符号位,最高位为“0”表示正数,最高位为“1”表示负数。 00001010B表示是正数(+10),而10010001B表示负数。 无符号数:最高位不作为符号位,而当成数值位。二进制数有原码、反码与补码三种编码形式 原码:二进制数的原形,可为无符号数,也可有符号数。 8位无符号数原码范围:00000000B1111 1111B(0FFH或0255) 8位有符号数原码范围:1111 1111B0111 1111B(FFH7FH或-127+127) 反码: 正数的反码与原码相同; 负数的反码,符号位不变,数值部分按位取反。 如: 原码:1000 0100B反码1111 1011B 补码: 正数的补码与原码相同; 负数的补码,符号位不变,数值部分按位取反再在(右边最低位)加1。 如: 原码:1000 0100B反码:1111 1011B1补码:1111 1100B 补码的用途:将减法运算转换为加法运算。三、单片机内部结构单片机内部包括有:一个CPU,两个定时/计数器T1、T0,4KB的程序存储器,128B(字节)的数据存储器,中断系统,串行通信口,4个并行I/O口。1、存储器的结构单片机中的数据以8位二进制数为一个单元进行存储的,所以存储器的结构以8位二进制数为一个单元,一个单元就象一层有8位房间的楼层,每个房间只能存放0或1 (1) 程序存储器 ROM89S51单片机内部有4KB的程序存储器,用于存放用户编写的程序。单元地址从0000H到0FFFH,在一般的单片机控制系统中一般是够用的,如果不够用,可外加芯片扩展到64KB。(2)数据存储器 RAM89S51单片机内部有256B(字节/含特殊功能寄存器)的数据存储器,用于存放运算过程中产生的中间结果。如果不够用,可外加芯片扩展到64KB为了方便数据存储器的使用,又将它分成几个区1)工作寄存器区:地址从00H到1FH,共32个存储单元。单片机复位后,默认选择0区,工作区的选择由程序状态字PSW中的RS1、RS0两位设置。PSW程序状态字的各位定义D7D6D5D4D3D2D1D0CYACF0RS1RS0OV-P各位的说明在教材11页,请阅读。工作寄存器区的选择方法RS1RS0区号000区011区102区113区 2)位寻址区:地址从20H到2FH共16个单元,见教材15页的表1.3,在这16个单元中的每一位均有一个地址与它对应。 3)堆栈和数据缓冲区:地址从30H到7FH,本区主要由用户存放数据。当然工作寄存器、位地址区在没有被用时也可用来存放用户数据。 4)特殊功能寄存器区:地址从80H到FFH,特殊功能寄存器区是分散的,见教材的15页表1.4。在特殊功能寄存器中,如果地址能被8整除,则可进行位操作。如P1口的地址为90H,90H=9X16=144 1448=18 所以可用 P1.0=1 将P1.0置1或 P1.2=1 清零Keil 软件的使用一、软件启动 在桌面上双击,或在开始程序。二、界面图1、首先建立一个工程点击ProjectNew Project 如下图所示。则会出现如下图。注意工程保存在什么位置(要方便自己查找),输入文件,保存类开会自动生成,不用管,然后点保存,则会出如下图则会出现。则出现可点是或否,影响不大。则会出现: 这样应建立了一个新的工程。可在保存的位置找工程文件名。2、建立一个汇编语言文件。点击FileNew,如下图所示则出现Text1为文件名,先要保存一下。选为文件保存的位置,文件名要注意一下,用汇编语言编写则后缀(扩展名)为.ASM,如果用C语言编写则为.C。设置好后点击保存,则程序文件应建立好了。在保存的位置可找到该文件。3、程序录入编辑及编译(1)在程序编辑区录入程序(2)将程序文件添加到工程文件中右键单击Source Group1如下图则出现点击,Add Files to Group Source Group 1 则出现如下图 选好文件类型为 C Source file (*.C),再在保存位置中找到刚才编辑好的程序文件,然后点Add即可。(3)必要的参数设置点击 ProjectOption for Target 则会出现如下图:在Target 选项卡中设置好晶振频率。再选Output选项卡,如下图:设置好各项后点击确定,必要的参数应设置完毕。(4) 程序编译检查点击ProjectBuild target files 如下图所示则在界面的最下面出现指示:如果有错误要改正程序的错误,再进行编译,一直到没有错误为止,要生成HEX文件,我们才能下载到单片机中。程序下载到单片机的程序应用1、启动软件:在桌面找到图,双击将会出现如下图必须要选择正确的端口及单片机型号,然后调入从KEIL C51编译生成的HEX文件。2、调入HEX文件:左键单击调入FLASH,如下图所示:X将会出现HEX文件选择窗口:选择正确文件后,点打开,则出现如下图3、将HEX文件下载到单片机芯片选择正确后,检查单片机是否连接好,准备好后就点击自动,则会出现如下图,程序下载完成后,就会看到单片机板上LED灯在点亮了。如果要修改源程序,一定要重新编译,重新调入HEX文件,重新将HEX文件下载到单片机芯片上,才能反映出修改后的程序是否正确。如果下面的提示框出现表示USBASP 驱动文件安装有问题。如果下面的提示框出现, 请检查USB连接线, ISP连接线和开发板的电压。项目二 单片机控制8位发光二极管一、发光二极管(LED)工作原理 LED的符号图及电路图 工作原理:当LED的阳极加正电压,阴极加负电压,就有电流流过LED,则会发光。实训板控制LED的电路图。从上图可看出,由于二极管的阳极已接上了+5V,所以只要在阴极接地(0V)就可以发光。由于阴极接的是P1口,所以只要P1口的某一位输出二进制的0,对应的二极管就发光。 如:当P1=F0H时,则LED1,LED2,LED3,LED4亮,只要执行指令: #include/包含头文件,该文件定义了特殊功能寄存器void main() / 主函数 /花括号开头P1=0xF0;/P1(P1要大写)口低4位LED亮当需要LED1,LED3,LED5,LED7亮时,P1中各位的电平是(1表示高电平,0表示低电平)分别用二进数与十六进制数表示:当需要LED2,LED4,LED6,LED8亮时,P1中各位的电平是(1表示高电平,0表示低电平)分别用二进数与十六进制数表示:当需要LED1,LED2,LED3,LED8亮时,P1中各位的电平是(1表示高电平,0表示低电平)分别用二进数与十六进制数表示:当需要LED1,LED2,LED3,LED4亮时,P1中各位的电平是(1表示高电平,0表示低电平)分别用二进数与十六进制数表示:二、延时函数(程序)第一种方法: void delay (unsigned int t)unsigned int i;for(;t0;t- -) for (i=1;i124;i+);第二种方法: void delay (unsigned int t)unsigned char i;while(t- -) for (i=0;i124;i+);学习体验例子一用C51编程实现LED1到LED8循环点亮(跑马灯)#include /头文件包含#define uchar unsigned char /定义无符号字符型数据用uchar 代替unsigned char#define uint unsigned int /定义无符号整型数据用 uint代替unsigned intsbit P10=P10;/用P10定义单片机的1号引脚(P10;字母要大写)sbit P11=P11; /用P11定义单片机的2号引脚(P11;字母要大写)sbit P12=P12;sbit P13=P13;sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17; /用P17定义单片机的8号引脚(P17;字母要大写)/下面是延时子程序void delay(unsigned int t) uchar i; while(t-) for(i=0;i120;i+); /下面是主函数,整个程序中有且只有一个主函数 void main() while(1) /一直执行以下程序 P10=0;/LED0亮delay(600);/调用延时函数,括号内的600要与uint x类型对应 P10=1;/LED0灭 P11=0;/LED1亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P11=1;/LED1灭 P12=0;/LED2亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P12=1;/LED2灭 P13=0;/LED3亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P13=1;/LED3灭 P14=0;/LED4亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P14=1;/LED4灭 P15=0;/LED5亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P15=1;/LED5灭 P16=0;/LED6亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P16=1;/LED6灭 P17=0;/LED7亮delay(600);/调用延时函数,括号内的600要与uint x类型对应P17=1;/LED7亮 修改delay(600)延时函数中的数据如改为100或800,发现什么问题?说明什么问题?拓展任务:1、若要实现LED8到LED1循环点亮,应如何修改程序?2、若要实现LED1、LED2、LED3、 LED4亮灭两,再到LED5、LED6、LED7、 LED8亮灭两次,应如何修改程序? 项目三 C51编程基础一、C51程序的基本结构以P1.0控制LED闪烁程序为例说明 #include /头文件包含,定义特殊功能寄存器 #define uchar unsigned char /定义用uchar表示unsigned char #define uint unsigned int /定义用uint表示unsigned int sbit LED=P10; /定义用LED=P10(P1.0)/下面是定义延时函数 void DelayMS(uint x) /括号内的uint x为形式参数 uchar i; /定义i为无符号(uchar)变量8位二进数 while(x-) /while 循环语句 for(i=0;ib _above $123 4、变量概念:其值可以改变的量变量名与变量值 变量定义的一般格式: 数据类型 变量1,变量2,变量n;四、算术运算符和算术表达式1、基本算术运算符: 加:+ ; 减: -; 乘: * ; 除: / ; 求余: % 两整数相除,结果为整数 %是求余运算,要求两侧均为整型数据 例 5/2 = 2 -5/2.0 = -2.5 例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () 2、自增、自减运算符 + - 作用:使变量值加1或减1 种类: 前置 +i, - -i (先执行i+1或i-1,再使用i值) 后置 i+,i- - (先使用i值,再执行i+1或i-1)例: j=3; k=+j; /k=4,j=4 j=3; k=j+; /k=3,j=4 j=3; printf(“%d”,+j); /4 j=3; printf(“%d”,j+); /3 a=3;b=5;c=(+a)*b; /c=20,a=4 a=3;b=5;c=(a+)*b; /c=15,a=43、简单赋值运算符 符号: = 格式: 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量4、复合赋值运算符种类:+= -= *= /= %= = = &= = |= 5、位运算符 种类: & | 位运算:对运算对象按二进制位进行操作。 位运算对象:只能是整型或字符型数据,不能是其他类型的数据,其运算结果仍是整型或字符型数据:运算对象在运算符的右边 功能:对运算对象的各二进制位按位求反, 即使每一位上的0变1;变1为0。例 9:运算结果为-10 9的二进制表示:0000000000001001 按位求反后为:1111111111110110即:-10 :左移 例如:a :右移 例如:a2 功能:把a的各二进制位向右移动2位 若a= 0000000000001111(十进制15),右移2位后为0000000000000011(十进制3)。 “&”:按位与例如: 9&(-5) 00000000 00001001 (9的二进制补码) & 11111111 11111011 (-5的二进制补码)=00000000 00001001 (9的二进制补码)可见9&(-5)=9。 “|”:按位或例如: 9 |(5) 00001001 (9的二进制补码) | 00000101 (5的二进制补码) = 00001101 (十进制为13) “”:按位异或例如: 9(5) 00001001 (9的二进制补码) 00000101 (5的二进制补码) = 00001100 (十进制为12)6、关键字 auto :声明自动变量 short :声明短整型变量或函数 int: 声明整型变量或函数 long :声明长整型变量或函数 float:声明浮点型变量或函数 double :声明双精度变量或函数 char :声明字符型变量或函数 struct:声明结构体变量或函数 union:声明共用数据类型 enum :声明枚举类型 typedef:用以给数据类型取别名 const :声明只读变量 unsigned:声明无符号类型变量或函数 signed:声明有符号类型变量或函数 extern:声明变量是在其他文件中声明 register:声明寄存器变量 static :声明静态变量 volatile:说明变量在程序执行中可被隐含地改变 void :声明函数无返回值或无参数,声明无类型指针 if:条件语句 else :条件语句否定分支(与 if 连用) switch :用于开关语句 case:开关语句分支 for:一种循环语句 do :循环语句的循环体 while :循环语句的循环条件 goto:无条件跳转语句 continue:结束当前循环,开始下一轮循环 break:跳出当前循环 default:开关语句中的“其他”分支 sizeof:计算数据类型长度 return :子程序返回语句(可以带参数,也可不带参数)循环条件项目四 C51基本语句应用一、if语句的三种形式 形式一: 格式:if (表达式) 语句组; 形式二 格式:if (表达式) 语句1; else 语句2; if 语句的应用 用if语句实现,当按键P3.2按下(P320)时P1口的LED1到LED8循环点亮,未按下(P321)时P1口LED1到LED8全亮全灭闪烁。 程序内容包括: 1、头文件包含 2、数据类型定义 3、主函数 (1)LED1到LED8循环点亮。 (2)LED1到LED8全亮全灭闪烁。#include/包含头文件#define uchar unsigned char/定义用 uchar代替 unsigned char#define uint unsigned int/定义用 uint代替 unsigned intsbit P3_2=P32;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;void DelayMS(uint x)/延时程序 uchar i; while(x-) /决定延时时间参数for(i=0;i120;i+); main()if(P3_2=0)/P3.2鍵被按下时执行时执行下面大括号的内容 P1_0=0;/LED1亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 P1_0=1; P1_1=0; /LED2亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_1=1; P1_2=0; /LED3亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_2=1; P1_3=0; /LED4亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_3=1; P1_4=0; /LED5亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_4=1; P1_5=0; /LED6亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_5=1; P1_6=0; /LED7亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_6=1; P1_7=0; /LED8亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_7=1;DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 if(P3_2=1) / P3.2鍵未被按下时执行时执行下面大括号的内容P1=0X00;/全亮DelayMS(600);/延时P1=0XFF;/全灭DelayMS(600);/延时二、While 循环语句 格式: while(表达式) 循环体语句; 1、While 语句的应用 用while语句实现,当按键P3.2按下(P320)时P1口的LED1到LED8循环点亮,未按下(P321)时P1口时LED1到LED8全亮全灭闪烁。 #include/包含头文件#define uchar unsigned char/定义用 uchar代替 unsigned char#define uint unsigned int/定义用 uint代替 unsigned intsbit P3_2=P32;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;void DelayMS(uint x)/延时程序 uchar i; while(x-) /决定延时时间参数for(i=0;i120;i+); main()while(P3_2=0)/P3.2鍵被按下时执行时执行下面大括号的内容 P1_0=0;/LED1亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 P1_0=1; P1_1=0; /LED2亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_1=1; P1_2=0; /LED3亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_2=1; P1_3=0; /LED4亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_3=1; P1_4=0; /LED5亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_4=1; P1_5=0; /LED6亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_5=1; P1_6=0; /LED7亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_6=1; P1_7=0; /LED8亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_7=1;DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 while(P3_2=1)/ P3.2鍵未被按下时执行时执行下面大括号的内容P1=0X00;DelayMS(600);P1=0XFF;DelayMS(600);2、do while循环语句 特点: 先执行一次,再判断。 至少执行一次。 do 循环体语句; while(表达式); 用do while循环语句实现当按键P3.2按下(P320)时LED1到LED8循环点亮,未按下(P321)时LED1到LED8全亮全灭闪烁。#include/包含头文件#define uchar unsigned char/定义用 uchar代替 unsigned char#define uint unsigned int/定义用 uint代替 unsigned intsbit P3_2=P32;sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;void DelayMS(uint x)/延时程序 uchar i; while(x-) /决定延时时间参数for(i=0;i120;i+); main()do/P3.2鍵被按下时执行时执行下面大括号的内容 P1_0=0;/LED1亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 P1_0=1; P1_1=0; /LED2亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_1=1; P1_2=0; /LED3亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_2=1; P1_3=0; /LED4亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_3=1; P1_4=0; /LED5亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_4=1; P1_5=0; /LED6亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_5=1; P1_6=0; /LED7亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_6=1; P1_7=0; /LED8亮DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应P1_7=1;DelayMS(600);/调用延时函数,括号内的600要与uint x类型对应 while(P3_2=0);/ P3.2鍵未被按下时执行时执行下面大括号的内容if(P3_2=1)P1=0X00;/全亮DelayMS(600);/延时P1=0XFF;/全灭DelayMS(600);/延时该程序在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辅警礼仪的意义
- 农业银行2025常州市小语种岗笔试题及答案
- 邮储银行2025辽源市笔试行测高频题及答案
- 工商银行2025无锡市秋招笔试创新题型专练及答案
- 建设银行2025镇江市结构化面试15问及话术
- 2025年3D打印的医疗器械开发
- 2025年3D打印的3D打印材料技术
- 辅导员任职知识培训课件
- 中国银行2025秋招笔试专业知识题专练及答案辽宁地区
- 邮储银行2025平顶山市数据分析师笔试题及答案
- GB/T 3600-2000肥料中氨态氮含量的测定甲醛法
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- 电商客服培训考试
- 仿生科技课件
- 医师多点执业注册申请表
- 《边坡稳定性分析》课件
- 刮板输送机-课件
- 深信服防火墙技术方案
- 福建省福州市各县区乡镇行政村村庄村名明细及行政区划代码
- 临床医学晕厥课件
- 临床路径病种目录
评论
0/150
提交评论