AT89S51_实验指导书.doc

上传人:PIYPING 文档编号:10763724 上传时间:2021-06-03 格式:DOC 页数:79 大小:1.12MB
返回 下载 相关 举报
AT89S51_实验指导书.doc_第1页
第1页 / 共79页
AT89S51_实验指导书.doc_第2页
第2页 / 共79页
AT89S51_实验指导书.doc_第3页
第3页 / 共79页
AT89S51_实验指导书.doc_第4页
第4页 / 共79页
AT89S51_实验指导书.doc_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《AT89S51_实验指导书.doc》由会员分享,可在线阅读,更多相关《AT89S51_实验指导书.doc(79页珍藏版)》请在三一文库上搜索。

1、单片机原理实验指导书第一章 单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。适用于大学本科单片机教学、课程设计和毕业设计。该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。为适应市场上多种单片机器件的应用,该系统采用“母板+单片机板”双层结构,通过更换不同型号单片机板,可实验不同的单片机,适应了各院校不同的教学需求。 二、 单片机

2、板简介 本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。单片机板置于母板的上方,单片机板的电源由母板供给,每一块单片机板上都引出所有I/O接口,可以很方便的完成所有实验。因此使得单片机板可与母板配合形成一个独立的实验系统。1、主要技术参数(1)MSC-51单片机板板上配有ATMEL公司的AT89S51芯片。AT89S51资源:32个I/O口;封装DIP40。AT89S51开发软件:KEIL C51。2、MSC-51单片机结构(1)单片机板中央放置一块可插拔的DIP封装的AT89S51芯片。(2)单片机板左上侧有一个十针插口,用于下载程序。(3)

3、单片机板的四周是所有IO引脚的插孔,旁边标有I0引脚的脚引。(4)单片机板与母板配合使用时,可形成个完整的实验系统。三、 母板简介主要技术参数(1)实验系统电源实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。 主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。为适用多种需要,配置了+5V,+12V,5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。此外,还设有螺旋保险插孔保护实验箱。(2)RS232接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。(3)单片机最小系统单片机最小

4、系统的核心是ATMEL公司的AT89S51单片机,AT89S51右边的按键是复位键,按下时单片机复位,单片机的放两排插孔,分别是:P1.0P1.7,P0.0P1.7,P3.0P3.7, P2.0P2.7,它们可以实现单片机实验和开发。(4)模拟量接口一个模拟量接口,由ICL8038产生,通过插孔引出。(5)DA转换器DA转换器由DA0832,LM324芯片组成,(8位,05V电压输出),对应的接口序号为:数据信号:D0D7;片选信号:/CS;读有效信号OE。(6)AD转换器AD转换器和 DA转换器相临,主要由ADC0809组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;基准电压:RE

5、F+,REF -;读写信号:RD,WR;输出信号:D0D7;检测信号:I0;地址锁存允许:ALE。(7)8位拨动开关8位拨动开关由KlK8组成,每一位都有相应LED(DlD8)指示,当拨码开关拨上边时输出高电平,LED亮;拨下边时输出低电平,由插孔l8输出。(8)24位按键开关24位按键开关位于主板中下方,由按键KlK24组成,有六排,第一排按下时是高电平,弹上时是低电平,由插孔14输出;第二排按下时是低电平,弹上时高电平,由插孔14输出;第三到第六排是4*4的行列式键盘;由L1L4,H1H4输出。(9)静态显示数码管静态显示区由数码管DP1DP6组成,由插孔输出,供静态显示用。(10)发光二

6、极管显示区8位红色发光二极管,高电平亮,可作为状态指示用;另一部分是交通灯,由东西南北四组红绿黄发光二极管构成,高电平亮。(11)动态扫描显示区系统的显示采用8位8段共阴或共阳数码管(高电平有效),所对应的接口序号为:段码:a,b,c,d,e,f,g,h;位选:L1,L2,L3,L4,L5,L6,L7,L8。(12)蜂鸣器蜂鸣器(高电平TTL驱动)从其下方对应输入口,会产生lKHz的信号响声。(13)继电器控制区继电器控制区主要由KJ1KJ3三个继电器及其驱动电路组成,高电平TTL驱动,输出接口分别为JJ1,JJ2,JJ3。(14)数字温度计数字温度计使用DS1302温度传感器,输出接口为SC

