已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机听课笔记1-8课-金沙滩工作室2014年更新Lesson 1:1、 用公司用的单片机/视频用的单片机2、 书是用来查的。3、 单片机方面不怎么需要软件仿真4、 KEIL软件安装 (keil c51)30分钟-35分钟双击nextnext默认路径next1,2,3,email格式next自动安装去掉三个选项的finish。桌面上出现KEIL快捷方式。5、 文字大小,文字颜色的设定:editconfigurationcolour&font:editor c files只需要修改text, text selection,number,keyword,string即可。6、 下载软件stc-isp-v480.se win7系统第一次打开,右键,以管理员身份运行一次。7、 三傻大闹好莱坞:追求卓越,成功就会在不经意间追上你。Lesson2:1、51单片机:兼容intel的MCS-51体系架构的一系列单片机2、STC89C52RC-学习板上的第一个单片机。3、单片机最小系统:电源电路、晶振电路(20PF起振电容,帮助晶振起振,并维持震荡信号的稳定)、复位电路(0.1uF, 18R, 4.7K)。4、单片机复位一般用三种:上电复位,手动复位,程序自动复位。5、单片机原理图引脚位置与封装图可以不一样。6、贴片发光二极管限流电阻的选用。7、sfr P0 = 0X80,告诉我们编程软件P0在0X80的位置上,查手册可得。8、打开KEIL软件projectnew project 选择路径写工程名,不需写扩展名旧:选择单片机型号NXPP89V51 copy,否新建文件filenew保存给文件起名led.c新:选择单片机型号intel随便一个 copy,是新建文件filenew保存给文件起名led.c9、#include及函数名后不需要加分号。10、单片机编程是根据硬件编程,不同的板子,程序可能不一样。11、target 1右边的target optionstarget11.0592M, outputcreat hex选项框选中,点击ok,编译,连接就可生成hex文件。12、hex文件大小的看法:在编译连接之后,build output对话框里看。 Program size: data = 9.0 xdata = 0 code = 29 表示:其中data,xdata指RAM,两项加起来就是内存的值:0+9=9字节。code指占程序存储空间的值:29个字节。13、点亮小灯的程序# includesbit LED = P00;sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;LED = 0;while(1);14、安装usb-串口的驱动;查找COM口。我的电脑设备管理器。选择单片机型号打开hex文件选择使用的COM口波特率默认下次冷启动选择:与下载无关(STC89C52RC冷启动单片机)先点下载后上电。作业:3.了解KEIL软件 的基本用法和单片机编程流程,能够独立完成编程下载等基本操作。Lesson 3:硬件基础学习1、 电磁干扰EMI, 电磁兼容EMC2、 低频滤波电容:去除电源低频纹波,稳定电源作用。铝电解电容、钽电容(有色标的一端为正极,性能好)、陶瓷电容。3、 高频滤波电容:对高频短路,可滤去高频干扰。(104 = 0.1uF)4、 电容选取两个主要参数:耐压值、容值。5、 三极管的功能:开关控制(100IbIe,则工作在饱和状态)、信号放大、电平转换。6、 三八译码器: 74HC138 地址输入端c/b/a及E3使能端接4.7K电阻上拉。7、 双向缓冲器:74HC245 DIR为高,AB;输入端接4.7K上拉电阻。8、 保存过后的c文件,文件名旁边没有。作业:4、能够独立点亮开发板上的每一个小灯,并且可以实现小灯亮和灭以及闪烁。Lesson 4 C语言基础以及流水灯实现1、进制2、C语言变量类型及范围 Unsigned char 0-255 signed char -128127 Unsigned int 0-65535 signed int -32768-32767 Unsigned long 0-4294967275 signed long -2147483648-2147483647 Float -3.410-383.410-38 double:C51里等同于float 能用一个字节的变量能完成的工作,不要用两个字节变量。3、C语言基本运算符 + - * / %(取余) + - = = !=4、for语句的用法(作延时,作循环运算) 一、for(表达式1; 表达式2; 表达式3) (需要执行的语句) 执行顺序:1,2,4,3, 2,4,3, 2,4,3 二、for(i= 0 ; i30000; i+); 是用法一的特殊情况,相当于执行语句为不执行。 三、for(;) 相当于while(1)5、while语句的用法 一、while(条件表达式) 循环语句;6、函数名的类型,就是return值的类型。Void main() void表示函数名,无返回值,int main(),返回值为整型。7、变量在使用之前,先定义。8、51单片机延时常用方法: 非精确延时:for(I = 0 ; i100; i+); I = 100; while(i-); 精确延时:用定时器定时 利用库函数-nop-();9、肉眼分辨率:20ms一下看不到闪烁;50ms间隔能清楚看见亮灭。10、软件仿真: 先设置target optionstarget11.0592M, debug选中use simulatorok 点击 start debug session 图标,进入仿真界面。 设置断点:双击,若设置不了target optionsC51level,设置优化登记一般选8。 RST 复位 run全速运行。然后看时间情况。(50分钟附近)11、程序一:小灯的闪烁 (视频位置与笔记顺序不一致)# includesbit LED = P00;sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()unsigned int i = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;LED = 0;for(;)/while(1)LED = 0;for(i = 0; i20000; i+);LED = 1;for(i = 0; i20000; i+);12、程序二:流水灯程序(法一)# includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()unsigned int i = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;while(1)P0 = 0XFE;for(i = 0; i30000; i+);P0 = 0XFD;for(i = 0; i30000; i+);P0 = 0XFB;for(i = 0; i30000; i+);P0 = 0XF7;for(i = 0; i30000; i+);P0 = 0XEF;for(i = 0; i30000; i+);P0 = 0XDF;for(i = 0; i30000; i+);P0 = 0XBF;for(i = 0; i30000; i+);P0 = 0X7F;for(i = 0; i30000; i+);13、移位指令()、取反指令()。14、程序二:流水灯程序(法二)# includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()unsigned char cnt = 0;unsigned int i = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;while(1)P0 = (0x01cnt+);for(i = 0; i= 8)cnt = 0;作业:4、独立完成流水灯右移操作。5、独立完成左移到头,接着右移,右移到头,接着左移的程序。Lesson 5 定时器和数码管基础1、逻辑运算 逻辑与:& 逻辑或:| 逻辑非:! 按位与:& 按位或:| 按位取反: 按位异或: 0b11001100 |0b11110000 等于0b11111100 2、数字电路常用符号3、机器周期是定时器的计数周期,打开定时器后,每经过一个机器周期,定时器“存储寄存器”的值加1。8位定时器存储的值的范围:0-225 16位定时器0-655354、标准51里有两个定时器:T0和 T1。5、定时器/计数器模式示意图。5、使用定时器的方法一、设置TMOD(模式寄存器M1、M0位,常用模式1、模式2自动重装),配置好工作模式 例如:TMOD = 1;二、设计数寄存器 TH0 、TL0的初值。例如:TH0 = 0XB8; TL0 = 0X00;定时20ms TH0 = 0XB8; TL0 = 0X00; 定时1ms三、设TCON(控制寄存器 TF位,TR位),通过TR0置1来让定时器开始计数 例如:TR0 = 1;四、判断TCON寄存器的TF0位,检测定时器的溢出情况。计算计数寄存器初值的方法:12*(65536-X)/11059200 = 20ms6、1s闪烁一次的小灯程序#includesbit LED = P00;sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()unsigned char cnt = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;TMOD = 0x01;TH0 = 0XB8;TL0 = 0X00;TR0 = 1;while(1)if(TF0 = 1)TF0 = 0;TH0 = 0XB8;TL0 = 0X00; /定时20mscnt+;if(cnt = 50)cnt = 0;LED = LED;7、数码管分: 位、段(A/B/C/D/E/F/G/DOP)两个概念 8、第一个数码管显示“1”的程序#includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main()unsigned char cnt = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 0; ADDR1 = 0; ADDR0 = 0;P0 = 0XF9;while(1);9、 1位数码管从1-F(每隔1秒加1)#includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code ledchar = 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e;void main()unsigned char cnt = 0;unsigned char sec = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 0; ADDR1 = 0; ADDR0 = 0;TMOD = 1;TH0 = 0XB8;TL0 = 0X00;TR0 = 1;while(1)if(TF0 = 1)TF0 = 0;TH0 = 0XB8; TL0 = 0X00;cnt+;if(cnt= 50)cnt = 0;P0 = ledcharsec;sec+;if(sec= 16)sec = 0;作业:1、 熟练掌握单片机定时器的原理和应用方法2、 通过研究定时器模式1的示意图,自己打开STC89C52RC手册的定时器部分,独立研究模式0,模式1,模式2,和模式3的示意图,锻炼研究示意图的能力。3、 使用定时器实现延时,完成左右移动的流水灯程序。4、 了解数码管的原理,掌握数码管的真值表计算方法。5、 编程实现数码管静态显示秒表的倒计时。Lesson 6 中断与数码管动态显示1、 if语句的用法(1) if (条件表达式)语句1; 只判断一次,只执行一次,然后执行下面的程序。(2) if (条件表达式)语句1;else语句2;(3)if(表达式1) 语句1; elseif(表达式1) 语句1;elseif(表达式1) 语句1;else 语句n 一旦有一个为真,执行完相应语句后,跳出if语句。2、 switch语句的用法法一:Switch(表达式)Case 常量表达式1:语句1; Case 常量表达式2:语句2;Case 常量表达式n:语句n;Default: 语句n+1; 法二: Switch(表达式)Case 常量表达式1:语句1; break;Case 常量表达式2:语句2; break;Case 常量表达式n:语句n;break;Default: 语句n+1;break;3、动态显示 利用人肉眼的视觉暂留现象(余晖效应) 10ms以内必须重新刷新同一个数码管。 ENLED ADDR3 选中 ADDR2 ADDR1 ADDR0 切换 4、6位显示的秒表程序(if语句)#includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code ledchar = 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e;unsigned char ledbuff6 = 0xff,0xff,0xff,0xff,0xff,0xff;/初始值 0XFFvoid main()unsigned int cnt = 0;unsigned long sec = 0;unsigned char i = 0;ENLED = 0;ADDR3 = 1;TMOD = 0X01;TH0 = 0XFC;TL0 = 0X67;TR0 = 1;while(1)if(TF0 = 1)TF0 = 0;TH0 = 0XFC;TL0 = 0X67;cnt+;if(cnt=1000)cnt = 0;sec+;ledbuff0 = ledcharsec%10;ledbuff1 = ledcharsec/10%10;ledbuff2 = ledcharsec/100%10;ledbuff3 = ledcharsec/1000%10;ledbuff4 = ledcharsec/10000%10;ledbuff5 = ledcharsec/100000%10; /if(i = 0)ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i+; P0 = ledbuff0;else if (i = 1)ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i+; P0 = ledbuff1;else if (i = 2)ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; i+; P0 = ledbuff2;else if (i = 3)ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i+; P0 = ledbuff3;else if (i = 4)ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i+; P0 = ledbuff4;else if (i = 5)ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i = 0; P0 = ledbuff5;5、6位显示的秒表程序(switch语句)#includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code ledchar = 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e;unsigned char ledbuff6 = 0xff,0xff,0xff,0xff,0xff,0xff;/初始值 0XFFvoid main()unsigned int cnt = 0;unsigned long sec = 0;unsigned char i = 0;ENLED = 0;ADDR3 = 1;TMOD = 0X01;TH0 = 0XFC;TL0 = 0X67;TR0 = 1;while(1)if(TF0 = 1)TF0 = 0;TH0 = 0XFC;TL0 = 0X67;cnt+;if(cnt=1000)cnt = 0;sec+;ledbuff0 = ledcharsec%10;ledbuff1 = ledcharsec/10%10;ledbuff2 = ledcharsec/100%10;ledbuff3 = ledcharsec/1000%10;ledbuff4 = ledcharsec/10000%10;ledbuff5 = ledcharsec/100000%10; /P0 = 0XFF;/消除鬼影操作。switch(i)case 0:ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i+; P0 = ledbuff0; break;case 1:ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i+; P0 = ledbuff1;break;case 2:ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; i+; P0 = ledbuff2;break; case 3:ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i+; P0 = ledbuff3;break;case 4:ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i+; P0 = ledbuff4;break;case 5:ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i = 0; P0 = ledbuff5;break;default:break;6、 使用中断实现秒表程序(中断)#includesbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code LedChar=0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E;unsigned char LedBuff6=0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF;unsigned int cnt = 0;void main()unsigned long sec = 0;ENLED = 0;ADDR3 = 1;TMOD = 0x01;TH0 = 0xFC;TL0 = 0x67;TR0 = 1;EA = 1;ET0 = 1;while(1) if(cnt = 1000)cnt = 0;sec+;LedBuff0 = LedCharsec%10;LedBuff1 = LedCharsec/10%10;LedBuff2 = LedCharsec/100%10;LedBuff3 = LedCharsec/1000%10;LedBuff4 = LedCharsec/10000%10;LedBuff5 = LedCharsec/100000%10; unsigned char i = 0; void InterruptTimer0() interrupt 1 TH0 = 0xFC;TL0 = 0x67;cnt+;P0 = 0xFF;/消隐switch(i)case 0: ADDR2=0; ADDR1=0; ADDR0=0; i+; P0=LedBuff0;break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i+; P0=LedBuff1;break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i+; P0=LedBuff2;break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i+; P0=LedBuff3;break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i+; P0=LedBuff4;break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff5;break;default:break;7、 数码管不亮的地方发暗,数码管鬼影怎么解决?秒表加1时,显示抖动怎么解决?消除鬼影:见程序二上面黄色部分。显示抖动:使用中断消除。8、 中断优先级(固有优先级)中断函数编号中断名称中断标志位中断使能位中断向量地址默认优先级0外部中断IE0EX00x00031(最高)1T0TF0ET00x000B22外部中断IE1EX10x001333T1TF1ET10x001B44UARTTI/RIES0x002355T2TF2/EXF2ET20x002B69、中断58分钟后。 进入中断条件:第一打开中断、符合中断条件 、中断入口正确。10、 中断使能寄存器:IE 可位寻址。关注:EA、ET0位。11、 中断向量地址:决定中断入口号 x*8 +3 = 中断向量地址。 定时器0:中断入口号1;定时器1,中断入口号3。作业:3、 彻底理解中断的原理和应用方法,关闭教程自己把本章节程序编写完毕,下载实践。4、 尝试修改程序,只显示有效位5、 尝试写一个从999999开始倒计时的程序,通过改用定时器T1的中断来完成。Lesson 7 变量进阶与LED点阵(点阵部分需要完善)1、 变量的作用域 (1) 局部变量:只在函数内部使用的变量(2) 全局变量:2、 全局变量的副作用:A, 降低函数的独立性修改,对任何一个函数的修改,都可能影响其他函数。B, 降低函数的通用性不利于函数重复调用C, 降低程序的清晰度-每个函数执行,都可能改变全局变量的值。D, 全局变量永久占据内存。3、 原则:能用局部变量,就不用全局变量。全局变量和局部变量同名,在局部变量作用域范围内,局部变量有效。4、 变量的存储类别:自动变量:函数中的局部变量,如不加static关键字修饰,都属于自动变量,也叫做动态变量。静态变量:所有全局函数都属于静态变量,局部变量如果加了static 关键字修饰,也是静态变量。5、 点阵取模软件的用法A,新建图像:8*8,B,模拟动画:放大格点值最大,画图,选中的点为灭,白色的为亮,C,修改图像;黑白反选,确定要显示的内容。D,取模方式:C51格式。E,参数设置: 其他选项选择横向取模+ 其他默认(选中:字节倒序(点阵第一行左侧DB0),保留、任何时候都)F,基本操作:保存图像,打开图像,便于下次操作。6、 显示汉字:需要至少16*16的显示屏。7、 动态显示:例如,I u 可以新建一个8*40行的点阵。(点阵显示部分重看之后待完善)8、 左右移动方法一,图像侧过来,把板子侧过来就可以了。9、 左右移动方法二:二维数组。10、 Unsigned char a23 = 1,2,3,4,5,6;Lesson 8 函数进阶与按键一、单片机最小系统解析1、电源:5V、3.3V两种; 数字电路电源:24V、12V、5V、3.3V、2.5V、1.8V2、无源晶振(晶体):需接起振电容,不依赖电源电压,接好电路就工作; 有源晶振(振荡器):需接电源,输出端直接接XTAL1,依赖工作电压,适用高精度场合。3、复位电路上电复位:复位时间t = 1.2RC 故:t = 1.2*4.7K* 0.1*0.000001F = 564us, 大于两个机器周期约2us,故能起到复位作用。手动复位:人手按下按键的时间一般100ms以上,快的也有几十ms,故满足复位条件。18欧的电阻作用是放电时,K、R、C形成闭合回路,消除干扰。软件复位。二、函数的调用1、例如:利用void secondcount() void ledrefresh()函数优化秒表程序。2、静态变量只第一次有效。3、函数调用时,不加函数类型(无void等),加分号; 函数调用之前,必须进行定义或声明; 函数声明的时候必须加:函数类型,函数的形参,最后加一个分号。4、函数体顺序:函数声明main()子函数排序中断函数。5、实参,形参27-32分钟。三、独立式按键只有内部输出为高电平,MCU的I0口就为高电平,才能读键。故有P2 = 0XF7;程序一:#include / 用K1-K4控制LED6-9的亮灭sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;sbit LED9 = P07;sbit LED8 = P06;sbit LED7 = P05;sbit LED6 = P04;sbit KEY1 = P24;sbit KEY2 = P25;sbit KEY3 = P26;sbit KEY4 = P27;main()ENLED = 0;ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;P2 = 0XF7; /KEY1=4接高电平、KEYOUT4接低电平while(1)LED9 = KEY1; /把读的KEY1的值赋给LED9;LED8 = KEY2;LED7 = KEY3;LED6 = KEY4;(法二)Main程序#include#includekey.hmain()ENLED = 0;ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;P0 = 0Xff; KEYOUT1 = 0;while(1)P0 = (P24)|0xf0;头文件#ifndef _KEY_H_#define _KEY_H_sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;sbit KEY1 = P24;sbit KEY2 = P25;sbit KEY3 = P26;sbit KEY4 = P27;sbit KEYOUT1 = P23;sbit KEYOUT2 = P22;sbit KEYOUT3 = P21;sbit KEYOUT4 = P20;#endif程序二:K1、K2控制数字加减的程序,防抖动#include #include key.hvoid delay()unsigned int i = 2000;while(i-);main()unsigned char n = 0;P0 = 0XFF;KEYOUT1 = 0;ENLED = 0; ADDR3 = 1;ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; /控制最右边数码管DS1亮P0 = ledchar0;while(1)if(!KEY1) /相当于 if(KEY1 = 0) 判断键是否按下delay();if(!KEY1)/再判断健是否按下if(n = 9)n = 0;elsen+;P0 = ledcharn;while(!KEY1); /等待按键1松开的语句。if(!KEY2) delay();if(!KEY2)if(n = 0)n = 9;elsen-;P0 = ledcharn;while(!KEY2);程序三、用小灯构成的5位二进制数表示16个按键,1-1,2-2,16-0;#include #include key.hvoid delay();main()ENLED = 0; ADDR3 = 1;ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; P0 = 0xFF;while(1)KEYOUT1 = 0;KEYOUT2 = 1;KEYOUT3 = 1;KEYOUT4 = 1;if(KEY1 = 0)delay();if(KEY1 = 0)P0 = 1;if(KEY2 = 0)delay();if(KEY2 = 0)P0 = 2;if(KEY3 = 0)delay();if(KEY3 = 0)P0 = 3;if(KEY4 = 0)delay();if(KEY4 = 0)P0 = 4;while(KEY1 = 0)|(KEY2 = 0)|(KEY3 = 0)|(KEY4 = 0);/第一行检测完KEYOUT1 = 1;KEYOUT2 = 0;KEYOUT3 = 1;KEYOUT4 = 1;if(KEY1 = 1)delay();if(KEY1 = 0)P0 = 5;if(KEY2 = 0)delay();if(KEY2 = 0)P0 = 6;if(KEY3 = 0)delay();if(KEY3 = 0)P0 = 7;if(KEY4 = 0)delay();if(KEY4 = 0)P0 = 8;while(KEY1 = 0)|(KEY2 = 0)|(KEY3 = 0)|(KEY4 = 0);/第二行检测完KEYOUT1 = 1;KEYOUT2 = 1;KEYOUT3 = 0;KEYOUT4 = 1;if(KEY1 = 1)delay();if(KEY1 = 0)P0 = 9;if(KEY2 = 0)delay();if(KEY2 = 0)P0 = 10;if(KEY3 = 0)delay();if(KEY3 = 0)P0 = 11;if(KEY4 = 0)delay();if(KEY4 = 0)P0 = 12;while(KEY1 = 0)|(KEY2 = 0)|(KEY3 = 0)|(KEY4 = 0);/第三行检测完KEYOUT1 = 1;KEYOUT2 = 1;KEYOUT3 = 1;KEYOUT4 = 0;if(KEY1 = 1)delay();if(KEY1 = 0)P0 = 13;if(KEY2 = 0)delay();if(KEY2 = 0)P0 = 14;if(KEY3 = 0)delay();if(KEY3 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危化品企业内审2025年真题模拟题
- 中班《食品安全》课件
- 中班安全 课件
- 铁栅栏消防安全课件
- “十五五”医院感染管理发展规划
- 健康生活指南如何改善睡眠质量测试题及答案
- 开学励志挑战自我测试题系列二
- 居家运动挑战测试题目及答案手册
- 经济学凯恩斯效应测试题及答案解析
- 家庭教育心理测试题答案与教育策略详解
- 【初二秋季上期中】家长会:汇聚璀璨之光照亮成长之路【课件】
- 2025年宁夏海阅城市开发集团招聘工作人员笔试考试参考题库及答案解析
- 子宫内膜异位症的病因与治疗新进展
- 电力安全工作规程(变电部分)课件
- 办公用品、耗材采购服务投标方案
- 2022年包头市中小学教师招聘考试真题
- 山东某大学《影视文学研究》期末考试复习题及参考答案
- GB/T 18487.2-2001电动车辆传导充电系统电动车辆与交流/直流电源的连接要求
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- GB 11032-2000交流无间隙金属氧化物避雷器
- 幼儿园突发事件应急处置流程图
评论
0/150
提交评论