《单片机部分实验指导书.doc》由会员分享,可在线阅读,更多相关《单片机部分实验指导书.doc(113页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录1、实验一多路开关实验32、实验二可编程增益放大器实验53、实验三A/D转换实验74、实验四D/A转换实验115、实验五 静态显示实验 136、实验六 动态扫描显示实验 157、实验七液晶显示实验188、实验八 矩阵式键盘实验239、实验九 开关量输入输出实验2810、实验十24WC02串行E2PROM的读写实验3011、实验十一 PCF8563时钟/日历芯片的应用实验 3712、实验十二 外部程序存储器EPROM的扩展实验4513、实验十三 SRAM外部数据存储器扩展实验4714、实验十四 单片机及PC机的RS232串行通信实验5015、实验十五 单片机及PC机的MAX485串行通信实
2、验5216、实验十六 打印机实验5417、实验十七 USB通信实验5718、实验十八 网络控制器实验102实验一多路开关实验一实验目的 1 掌握多路开关及单片机的接口方法。了解按键识别的编程方法。2 通过实验了解单片机如何进行多路开关实验。二实验内容利用线路板DSC-SCM01提供CPU处理器,利用线路板DCP-SCM02上的发光二级管显示及查询式键盘完成多路开关实验。当对应的按键按下时,相应的发光二极管亮。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路四实验原理图五实验说明该实验通过线路板DCP-SCM01及线路板DCP-SCM02
3、完成,线路板DCP-SCM02上发光二极管的阳极接正5V电源,所以要使某个发光二极管亮,只要使对应的发光二极管的阴极为低电平即可。六实验步骤1 利用导线按表格中的对应关系将DCP-SCM01对应的端口及DCP-SCM02对应的端口连接起来即可DCP-SCM02DCP-SCM01发光二极管显示单元的插座U3P0查询式键盘区域的插座U4P1EA脚接+5V2 运行Keil C51软件,新建一个工程文件(如D_SWITCH),新建一个工程文件D_SWITCH.C3 输入并编辑D_SWITCH.C文件,并且编译生成HEX文件。4 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软
4、件,通过串口烧写到单片机中。或用仿真器来执行程序,将程序下载到仿真器中5 运行实验程序,按下对应得按键,观察发光二极管的变化六参考程序/*P0口接发光二极管显示P1口接查询式键盘*/#include unsigned char ID;void delay10ms(void) unsigned char i,j; for(i=20;i0;i-) for(j=248;j0;j-);void main(void) while(1) if(P1_0=0) delay10ms(); if(P1_0=0) P0=0Xfe; if(P1_1=0) delay10ms(); if(P1_1=0) P0=0Xf
5、d; if(P1_2=0) delay10ms(); if(P1_2=0) P0=0Xfb;if(P1_3=0) delay10ms(); if(P1_3=0) P0=0Xf7;实验二可编程增益放大器实验一实验目的 1.掌握可编程增益放大器的原理及单片机按键实现增益切换的方法。2.熟悉放大器的基本计算机方法二实验内容利用多路转换开关CD4051实现不同通路的切换,通过单片机的按键实现不同增益的选择。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路4DCP-SCMO6 可编程增益放大器 四实验原理图五实验说明该实验通过线路板DCP-SCM
6、01及线路板DCP-SCM02和DCP-SCM06完成,我们采用模拟电子开关实现增益可调,每档分别为1倍、1.5倍、2倍、2.7倍、3倍、3.9倍、4.7倍和5.1倍共八档,如上原理图所示,这是一个典型的放大器,电阻的阻值就是按以上要求选取,CD4051为一个八选一模拟开关,通过控制端的数码组合选择对应的电阻接入回路,控制端数码的组合由单片机程序完成,再通过按键实现不同增益的切换。六实验步骤1、利用导线按表格中的对应关系将DCP-SCM01对应的端口及DCP-SCM02和DCP-SCM06对应的端口连接起来即可DCP-SCM02DCP-SCM01查询式键盘区域的插座U4P1DCP-SCM06V
7、inAP0.0VinBP0.1VinCP0.2EA脚接+5V6 运行Keil C51软件,新建一个工程文件(如KBC),新建一个工程文件KBC.C7 输入并编辑KBC.C文件,并且编译生成HEX文件。8 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机中。或用仿真器来执行程序,将程序下载到仿真器中9 调节电位器RW2,用万用表测得电阻R25右边的电压为0V,再调节电位器RW1,使得VinD端输出电压为1V。则在VOU端将会按照1倍、1.5倍、2倍、2.7倍、3倍、3.9倍、4.7倍和5.1输出电压值。若输出的电压值有误差,可以通过调节电位器RW
8、2进行补偿。10.运行实验程序,循环按下DCP-SCM02查询式键盘左边的第一个按键,并用万用表观察DCP-SCM06线路板VOUT端输出电压的变化情况。七参考程序#include unsigned char code table=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07;unsigned char i,j,a,m;sbit KEY=P10;void main() while(1) if(KEY=0) for(i=50;i0;i-) for(j=200;j0;j-); if(KEY=0) /a+; if(a=8) a=0;P0=tablea+; while
9、(KEY=0);实验三A/D转换实验一实验目的 1.掌握A/D转换及单片机的接口方法。了解A/D芯片ADC0809转换性能及编程。2.通过实验了解单片机如何进行数据采集。二实验内容利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用数码管显示。三实验器材1.主控屏电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路4DCP-SCMO4 时钟/日历、AD、DA及液晶显示四实验原理图五实验说明A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换
10、器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其中断相接。六实验步骤1.利用导线按表格中的对应关系将ADC0809、单片机、参考电压模块和数码管模块连接起来,线路板DCP-SCM04的VCC接+12V、GND接地、VEE接-12V。DCP-SCM01、DCP-SCM02均接+5V电压。DCP-SCM04DCP-SCM01OEP3.5D0D7(模数转换区)P1EA脚接+5VE
11、OCP3.6CLKP3.3SC/ALEP3.4ADC0809模拟电压VREFVREF(连接好导线后调到5V)IN0VO1DCP-SCM02(数码管)DCP-SCM01左边的8P插座U1(数码管显示区)P0右边的8P插座U2(数码管显示区)P22.运行Keil C51软件,新建一个工程文件(如ADC0809),新建一个工程文件ADC0809.ASM3.输入并编辑ADC0809.ASM文件,并且编译生成HEX文件。4.用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机中。或用仿真器来执行程序,将程序下载到仿真器中,具体方法请参考仿真器的使用一节。5.
12、运行实验程序,调节模拟电压的电位器RW2,观察数码管数值的变化七参考程序#include #include unsigned char code dispbitcode=0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0xff;/数码管显示0-9及灭unsigned char code dispcode=0xfe,0xfd,0xfb,0xff,0xff,0xff,0xff,0xff;/数码管从右边显示,位选,每次选通一位unsigned char dispbuf8=0,0,0,10,10,10,10,10;unsigned char disp
13、count;unsigned int getdata,getdata1;sbit ST=P34;sbit OE=P35;sbit EOC=P36;sbit CLK=P33;sbit P10=P10;sbit P11=P11;sbit P12=P12;void delays(unsigned char k) unsigned char i,j;for(i=0;ik;i+)for(j=0;j50;j+);void display(void)unsigned char i;for(i=0;i=100n秒while(EOC=0);OE=1;/OE=1;输出转换得到数据;getdata=P1;/将P0口
14、输出转换得到的数据送到getdate;OE=0; /OE=0;输出数据程高阻状态;getdata1=getdata*2;dispbuf2=getdata1/100;dispbuf1=getdata1/10%10;dispbuf0=getdata1%10;display();实验四D/A转换实验一实验目的 1 了解D/A转换及单片机的接口方法;2 了解D/A转换芯片0832的性能及编程方3 了解单片机系统中扩展D/A转换芯片的基本方法二实验内容 利用0832输出一个从0V开始逐渐升至5V再降至0V的可变电压。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM0
15、2 键盘及显示电路4DCP-SCMO4 时钟/日历、AD、DA及液晶显示四实验原理图五实验说明1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高些。3、8位D/A转换器的输入数据及输出电压的关系为:U(0-5V)=Uref/256NU(-5V+5V)=2Uref/
16、256N-5V (这里 Uref为+5V)六实验步骤1 利用导线按表格中的对应关系将DAC0832、单片机、参考电压和模拟电压模块连接起来DCP-SCM04(数模转换)DCP-SCM01CSP2.7D0D7P0WRP3.6EA脚接+5VDAC0832模拟电压VREFVREF(调到5V)AOUTDCP-SCM02(发光二极管)2 运行Keil C51软件,新建一个工程文件(如DAC0832),新建一个工程文件DAC0832.ASM3 输入并编辑DAC0832.ASM文件,并且编译生成HEX文件。4 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机
17、中。或用仿真器来执行程序,将程序下载到仿真器中,具体方法请参考仿真器的使用一节。5 运行实验程序,观察发光二极管的亮度变化,二极管先慢慢变暗,过一段时间再慢慢变亮,然后再慢慢熄灭。七参考程序 ORG 0000H LJMP START ORG 0003H RETI ORG 000BH reti ORG 00013H RETI ORG 001BH RETI ORG 0023H RETISTART: MOV A,#00HMOV DPTR,#7FFFHMOV R1,#0AHLP: MOVX DPTR,ACALL DELAYDJNZ R1,NEXTJMP STARTNEXT: ADD A,#10HJMP
18、 LPDELAY:MOVR6,#0FFHMOVR7,#0FFHDELAYLOOP:DJNZR6,DELAYLOOPDJNZR7,DELAYLOOPRET END实验五 静态显示实验一实验目的通过实验掌握静态显示的原理和编程方法。二实验内容1.对于显示的字形码数据此实验采用查表的方法来完成。2.此实验现象是在八个数码管中显示8,8,8,8,8,8,8,8。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路四实验原理图五实验步骤1 把DCP-SCM02数码管显示区左边的8P插槽连到DCP-SCM01线路板P0端口的8P插槽,右边的8P插槽连到
19、P2端口的8P插槽2 运行Keil C51软件,新建一个工程,新建一个文件。将文件添加到工程中并编译,如有错,请更改直到编译成功,如有错,请更改直到编译成功3 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机中(只能用于STC单片机)。或用仿真器来执行程序,将程序下载到仿真器中,具体方法请参考仿真器的使用一节。用编程器将生成的HEX文件烧写到单片机中。4 运行实验程序,此时在八个数码管总显示8,8,8,8,8,8,8,8。六实验参考程序#include /unsigned char code dispbitcode=0xfe,0xfd,0xfb
20、,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code dispcode=0x01;/数码管段选,显示8void main(void)P2=0x00;/数码管位选,共阳while (1)P0=dispcode0;实验六 动态扫描显示实验一实验目的通过实验掌握动态扫描显示的原理和编程方法。二实验内容1 动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的占留特性,看不出闪烁现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的点亮(数位选择)。2 对于显示的字形码数据此实验采用查表的方法来完成。3 此实验现象是在八个数
21、码管中显示1,2,3,4,5,6,7,8。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路四实验原理图五实验步骤1. 把DCP-SCM02数码管显示区左边的8P插槽连到DCP-SCM01线路板P0端口的8P插槽,右边的8P插槽连到P2端口的8P插槽2. 运行Keil C51软件,新建一个工程,新建一个文件。将文件添加到工程中并编译,如有错,请更改直到编译成功,如有错,请更改直到编译成功3. 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机中(只能用于STC单片机)。或用仿真器来执行程序,
22、将程序下载到仿真器中,具体方法请参考仿真器的使用一节。用编程器将生成的HEX文件烧写到单片机中。4. 运行实验程序,此时在八个数码管总显示1,2,3,4,5,6,7,8。六实验参考程序ORG 0000HAJMP STARTORG 0030HSTART:CLR P2.0 MOV P0,#01H LCALL DELAY MOV P0,#0FFH SETB P2.0 CLR P2.1 MOV P0,#1FH LCALL DELAY MOV P0,#0FFH SETB P2.1 CLR P2.2 MOV P0,#41H LCALL DELAY MOV P0,#0FFH SETB P2.2 CLR P2
23、.3 MOV P0,#49H LCALL DELAY MOV P0,#0FFH SETB P2.3 CLRP2.4 MOV P0,#99H LCALL DELAY MOV P0,#0FFH SETB P2.4 CLR P2.5 MOV P0,#0DH LCALL DELAY MOV P0,#0FFH SETB P2.5 CLR P2.6 MOV P0,#25H LCALL DELAY MOV P0,#0FFH SETB P2.6 CLR P2.7 MOV P0,#9FH LCALL DELAY MOV P0,#0FFH SETB P2.7 AJMP STARTDELAY:MOV R7,#2D1
24、:MOV R6,#10 DJNZ R6,$ DJNZ R7,D1 RET END实验七液晶显示实验一实验目的通过本实验了解液晶显示的基本原理、掌握如何用单片机来控制液晶显示模块的内容。二实验内容利用LCD显示“welcome to zhejiang Qiu Shi”三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM04 时钟/日历、AD、DA及液晶显示四实验原理图如下图所示:1引脚接电源负 VSS 1,2引脚接电源正+4.5-+5.5V,3引脚用于对比度调节,4引脚(RSLCD)用作端口号选择,5引脚(RWLCD)为读写选择线,6引脚(ENLCD)为写使能线
25、,714引脚(DB00DB07)接51的P0口,为三态双向数据总线,做数据端口选择用,15引脚为背光负,16引脚为背光正。五实验说明LCD1602采用标准的14脚接口,其中:第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时
26、可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。另外引脚A和K为背光引脚,A接正,K接负便会点亮背光灯。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令它的读写操作
27、、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令RSR/WD7D6D5D4D3D2D1D0清显示0000000000光标返回000000001*置输入模式00000001I/D S显示开关控制0000001DCB光标字符移位000001S/CR/L*置功能00001DLNF*置字符存储器地址0001字符发生存储器地址置数据存储器地址001显示数据存储器发生地址读忙标志或地址01BF计数器地址写数据到CGRAM或DDRAM10要写的数据从CGRAM或DDRAM读数11读出的数据指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址
28、00H指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。D:控制整体显示的开及关,高电平表示开显示,低电平表示关显示C:控制光标的开及关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7:字符发生器RAM地址设
29、置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 六实验步骤1 利用导线按表格中的对应关系将LCD和单片机连接起来,并将线路板上对应的电源引脚及主控屏上电源相连。DCP-SCM04DCP-SCM01D0D7P1口C0-C3P2口EA脚接+5V2 运行Keil C51软件,新建一个工程(如LCD),新建一个文件LCD.asm。3 输入并编辑LCD.asm文件,并且编译生成HEX文件。4 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过
30、串口烧写到单片机中(只能用于STC单片机)。或用仿真器来执行程序,将程序下载到仿真器中,具体方法请参考仿真器的使用一节,5 运行实验程序,观察LCD的显示,此时LCD显示“wlcome to Zhejiang Qiu Shi”七参考程序RS BIT P2.5;RW BIT P2.6;E BIT P2.7;DB0_DB7 DATA P1;ORG 0000HAJMP STARTORG 000BHAJMP INSEORG 50HSTART:MOV R5,#50H;MOV SP,#60HMOV P0,#0FHACALL INIT;ACALL CLS;MOV A,#080H;ACALL WRITEMOV
31、 DPTR,#L1;ACALL PRSTRING;MOV A,#0C0H;ACALL WRITEMOV DPTR,#L2;ACALL PRSTRING;LOOP:AJMP LOOP;l1:db welcome to L2:db Zhejiang Qiu ShiINSE:MOV TL0,#0;MOV TH0,#0;DJNZ R5,NOMOV R5,#50HNO:RETIINIT:MOV A,#038H;00111000 显示两行,使用57的字符LCALL WRITE MOV A, #00EH;00001110显示开,显示光标;光标闪烁LCALL WRITE MOV A, #006H;000001
32、10 显示画面不懂,光标自动右移LCALL WRITE RETCHECKBUSY:PUSH ACC CLOOP: CLR RS;RS=0;RW=1;读取忙信号,RS=0,RW=0写入指令或地址,RS=1,RW=0写入数据,RS=1,RW=1;读出数据 SETB RW; CLR E;SETB E;E由低变高液晶执行命令MOV A,DB0_DB7CLR E;JB ACC.7,CLOOP;POP ACC;ACALL DELAYRETWRITE:ACALL CHECKBUSYCLR ECLR RS;CLR RW;RS=0,RW=0写入指令或地址SETB E;MOV DB0_DB7,ACCCLR E;R
33、ETWRITEDDR:ACALL CHECKBUSY CLR ESETB RS; CLR RW;RS=1,RW=0写入数据SETB E MOV DB0_DB7,ACCCLR E;RETDELAY: MOV R5,#5;D1:MOV R7,#248 DJNZ R7,$DJNZ R6,D1RETCLS: MOV A,#01HACALL WRITERETPRSTRING:PUSH ACCPRLOOP: CLR A MOVC A,A+DPTR JZ ENDPR ACALL WRITEDDR ACALL DELAY INC DPTR; AJMP PRLOOPENDPR: POP ACC RETEND实验
34、八 矩阵式键盘实验一实验目的1 通过实验了解44键盘的识别原理和编程方法。2 学习软件防抖的编程方法。二实验内容1 每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态置高电平,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表查出该键的功能。2 按键按下时,在数码管相应的值0F。三实验器材1.主控屏+5V电源2. DCP-SCM01 单片机电路3. DCP-SCM02 键盘及显示电路四实验原理图
35、五实验步骤1 把DCP-SCM02数码管显示区左边的8P插槽U1连到DCP-SCM01线路板P0端口的8P插槽,右边的8P插槽U2连到P2端口的8P插槽,单片机的EA脚接+5V2 把DCP-SCM02矩阵式键盘区8P插槽U5连到DCP-SCM01线路板P3端口的8P插槽;3 运行Keil C51软件,新建一个工程,新建一个文件。将文件添加到工程中并编译,如有错,请更改直到编译成功,如有错,请更改直到编译成功4 用编程器将生成的HEX文件烧写到单片机中,或用STC单片机专用的串口烧写软件,通过串口烧写到单片机中(只能用于STC单片机)。或用仿真器来执行程序,将程序下载到仿真器中,具体方法请参考仿
36、真器的使用一节。用编程器将生成的HEX文件烧写到单片机中。5运行实验程序,任意按下一个按键,观察数码管的显示情况。六实验参考程序KEYBUF EQU 30H ORG 00HSTART: MOV KEYBUF,#2CLR P2.0 MOV P0,#03HMOV KEYBUF,#2WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1
37、MOV KEYBUF,#0 LJMP DK1NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1NK4: NOPDK1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,ADK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1ANOKEY1: MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2NK7: CJNE A,#07
限制150内