7、LK、I/O、RESET。(15)EEPROMEEPROM(AT24C16),用来保存数据信息,接口序号为:串行数据线:SDA;时钟线:SCL;写保护线:WP。(16)串行A/DAD转换器主要由MAX192组成,(8位)对应的接口序号为:模拟输入:IN0-IN7;片选信号:CS;输出信号:DOUT;时钟信号:SCLK;转换开始:SSTRB。(17)变频模块(18)直流斩波模块(19)红外模块四、 主要实验项目本实验系统由于采用模块化设计,各模块之间既相互独立,又可相互组合,完成各种类型实验。其中包括验证性基础实验,综合性、设计性、创新性实验以及研究开发性、创新性、及全国电子大赛赛前培训实验等。

8、以下列举了本实验系统能做的部分单片机原理课程实验及课外开放性备选实验项目。单片机原理课程实验实验一 LED显示器指示实验二 软件延时及灯光控制实验实验三 多级外部中断实验实验四 脉冲频率的测量实验实验五 串行口扩展实验实验六 串行EEPROM的读出和写入实验实验七 8位A/D、D/A转换器的应用实验实验八 串行A/D、D/A的应用实验实验九 直流继电器的驱动及控制实验实验十 数据采集的软件抗干扰实验实验十一 密码锁控制器的设计实验十二 数字温度控制器的设计实验十三 8255扫描键盘显示实验实验十四 音乐编程实验实验十五 声光报警实验实验十六 可预置可逆计数器实验实验十七 DS1302时钟芯片的

9、应用实验实验十八 红外通信接口实验实验十九 单片机变频调速实验实验二十 交通灯控制实验部分备选实验项目实验一 闪烁灯实验一 模拟开关灯实验一 多路开关状态指示实验一 广告灯的左移右移实验一 广告灯(利用取表方式)实验一 报警产生器实验一 I/O并行口直接驱动LED显示实验一 按键识别方法之一实验一 0099计数器实验一 定时计数器T0作定时应用技术(一)实验一 动态数码显示技术实验一 44矩阵式键盘识别技术实验一 定时计数器T0作定时应用技术(一)实验一 定时计数器T0作定时应用技术(二)实验一 “叮咚”门铃实验一 数字钟实验一 ADC0809A/D转换器基本应用技术第二章 Keil C软件使

10、用Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界启动Keil C51时的屏幕进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输

11、入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存. 3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项 新建文件后屏幕如下图所示 此时光标在编辑窗口里闪烁,这时可以键入用户的

12、应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 6)回到编辑界面后,单击“Target 1”前面的“”号,然后在“Source Group 1”上单击右键,弹出如下菜单 然后单击“Add File to Group Source Group 1” 屏幕如下图所示 选中Test.c,然后单击“Add”屏幕好下图所示

13、注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同 7)现在,请输入如下的C语言源程序: #include /包含文件#include void main(void) /主函数SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; /此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. n”); /打印程序执行的信息printf(“I will be your friend.n”);while(1); 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil

14、c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示 8)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示 9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Es

15、c);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示 至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?10)单击“Project”菜单,再在下拉菜单中单击“” 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。第三章 AT89S51单片机下载器软件使用AT89S51单片机下载器是专门用于下载程序到单片机系统中,该软件使用方便。启

16、动软件之后进入下面的界面(如图3.1所示):图3.1在上图中:1 界面右边为操作状态显示区;2 界面左上为下载芯片选择区,该软件支持多种芯片的程序在线下载,对系统板上的单片机AT89S51是其中一种,软件默认情况下为AT89S51单片机。3 界面左边为在线下载的操作区,它可以提供如下的操作(1) 初始化:启动AT89S51单片机进入ISP下载状态,若启动成功,则状态显示区就会显示如图3.2所示的文字。否则,不成功会有“初始化失败”的字样提示。图3.2(2) 特征字:点击一下检测器件,会读出单片机的芯片的特征字,对于AT89S51单片机的特征字为:1E5106。(3) 擦除器件:是把单片机的内容

17、擦除干净,即单片机内部ROM的内容全为FFH。(4) 写器件:把代码区中的程序代码下载到单片机的内部ROM中。注意在编程之前,要对单片机芯片进行擦除操作。(5) 效验数据:是经过编程之后,对下载到单片机内部ROM中的内容与代码区的内容相比较,若程序下载过程中完全正确,则提示校验正确,否则提示出现错误。那就得需要重新下载程序到ROM中。(6) 自动:提供了从内部ROM从擦除到编程,最后到校验这三个过程。(7) 读器件:从单片机内部ROM中读取内容到代码显示区中。第四章 实验及实践课题1 闪烁灯1 实验任务如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的

