《单片机课程设计--广告流水灯设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计--广告流水灯设计.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 广告流水灯设计1、 单片机简介单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格廉价、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最正确选择。单片机内部也用和电脑功能类似的模块,比方CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!.它主
2、要是作为控制局部的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的本钱,这也是和离线式计算机的比方家用PC的主要区别。、单片机的开展历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 SCM即单片微型计算机Single Chip Microcomputer阶段,主要是寻求最正确的单片形态嵌入式系统的最正确体系结构。“创新模式获得成功,奠定了SCM与通用计算机完全不同的开展道路。在开创嵌入式系统独立开展道路上,Intel公司功不可没。 MCU即微控制器Micro Controller Unit阶段,主要的技术开展方向是:不断扩
3、展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,开展MCU的重任不可防止地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的开展也有其客观因素。在开展MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速开展到微控制器。因此,当我们回忆嵌入式系统开展道路时,不要忘记Intel和Philips的历史功绩。 单片机是嵌入式系统的独立开展之路,向MCU阶段开展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的开展
4、自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的开展,基于SoC的单片机应用系统设计会有较大的开展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。单片机的应用领域单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的平安保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造
5、就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域2、单片机软件开发的特点与方法由于单片机通常是为应用系统而设计的,本身一般不具有自我开发和编程的能力,因此必须借助于开发工具来开发。单片机最突出的特点是其本身就是一个完整的应用系统,可以通过对单片机的选型和多个联用满足不同要求。假设无特殊需要,不必进行扩展如ROM、RAM、I/O、A/D 等扩展。而是合理选用以到达最正确利用单片机的资源,在设计时,通常可留有适量余地。单片机既然是一个完整的应用系统,必然与外界有较多的联系,这些联系通常通过I/O 接口进行,
6、以满足用户的不同要求。因此,单片机的产品开发特点是:选用适宜机型,开发实用软件。说明两点:工程的可行性论证:在着手系统设计之前,必须提出任务及要求,确定系统设计的技术指标。系统总体方案:是开发产品的关键环节。在充分调研的根底上选择好单片机机型和关键元器件;要充分考虑货源、开发工具及外围电路等;还要分配协调好软、硬件功能,通常硬件和软件具有一定的互换性。开发单片机应用系统产品,开发工具处于重要地位。在硬件调试、程序调试及联调时,都需使用开发系统,甚至在进行总体设计时,某些技术问题也需要验证。开发系统还是鉴定性能的得力工具,因此,在选用开发系统时,要选择性能优良的开发系统。3、 单片机系统设计过程
7、简介单片机应用系统设计技术是电子技术领域中应用最为广泛的一项技术。掌握单片机系统的软/硬件开发技术,对于从事电子工程的专业技术人员来说,具有举足轻重的意义单片机系统的研制步骤和方法一般都分为总体设计、硬件电路的构思设计、软件的编制和仿真调试几个阶段。3.1总体设计确立功能特性指标,确定单片机的机型确定软件的编写和支持工具3.2 硬件电路设计外围扩展的存储器1、程序存储器2、数据存储器单片机的系统总线I/O口A/D和D/A转换器3.3软件设计确定系统资源确定程序结构确定数学模型确定程序流程编制程序4、 广告流水灯概述作为现代装饰的一种元素,广告流水灯被应用到许多地方,在诸多的娱乐场所、理发店、宾
8、馆、饭店、公司等的门外,我们都可以看得各式各样的广告流水灯。所谓的广告流水灯,就是将一系列的广告灯串联在一起,然后令这些灯按一定的次序逐个或几个的依次点亮或熄灭。由于广告灯点亮产生的效果就像流水一样,因此就称这类广告灯为广告流水灯我们的生活中有各种各样的广告流水灯,其形式和点亮的顺序是多种多样的,有单一颜色的几个灯按固定次序来点亮,有多个不同颜色的构成某一图案依次点亮的,也有多排广告灯按多种组合好的顺序循环点亮的,可以说各种各样的形式多不胜数,而如此多的灯,如此多的点亮顺序是如何控制的呢,这就是我们要解决的问题。5、 设计任务分析生活中有各种各样的流水广告灯,我们不可能一一进行分析,现在我们设
9、计其中一种最简单的广告流水灯,使用单片机控制8个彩灯的点亮,要求广告灯从左到右循环点亮两次,每灯点亮时间为0.2秒,再从右到左循环点亮两次,每灯点亮时间也为0.2秒,然后再所以的灯一起闪烁两次,每次灯亮的时间也为0.2秒,通过对其的设计,我们可以了解广告流水灯的控制原理,从而推广到各种复杂的广告流水灯。广告流水灯的控制即控制各个灯的点亮顺序,点亮方法,点亮时间,点亮次数等。我们使用单片机控制广告流水灯的工作,要实现上述功能,必修要求一块8051单片机,470的电阻8个,小彩灯8个,30uf的电容3个以及一个12MHz的晶体振荡器一个。6、 电路设计分析我们可以采用单片机的P2端口的八个引脚来控
10、制8个广告灯的点亮,电源局部采用5V的直流电源,晶体振荡器采用12MHz的石英晶体振荡器。下列图为采用单片机的I/O口控制广告流水灯的电路图: P2.1灯亮-P2.0灯亮,之后,再使所有广告灯闪烁两次,即先所有灯点亮,然后在所有灯熄灭,如此反复两次。流水广告灯设计电路图7、 程序设计分析在使用I/O口控制广告流水灯的程序中,我们可以使用多种不同的方法来实现。方法一:我们可以使用一般简易端口控制方法来控制广告流水灯;方法二:使用定时器的不同工作方式来实现广告灯控制程序设计;方法三:利用中断控制法来实现广告灯控制程序设计。对于方法一,我们又可以使用两种不同的方法来实现,第一种是将移动前的显示初值通
11、过程序来给定,然后逐次运用左移或右移指令,从而实现显示值的移动点亮;另一种方法是将所有的显示值编成一个表,然后在程序中通过差异的方式来逐个输出各显示值的数据。设计中要求灯每次亮两次后再熄灭,必将使用到延时程序,所有可以事先编写出延时程序来。对于方法二,我们可以使用定时器四种不同的工作方式来实现,可以通过定时器方式存放器TMOD来选择定时器的不同工作方式,即13位、16位、8位重装和两个8位独立计算数器,选择那种工作方式由TMOD的M1M0两位的状态设定。51单片机主要是通过TCON和TMOD两个特殊功能存放器来来实现的定时和计算功能的。7.1定时器控制存放器TCON定时器控制存放器TCON是一
12、个8位存放器, TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下列图所示。其中,TFl,TRl,TF0和TR0位用于定时器计数器;IEl,ITl,IE0和IT0位用于中断系统。各位定义如下:TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断效劳程序后,由硬件自动清“0”,在查询方式下用软件清“0”。TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。TF0:定时器0溢出标志。其功能及操作情况同TF1。T
13、R0:定时器0运行控制位。其功能及操作情况同TR1。IE1:外部中断1请求标志。IT1:外部中断1触发方式选择位。IE0:外部中断0请求标志。IT0:外部中断0触发方式选择位。 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下:1)、确定工作方式即对TMOD赋值;2)、预置定时或计数的初值可直接将初值写入TH0、TL0或TH1、TL1;3)、根据需要开放定时器/计数器的中断直接对IE位赋值;4)、启动定时器/计数器定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount
14、=1/12osc。如果晶振为12MHz,那么计数周期为: T=1/12106Hz1/12=1s下面介绍一下确定时时/计数器初值的具体方法。因为在不同工作方式下计数器位数不同,因而最大计数值也不同。现假设最大计数值为M,那么各方式下的最大值M值如下:方式0:M=213=8 192方式1:M=216=65 536方式2:M=28=256方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时器/计数器是作“加1计数,并在计数满溢出时产生中断,因此初值X可以这样计算:X=M-计数值7.2定时器控方式存器TMOD TMOD的格式如下列图所示。 由图可见,TMOD的高4位用于T1,低4使用于T
15、0,4种符号的含义如下:GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器计数器的翻开或关闭。CT:定时器计数器选择位。C/T1,为计数器方式;CT0,为定时器方式。M1M0:工作方式选择位,定时器计数器的4种工作方式由M1M0设定。M0M1 工作方式 功能描述0 0 工作方式0 13位计数器0 1 工作方式1 16位计数器1 0 工作方式2 自动再装入8位计数器1 1 工作方式3 定时器0:分成两个8位计数器,定时器1:停止计数8、 流程图下列图为简易端口控制广告灯的两种程序编写方法下的程序流程图 开始设定显示初值设置右移次数设右移两轮显示输出设置左移次数
16、设左移两轮左移右移显示输出设闪烁两次灯全灭灯全亮闪烁次数到了吗左移轮数到没右移轮数到了没右移次数到了嘛左移次数到没表10.1 左移和右移指令法程序流程图开始将表头DPTR到表内取数DPTR+1取数放入P2延时2秒取数为结束吗表10.2 查表法程序流程图10、编写程序方法一:利用左移或者右移指令方法实现广告流水灯的控制的延时程序,当遇到灯亮或灭需0.2s时,可以调用该子程序。编写程序时,先编写左移指令,再编写右移指令,再最后编写闪烁指令。具体程序见附录。方法二、利用取表法实现广告流水灯的控制在用表格进行程序设计的时候,要用以下的指令来完成1利用MOVDPTR,DATA16的指令来使数据指针存放器
17、指到表的开头。2利用MOVCA,ADPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。因此,只要把控制码建成一个表,而利用MOVCA,ADPTR做取码的操作,就可方便地处理一些复杂的控制动作。 具体程序见附录。方法三:使用定时器的方法控制流水灯。定时器T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面我们使用T0来控制广告流水灯。工作方式0: 13位方式由TL1的低5位和TH1的8位构成13位计数器TL1的高3位无效。工作方式0的结构见下列图: 为定时计数选择:CT0,
18、T0为定时器,定时信号为振荡周期12分频后的脉冲;定时器T0能否启开工作,还受到了TR0、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE0时,只要TR01就可翻开控制门,使定时器工作;当GATE1时,只有TR01且INT01,才可翻开控制门。GATE,TR0,CT的状态选择由定时器的控制存放器TMOD,TCON中相应位状态确定,INT0那么是外部引脚上的信号。在方式0下,当为计数工作方式时,计数值的范围是: 18192213当为定时工作方式时,定时时间的计算公式为: 213计数初值晶振周期12其时间单位与晶振周期或机器周期相同ms。闪烁一次,因此可使定时器在各种工作方式下的
19、定时时间均为0.2s。定时0.2s的初值为:2x103=213计数初值晶振周期12计数初值为6192,即1830H,因此,在工作方式0下,可设TH0为18H,TL0为30H, TMOD存放器初始化为把定时器/计数器1设定为方式0,那么M1M000;为实现定时功能,应使C/T0;为实现定时器/计数器0的运行控制,那么GATE0。定时器/计数器1不用,有关位设定为0。因此TMOD存放器应初始化为00H。 由定时器控制存放器TCON中的TR0位控制定时的启动和停止 TR01启动,TR00停止。具体程序见附录。工作方式1:方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。与
20、工作方式0根本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。当为计数工作方式时,计数值的范围是:165536216当为定时工作方式时,定时时间计算公式为:216计数初值晶振周期12或216计数初值机器周期 计算计数初值216计数初值晶振周期12=2000 计数初值为63536,即0F830H,因此,在工作方式0下,可设TH0为F8H,TL0为30H, TMOD存放器初始化TMOD01H具体程序见附录。工作方式2:16位定时器/计数器被拆成两个8位存放器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计
21、数器,而TH0作为预置存放器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。当为定时工作方式时,定时时间计算公式为:28计数初值晶振周期12 或 216计数初值机器周期 计算计数初值28计数初值晶振周期12=2000 计数初值为6,即0006H,因此,在工作方式2下,可设TH0为00H,TL0为06H, TMOD存放器初始化TMOD10H工作方式3:TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计
22、数器0可以构成两个定时器或者一个定时器和一个计数器。当为定时工作方式时,定时时间计算公式为: 28计数初值晶振周期12或216计数初值机器周期 计算计数初值28计数初值晶振周期12=2000 计数初值为6,即0006H,因此,在工作方式2下,可设TH0为00H,TL0为06H, TMOD存放器初始化TMOD10H9、 广告流水灯的改良与推广广告流水灯的控制除了使用查表、定时器的方法进行控制外,还可以使用中断的方法进行编程。可以使用外部中断INT0控制广告流水灯,也可以使用记时中断和外部中断INT0同时存在的方法控制流水灯,还可以使用外部中断INT0和INT1同时存在的方法控制广告流水灯。10、
23、 参考文献1 余锡存,?单片机原理与接口技术?,西安电子科技大学,2007年2 肖倩,?单片机入门与趣味实验设计?,北京航空航天大学出版社,2007年3 林志琦,?基于Proteus的单片机可视化软硬件仿真?,北京航空航天大学出版社,2007年11、 附录附录一:利用左移或者右移指令方法实现的控制广告流水灯源程序附录二:利用查表的方法实现的控制广告流水灯源程序附录三:定时器T0工作在工作方式0时的源程序附录四:定时器T0工作在工作方式1时的源程序附录五:定时器T0工作在工作方式2时的源程序附录六:定时器T0工作在工作方式3时的源程序附录一:利用左移或者右移指令方法实现的控制广告流水灯源程序:O
24、RG 00HSTART: MOV A,#0FFH ;移动前,使所有的灯都不亮 CLR C MOV R1,#02H ;设从左到右移动两轮M1: MOV R2,#08H ;设从左到右移动8次LOOP: RLC A ;左移一位MOV P2,A ;输出到P2CALL DELAY ;调用延时程序DJNZ R2,LOOP ;左移不到七次就返回DJNZ R1,M1 ;循环不到两轮就继续MOV R1,#02H ;从右到左移动两轮M2: MOV R2,#07H ;每轮移动7次LOOP1: RRC A ;右移一位MOV P2, A ;输出到P2CALL DELAY ;调用延时程序DJNZ R2,LOOP1 ;右移
25、不到七次就返回DJNZ R1,M2 ;循环不到两轮就继续MOV R1,#02H ;闪烁两次M3: MOV P2,#0FFH ;全灭CALL DELAY ;调用延时程序MOV P2,#00H ;全亮CALL DELAY ;延时DJNZ R1,M3 ;闪烁不到两次就继续JIM STARTDELAY: MOV R3,#20H ;延时程序D1: MOV R4,#20HD2: MOV #248HDJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND附录二:利用查表的方法实现的控制广告流水灯源程序: ORG 00HSTART: MOV DPTR,#TABLELOOP: CLR A MOVC
26、 A,A+DPTR CJNE A,#01H,LOOP1 JMP STARTLOOP1: MOV P1,A MOV R3,#20 LCALL DELAY INC DPTR JMP LOOPDELAY: MOV R4,#20D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 DJNZ R3,DELAY RETTABLE: DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0
27、FDH,0FEH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H, 0FFH,00H, 0FFH DB 01H END附录三:定时器T0工作在工作方式0时的源程序:ORG 00HMOV TMOD, #00HSTART: MOV A,#0FFH ;移动前,使所有的灯都不亮 CLR C MOV R1,#02H ;设从左到右移动两轮D1: MOV R2,#08H ;设从左到右移动8次LOOP: RLC A ;左移一位MOV P2,A ;输出到P2MOV R3,#100CALL DELAY ;调用延时程序DJNZ R2,LOOP ;左移不到七次
28、就返回DJNZ R1,D1 ;循环不到两轮就继续MOV R1,#02H ;从右到左移动两轮D2: MOV R2,#07H ;每轮移动7次LOOP1: RRC A ;右移一位MOV P2, A ;输出到P2MOV R3,#100CALL DELAY ;调用延时程序DJNZ R2,LOOP1 ;右移不到七次就返回DJNZ R1,D2 ;循环不到两轮就继续MOV R1,#02H ;闪烁两次D3: MOV P2,#0FFH ;全灭 MOV R3,#100CALL DELAY ;调用延时程序MOV P2,#00H ;全亮MOV R3,#100CALL DELAY ;延时DJNZ R1,M3 ;闪烁不到两
29、次就继续JIM START;延时程序DELAY: SETB TR0 ;启动T0开始时间AGAIN MOV TL0,#30H ;设定初值为2ms MOV TH0,#18HLOOP2: JBC TF0,LOOP3 ;检查是否溢出 JMP LOOP2LOOP3: DJNZ R3,AGAIN ;设定时间不到就继续 CLR TR0 ;设定时间到就停止T0记时 RETEND附录四:定时器T0工作在工作方式1时的源程序:ORG 00HMOV TMOD, #01HSTART: MOV A,#0FFH ;移动前,使所有的灯都不亮 CLR C MOV R1,#02H ;设从左到右移动两轮D1: MOV R2,#0
30、8H ;设从左到右移动8次LOOP: RLC A ;左移一位MOV P2,A ;输出到P2MOV R3,#20CALL DELAY ;调用延时程序DJNZ R2,LOOP ;左移不到七次就返回DJNZ R1,D1 ;循环不到两轮就继续MOV R1,#02H ;从右到左移动两轮D2: MOV R2,#07H ;每轮移动7次LOOP1: RRC A ;右移一位MOV P2, A ;输出到P2MOV R3,#20CALL DELAY ;调用延时程序DJNZ R2,LOOP1 ;右移不到七次就返回DJNZ R1,D2 ;循环不到两轮就继续MOV R1,#02H ;闪烁两次D3: MOV P2,#0FF
31、H ;全灭 MOV R3,#20CALL DELAY ;调用延时程序MOV P2,#00H ;全亮MOV R3,#20CALL DELAY ;延时DJNZ R1,M3 ;闪烁不到两次就继续JIM START;延时程序DELAY: SETB TR0 ;启动T0开始时间AGAIN MOV TL0,#30H ;设定初值为2ms MOV TH0,#F8H LOOP2: JBC TF0,LOOP3 ;检查是否溢出 JMP LOOP2LOOP3: DJNZ R3,AGAIN ;设定时间不到就继续 CLR TR0 ;设定时间到就停止T0记时 RETEND附录五:定时器T0工作在工作方式2时的源程序:ORG
32、00HMOV TMOD, #02HSTART: MOV A,#0FFH ;移动前,使所有的灯都不亮 CLR C MOV R1,#02H ;设从左到右移动两轮D1: MOV R2,#08H ;设从左到右移动8次LOOP: RLC A ;左移一位MOV P2,A ;输出到P2MOV R3,#200CALL DELAY ;调用延时程序DJNZ R2,LOOP ;左移不到七次就返回DJNZ R1,D1 ;循环不到两轮就继续MOV R1,#02H ;从右到左移动两轮D2: MOV R2,#07H ;每轮移动7次LOOP1: RRC A ;右移一位MOV P2, A ;输出到P2MOV R3,#200CA
33、LL DELAY ;调用延时程序DJNZ R2,LOOP1 ;右移不到七次就返回DJNZ R1,D2 ;循环不到两轮就继续MOV R1,#02H ;闪烁两次D3: MOV P2,#0FFH ;全灭 MOV R3,#200CALL DELAY ;调用延时程序MOV P2,#00H ;全亮MOV R3,#200CALL DELAY ;延时DJNZ R1,M3 ;闪烁不到两次就继续JIM START;延时程序DELAY: SETB TR0 ;启动T0开始时间AGAIN MOV TL0,#06H ;设定初值为2ms MOV TH0,#00H LOOP2: JBC TF0,LOOP3 ;检查是否溢出 J
34、MP LOOP2LOOP3: DJNZ R3,AGAIN ;设定时间不到就继续 CLR TR0 ;设定时间到就停止T0记时 RETEND附录六:定时器T0工作在工作方式3时的源程序:ORG 00HMOV TMOD, #03HSTART: MOV A,#0FFH ;移动前,使所有的灯都不亮 CLR C MOV R1,#02H ;设从左到右移动两轮D1: MOV R2,#08H ;设从左到右移动8次LOOP: RLC A ;左移一位MOV P2,A ;输出到P2MOV R4,#04A1: MOV R3,#200CALL DELAY ;调用延时程序DJNZ R4,A1DJNZ R2,LOOP ;左移
35、不到七次就返回DJNZ R1,D1 ;循环不到两轮就继续MOV R1,#02H ;从右到左移动两轮D2: MOV R2,#07H ;每轮移动7次LOOP1: RRC A ;右移一位MOV P2, A ;输出到P2MOV R4,#04A2: MOV R3,#200CALL DELAY ;调用延时程序DJNZ R4,A2DJNZ R2,LOOP1 ;右移不到七次就返回DJNZ R1,D2 ;循环不到两轮就继续MOV R1,#02H ;闪烁两次D3: MOV P2,#0FFH ;全灭MOV R4,#04A3: MOV R3,#200CALL DELAY ;调用延时程序MOV P2,#00H ;全亮MOV R4,#04A4: MOV R3,#200CALL DELAY ;延时DJNZ R4,A4DJNZ R1,D3 ;闪烁不到两次就继续JIM START;延时程序DELAY: SETB TR0 ;启动T0开始时间AGAIN MOV TL0,#06H ;设定初值为250usLOOP2: JBC TF0,LOOP3 ;检查是否溢出 JMP LOOP2LOOP3: DJNZ R3,AGAIN ;