18、时间间隔为0.2秒。2 电路原理图图4.1.13 系统板上硬件连线把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。4 程序设计内容(1) 延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒MOV R6,#202个2D1:MOV R7,#2482个22224849820DJNZ R7

19、,$2个2248 (498DJNZ R6,D12个2204010002因此,上面的延时程序时间为10.002ms。由以上可知,当R610、R7248时,延时5ms,R620、R7248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒200ms,10msR5200ms,则R520,延时子程序如下:DELAY:MOV R5,#20D1:MOV R6,#20D2:MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2) 输出控制如图1所示,当P1.0端口输出高电平,即P1.01时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输

20、出低电平,即P1.00时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。5 程序框图如图4.1.2所示图4.1.26 汇编源程序ORG 0START:CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY:MOV R5,#20;延时子程序,延时0.2秒D1:MOV R6,#20D2:MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7 C语言源程序#include sbit L1=P10;void delay02s(voi

21、d)/延时0.2秒子程序 unsigned char i,j,k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-);void main(void) while(1) L1=0; delay02s(); L1=1; delay02s(); 2 模拟开关灯1 实验任务如图4.2.1所示,监视开关K1(接在P3.0端口上),K1拨上为高电平,拨下为低电平。用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关拨上,L1亮,开关拨下,L1熄灭。2 电路原理图图4.2.13 系统板上硬件连线(1) 把“单片机系统”区域中的P1.0端口用导线连

22、接到“八路发光二极管指示模块”区域中的L1端口上;(2) 把“单片机系统”区域中的P3.0端口用导线连接到“八路拨动开关”区域中的K1端口上;4 程序设计内容(1) 开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JBBIT,REL或者是JNBBIT,REL指令来完成对开关状态的检测即可。(2) 输出控制如图3所示,当P1.0端口输出高电平,即P1.01时,根据发光二极管的单向导电性可知,这时发光二极管

23、L1熄灭;当P1.0端口输出低电平,即P1.00时,发光二极管L1亮;我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。5 程序框图开始K1开关闭合了吗?L1亮L1灭图4.2.26 汇编源程序ORG 00HSTART:JB P3.0,LIGCLR P1.0SJMP STARTLIG:SETB P1.0SJMP STARTEND7 C语言源程序#include sbit K1=P30;sbit L1=P10;void main(void) while(1) if(K1=0) L1=0;/灯亮 else L1=1;/灯灭 3 多路开关状态指示

24、1 实验任务如图4.3.1所示,AT89S51单片机的P1.0P1.3接四个发光二极管L1L4,P1.4P1.7接了四个开关K1K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。2 电路原理图图4.3.13 系统板上硬件连线(1 把“单片机系统”区域中的P1.0P1.3用导线连接到“八路发光二极管指示模块”区域中的L1L4端口上;(2 把“单片机系统”区域中的P1.4P1.7用导线连接到“八路拨动开关”区域中的K1K4端口上;4 程序设计内容(1 开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相

25、应的发光二极管指示,可以采用JBP1.X,REL或JNBP1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOVA,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。(2 输出控制根据开关的状态,由发光二极管L1L4来指示,我们可以用SETBP1.X和CLRP1.X指令来完成,也可以采用MOVP1,1111XXXXB方法一次指示。5 程序框图开始读P1口数据到ACC中ACC内容右移4次ACC内容与F0H相或ACC内容送入P1口图4.3.26 方法一(汇编源程序)ORG 00HSTART:MOV A,P1ANL A,#0F0HRR ARR ARR AR

26、R AXOR A,#0F0HMOV P1,ASJMP STARTEND7 方法一(C语言源程序)#include unsigned char temp;void main(void) while(1) temp=P14; temp=temp | 0xf0; P1=temp; 8 方法二(汇编源程序)ORG 00HSTART:JB P1.4,NEXT1CLR P1.0SJMP NEX1NEXT1:SETB P1.0NEX1:JB P1.5,NEXT2CLR P1.1SJMP NEX2NEXT2:SETB P1.1NEX2:JB P1.6,NEXT3CLR P1.2SJMP NEX3NEXT3:S

27、ETB P1.2NEX3:JB P1.7,NEXT4CLR P1.3SJMP NEX4NEXT4:SETB P1.3NEX4:SJMP STARTEND9 方法二(C语言源程序)#include void main(void) while(1) if(P1_4=0) P1_0=0; else P1_0=1; if(P1_5=0) P1_1=0; else P1_1=1; if(P1_6=0) P1_2=0; else P1_2=1; if(P1_7=0) P1_3=0; else P1_3=1; 4 广告灯的左移右移1 实验任务做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1

28、L8分别接在单片机的P1.0P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0P1.1P1.2P1.3P1.7P1.6P1.0亮,重复循环。2 电路原理图图4.4.13 系统板上硬件连线把“单片机系统”区域中的P1.0P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1L8端口上,要求:P1.0对应着L1,P1.1对应着L2,P1.7对应着L8。4 程序设计内容我们可以运用输出端口指令MOVP1,A或MOVP1,DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示P1.7P1.6P1.5P1.4P1.3P1

29、.2P1.1P1.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮表15 程序框图图4.4.26 汇编源程序ORG 0START:MOV R2,#8MOV A,#0FEHSETB CLOOP:MOV P1,ALCALL DELAYRLC ADJNZ R2,LOOPMOV R2,#8LOOP1:MOV P1,ALCALL DELAYRRC ADJNZ R2,LOOP1LJMP STARTDELAY:MOV R5,#20;D1:MOV

30、 R6,#20D2:MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7 C语言源程序#include unsigned char i;unsigned char temp;unsigned char a,b;void delay(void) unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-);void main(void) while(1) temp=0xfe; P1=temp; delay(); for(i=1;i8;i+) a=temp(8-i); P1=a|

31、b; delay(); for(i=1;ii; b=temp(8-i); P1=a|b; delay(); 5 广告灯(利用取表方式)1 实验任务利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。2 电路原理图图4.5.13 系统板上硬件连线把“单片机系统”区域中的P1.0P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1L8端口上,要求:P1.0对应着L1,P1.1对应着L2,P1.7对应着L8。4 程序设计内容在用表格进行程序设计的时候,要用以下的指令来完成(1) 利用MOVDPTR,DATA16的指令来使数据指针寄存器指到表的开头。

32、(2) 利用MOVCA,ADPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。因此,只要把控制码建成一个表,而利用MOVC工,ADPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:5 程序框图图4.5.26 汇编源程序ORG 0START:MOV DPTR,#TABLELOOP:CLR AMOVC A,A+DPTRCJNE A,#01H,LOOP1JMP STARTLOOP1:MOV P1,AMOV R3,#20LCALL DELAYINC DPTRJMP LOOPDELAY:MOV R4,#20D1:MOV R5,#248

33、DJNZ R5,$DJNZ R4,D1DJNZ R3,DELAYRETTABLE:DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 00H, 0FFH,00H, 0FFHDB 01HEND7 C语言源程序#include unsigned char code table=0xfe,0xfd,

34、0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01;unsigned char i;void delay(void) unsigned char m,n,s; for(m=20;m0;m-) for(n=20;n0;n-) for(s=248;s0;s-);void main(voi

35、d) while(1) if(tablei!=0x01) P1=tablei; i+; delay(); else i=0; 6 报警产生器1 实验任务用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。2 电路原理图图4.6.13 系统板上硬件连线(1 把“单片机系统”区域中的P1.0端口用导线连接到“扬声器模块”区域中的MIC-IN端口上;(2 把“单片机系统”区域中的P1.7/RD端口用导线连接到“八路拨动开关”区域中的K1

36、端口上;4 程序设计内容(1 信号产生的方法500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;5 程序框图开始K1按下了吗?FLAG0吗?置200次计数P1.0输出取反延时500us计数值计完了吗?FLAG取反置200次计数P1.0输出取反延时1ms计数值计完了吗?FLAG取反图4.6.26 汇编源程序FLAGBIT 00HORG 00HSTART:JB P1.7,STARTJNB FLAG,NEXTMOV R2,#200DV:CPL P1.0LCALL DELY500LCALL DELY500DJNZ R2,DVCPL FLAGNEXT:MOV R2,#200DV1:CPL P1.0LCALL DELY500DJNZ R2,DV1CPL FLAGSJMP STARTDELY500:MOV R7,#250LOOP:NOPDJNZ R7,LOOPRETEND7 C语言源程序#include #include bit flag;unsigned char count;void dely500(void) unsigned char i; for(i=250;i0;i-) _nop_(); void main(void) while(1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1