《基于单片机的红外发射控制灯的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的红外发射控制灯的设计.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流基于单片机的红外发射控制灯的设计.精品文档.基于单片机的红外发射控制灯的设计摘要:以HSOO38作为红外接收头,介绍了红外遥控信号的单片机软件编码解码方法,包括编码、调制和解码的原理,以及硬件电路和程序实现。经实验测试,该方法能使红外遥控信号可靠发送和接收,并执行相应的功能。关键词:红外遥控;单片机;编码解码1绪论1.1 引言红外遥控是一种无线、非接触控制技术、具有抗干扰能力强,信息传输可靠,功耗低,成本低,易于实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。1.2 本设计所要做的工作该设计由硬件和软件共
2、同组成。首先是硬件部分,该系统的最终实现选用的单片处理器(89S52)、键盘、LED显示、单片机的串行接口电路。因此应充分了解单片机,包括存储空间,并行口,串行口,串行通信,定时器等,掌握非编码键盘和LED的动态显示,并要在充分满足系统可实现的功能的基础上考虑到器件的价格,制版的复杂度和软件的实现难度。其次是软件部分,该系统的软件环境是S52,因此应了解S52的编程方法,常用的一些编程技巧,调试运行程序,尽量使程序简洁,易懂,便于移植,编译效率高,健壮性好。为了用计算机解决某一具体问题或实现某一特定的功能,总要先对问题或功能要求进行分析,确定相应的算法和步骤,然后选择相应的指令,并按一定的顺序
3、排列起来,这就构成了解决某一问题或实现某一特定功能的应用程序。编制好的程序通过仿真器进行调试,将调试成功的程序通过T写入器写入到芯片AT89S52中,最后把芯片AT89S52插入连接完毕的硬件系统中投入实际使用。2系统总体设计方案2.1 系统方案选择(1)红外编码和发射部分 方案一:专用芯片解决方案。 专用红外编码芯片种类很多,如日本三菱公司的M50426AP、PT2262、BL9148、zD6631等,此类芯片一般集载波振荡、编码、发射于一体,具有很强的抗干扰能力,外围电路简单,使用很方便,而且价格也很低。通用的遥控器上大多使用此类专用芯片。但是,专用芯片也有致命的弱点:专用芯片的应用灵活性
4、很差,其内部编码已经固定,无法修改内部数据,不适用于经常需要改动传送数据的场合;专用芯片几乎都是面向指令型的编码遥控方式,传输效率较低;大多数的专用芯片的内部编码及技术数据已经公诸于世,会产生安全漏洞。 方案二:微处理器单独解决方案。电路如图(a)所示。 该方案使用微处理器的I/O口直接产生38KHZ已调波,驱动红外发光二极管,发射红外数据。38KHZ方波由CPU的定时器产生或由软件编程产生。红外编码工作由软件完成,因此,红外编码方案可以任意设计,外部只需配接非常简单的硬件电路,大大降低了了电路的复杂性,有利于降低成本,减小遥控器的体积。由于使用软件编码方案,占用了CPU的一定的时间,CPU处
5、理速度受到一定的影响,但是,对于遥控器这一类功能比较单一的系统来说,处理任务比较少,根本影响不了CPU的处理效率,仅仅是增加了软件编程的负担。 经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,仅仅是增加了软件的编程负担,使得红外编码非常灵活,所以采用该方案。(2)红外接收和解码部分 方案一:分立元件解决方案,电路如图2-1所示。 图中RD1为红外接收管;R3、R4,VT1构成反相放大器;VT2、R5、C2构成滤波器,滤掉38KHZ的高频载波;R6、R7、VT3构成整形电路,将滤波后的波形处理为较好的方波;Cl、C3为耦合电容;R2为限流电阻,当接收到较强的信号是保护VT1。该方
6、案最大的优点是供电电压比较低,可用两节电池3V电压供电。但是,由于电路使用分立元件构成,其稳定性和抗干扰能力不高,影响红外数据传输的准确性。图2-1低电压红外接收电路方案二:集成电路解决方案,电路如图(b)所示。 该方案使用一体化红外接收器,集红外接收和放大于一体,不需任何外接元件,就能完成从红外接收到输出与TTL电平兼容的所有工作,而体积和普通的塑封三极管大小一样。 经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,通过软件编程,使得红外编码非常灵活,所以采用该方案。(3)器件选择:采用12MHZ的晶振;红外接收端采用价格便宜,性能可靠的一体化红外接收头:HSOO38;采用89
7、S52进行控制;控制方面采用小灯进行模拟。2.2 系统构成框图单片机红外发射电路一体化红外接收头单片机编码调制发送接收解调解码2.3系统工作原理红外遥控有发送和接收两个组成部分:发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HSOO38,它接收红外信号频率为38KHz,周期约26US)接收红外信号,它同时对信号进行放大、检波、整形,得到相应电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。(1)二进制信号的编码 本设计采用不同的脉宽宽度来实现二进制信号的编码,可由发送单片机
8、来完成。用图2-2(a)表示二制信号中的高电平1,其特征是脉冲中低电平的宽度等于0.26ms,相当于10个26us的宽度,高电平的宽度等于0.52ms,相当于20个26us的宽度;用图2-2(b)表示二进制信号中的低电平0,其特征是脉冲中高电平的宽度等于0.26mS,而低电平的宽度是高电平的二倍,等于0.52ms,相当于20个26us的宽度。上述10个和20个脉冲宽度还可适当调整,以适应不同数据传输速度的需要。图2-2(a) 1的表示图2-2(b) 0的表示(2)二进制信号的调制 二进制信号的调制仍由发送单片机来完成,它把编码后的二进制信号调制成频率为38KHz的间断脉冲串,相当于用二进制信号
9、的编码乘以频率为38KHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图2-3所示,A是二进制信号的编码波形,B是频率为38KHz(周期为26uS)的连续脉冲串,c是经调制后的间断脉冲串(相当于C=A*B),用于红外发射二极管发送的波形。图2-3中,待发送的二进制数据为10。10个脉冲A发送前的二进制数据0、1编码C=A*B、调制后的二进制信号(发送)T=26us20个脉冲单个脉冲B、脉冲调制图2-3、二进制信号的调制(3)二进制信号的解调 二进制信号的解调由一体化红外接收头HSOO38来完成,它把收到的红外信号(图2-4中波形D,也是图2-3中波形(C)经内部处理并
10、解调复原,输出图2-4中波形E(正好是对图2-3中波形A的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。二进制信号的解码由接收单片机来完成的它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。如图2-4,把波形E解码后还原成数据信息101。D、红外接收头接收的波形(输入)E、解调后的输出波形图2-4、HS0038的输入输出波形(4)基于字节传输的红外遥控数据格式在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26uS)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输结束
11、,如图2-5所示。传输开始8位数据传输结束20个脉冲高位在前,低位在后10个脉冲图2-5 基于字节传输的红外遥控数据格式 3.硬件电路设计3.1 主要器件介绍3.1.1 芯片AT89S52(1)主要性能: 与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。(2)功能特性描述: At89s52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系
12、统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2
13、种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52 (3)管脚说明:P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节
14、。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下所示。 在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计
15、数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访
16、问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。(4)振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振
17、荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。(5)时钟电路时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZMCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。AT89S52是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。CMOS型单片机内部(如AT89S52)有一个可控的负
18、反馈反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图31为CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清“0”PD,使振荡器工作产生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。图31CMOS型单片机时钟电路框图(6)复位电路计算机在启动运行时都需要复位,使中央处理
19、器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后,该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3接口都输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。本设计采用的复位方式是自动复位方式。对于MOS(AT89S52)单片机只要接一个电容至VCC即可(见图32)。在加电瞬间,电容通过电阻充电,就在RST端出现一
20、定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电进应保持20ms以上的高电平。RC时间常数越大,上电进RST端保持高电平的时间越长。若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。图323.1.2 集成电路74 LS2174LS21是由四输入与门构成,74LS21集成电路的引脚分布图如图3-3所示1A Vcc1B 2DNC 2C1C N
21、C1D 2B1Y 2A接地 2Y 图3-3 74LS21集成电路的引脚分布图3.1.3接收器HS0038一体化红外接收头HSOO38的外部结构如图3-4所示,1脚GND接电源地,2脚VCC接十SV,3脚OUT为数据输出端( TTL电平,反相输出),可直接与单片机相联。图3-4 HS0038的外观及引脚3.2主要电路设计(1)发射电路原理图如图3-5所示:图3-5 发射电路原理图(2)接收电路原理图如图3-6所示: 图3-6接收电路原理图各个基本电路图的设计(1)发射接收电路如图3-7所示:图3-7(a)接收电路 图3-7(b) 发射电路(2)键盘扫描:采用4*4键盘,键盘扫描采用低电平扫描,中
22、断定时扫描方式。电路图如3-8所示,其公共端连接VCC,初始时,令P2=F0H,无论哪个按键被按下,都将产生中断,开启定时器10ms,扫描键盘。开始进行扫描时,P2.0P2.3点均保持高电平。P2.4P2.7只能有一个为低电平。程序流程图如图4-1所示。 图3-8 键盘扫描电路(3)控制电路:采用小灯的亮灭来模拟实际应用中的电路,电路如图3-9所示。图3-9 小灯控制电路4软件设计4.1程序流程图初始化第一行按键输出扫描码第二行按键第三行按键第四行按键下一行超过四行?防抖取出键值送入23HCLR P1.7结束yesoyesoyesoyesoyesonoo图4-1键盘扫描图4-2、定时中断扫描
23、RETI键盘扫描10ms到了开始初始化P1.7=1?数据11编码0编码发送下一位8位结束CLRP1.7noonoyesoyesonoyeso图4-3发送流程图开始初始化接收数据11解码0解码接收下一位8位结束数据判别取值控制noyesonoyeso图4-4、接收流程图5设计结果经过测验,红外遥控信号的发送和接收没有出现传输误码,发光二极管可以准确地显示发射信号,可靠使用,在编码解码方面降低了硬件成本。若在数据传输协议中,加上地址帧(设备号识别)和校验帧,该方法在计算机系统中将有更广泛的应用。6论文小结在本次设计中,遇到了不少问题,首先键盘始终到1,2,3,4四个键,我先检查硬件,排除硬件原因,
24、其次对软件进行分析,发现未对按键设置扫描码初始值。其次是数据发送不稳定,我在51旁接上滤波电容,还有尽量减少外围元件的干扰;对编码进行完善,使数据接收更稳定。经过本次设计基本掌握红外发射和接收传感器的使用,信号的简单编码和解码;基本懂得用软件来实现键盘的扫描,数据发送接收。附录;*发送程序*ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP TIME0ORG 0013HLJMP INT1INITIALIZE: MOV 23H, #0FFH ;发送数据初值MOV 36H, #20H ;TIME0定时10msmov p2, #00001111b ;产生键盘中
25、断扫描MOV TMOD, #2 ;TIME0方式2MOV TH0, #6 ;250us定时初值MOV TL0, #6 ;250us定时初值CLR TR0 ;关闭TIME0计数SETB ET0 ;开启TIME0SETB IT1 ;置INT0边沿触发SETB EX1 ;开启INT0SETB EA ;开启总中断 RETSTART: LCALL INITIALIZE ;初始化SEND: mov p2, #00001111b ;产生键盘中断扫描jb p1.7, $clr EAMOV A, 23h ;发送数据mov p0, a ;数据显示MOV R4,#8 ;2us 发送8位MOV R5,#30 ;2us
26、 传输开始(同步贞),发送30个脉冲LCALL H26us ;3us 产生一个周期26us的脉冲CO: RLC A ;1us 先发送字节的高位 JC SEND1 ;2us 判断发送0还是1SEND0: MOV R5, #20 ;2us 发送编码0,先发送20个脉冲宽度的低电平LCALL L26us ;3us 产生一个宽度位26us的低电平MOV R5,#10 ;2LCALL H26us ;3MOV R5,#20 ;2LCALL L26us ;3MOV R5,#10 ;2LCALL H26us ;3LJMP NEXT ;3SEND1: MOV R5, #10 ;2us 发送编码1,先发送10个脉
27、冲宽度的低电平LCALL L26us ;3MOV R5,#20 ;2LCAL L H26us ;3MOV R5,#10 ;2LCALL L26us ;3MOV R5,#20 ;2LCAL L H26us ;3LJMP NEXT ;3NEXT: DJNZ R4, CO ; 发送8位,未完,继续MOV R5, #30 ;2 传输结束,发送30个脉冲的低电平LCALL L26us ;3SETB p1.7SETB EALJMP SEND ;新的一轮数据传送 RET;*26us高电平脉冲*H26us: SETB P1.0 ;1us MOV R6, #5 ;2us DJNZ R6, $ ;2us*R6 c
28、lr P1.0 ;1us MOV R6, #5 ;2us DJNZ R6, $ ;2us*R6 DJNZ R5, H26us ;2us RET ;1us忽略;*26us低电平脉冲*L26us: CLR P1.0 ;1us NOP ;1us MOV R6, #10 ;2us DJNZ R6, $ ;2*R6 DJNZ R5, L26us ;2us RET ;1us忽略;*外部中断1*INT1: PUSH ACC PUSH PSW CLR EX1 SETB TR0 ;开启定时器0INT1RET: SETB EX1 POP PSW POP ACC RETI;*定时器0*TIME0: PUSH ACC
29、 PUSH PSW SETB RS1 CLR RS0 clr ex1BEGIN: MOV R0, #0 MOV R1, #4 MOV a, #0EFH;*键盘扫描*SCAN: MOV P2, A ;扫描,设定输入模式JNB P2.0, KEYIN ;检测第一行INC R0 ;下一个按键JNB P2.1, KEYIN ;检测第二行INC R0JNB P2.2, KEYIN ;检测第三行INC R0JNB P2.3, KEYIN ;检测第四行INC R0RL A ;下一个扫描码DJNZ R1, SCAN ;扫描下一列DJNZ 36H, BEGIN ;重新扫描MOV 36H, #20H ;10ms定
30、时值LJMP TIME0RETKEYIN:LCALL DEL ;调用防抖子程序MOV A, R0 ;取回按键值anl A, #0FH ;取回按键值MOV 23H, A ;存入按键值CLR p1.7LJMP TIME0RETTIME0RET: setb ex1 mov p2,#00001111b CLR TR0 POP PSW POP ACC RETI;*延时16ms*DEL: MOV R7, #40D1: MOV R6, #200 DJNZ R6, $ DJNZ R7, D1 RET END;*接收程序*RECEIVE: MOV R5, #8 ;2us 接收8位JB P1.1, $ ;3us
31、等待同步贞,即低电平MOV R7, #10 ;2us 同步贞(低电平)到来后,延时等待10个脉冲的时间LCALL DEL10us ;3us 调用子程序,产生一个26us的延时JB P1.1, RECEive ;3 AMOV R7, #10 ;2LCALL DEL10us ;3JB P1.1 , RECEive ;3 BJNB P1.1, $ ;跳过后续低电平CO: MOV R7, #5 ;2us 编码中的高电平到来后,延时等待5个脉冲的时间LCALL DEL10us ;3JNB P1.1, REceive ;3 C 延时15个脉冲后,判断P1.1MOV R7, #10 ;2LCALL DEL1
32、0us ;3 DJNB P1.1, REceive1 ;3 p1.1=1,接收为0,否则为1receive0:mov r7, #10 ;2 LCALL DEL10us ;3 Jb p1.1, receive ;3 E mov r7, #10 ;2 LCALL DEL10us ;3 jNb p1.1, receive ;3 F mov r7, #10 ;2 LCALL DEL10us ; 3 jNb p1.1, receive ;3 G mov r7, #10 ;2 LCALL DEL10us ;3 jb p1.1, receive ;3 H CLR C RLC AjNb p1.1, $ ;跳过
33、后续低电平LJMP NEXTREceive1:mov r7, #10 ;2 LCALL DEL10us ;3 jb p1.1, receive ;3 E mov r7, #10 ;2 LCALL DEL10us ;3 jNb p1.1, receive ;3 F mov r7, #10 ;2 LCALL DEL10us ;3 jb p1.1, receive ;3 G mov r7, #10 ;2 LCALL DEL10us ;3 jb p1.1, receive ; 3 H SETBC RLCA jNb p1.1,$ ;跳过后续低电平 LJMP NEXTNEXT: DJNZ R5, CO ;
34、8位未接收完继续;*接收数据判别并处理* mov 25h,a cjne a,#00h,k1 cpl p0.0 ljmp receivek1: cjne a,#01h,k2 cpl p0.1 ljmp receivek2: cjne a,#02h,k3 cpl p0.2 ljmp receivek3: cjne a,#03h,k4 cpl p0.3 ljmp receivek4: cjne a,#04h,k5 cpl p0.4 ljmp receivek5: cjne a,#05h,k6 cpl p0.5 ljmp receivek6: cjne a,#06h,k7 cpl p0.6 ljmp
35、receivek7: cjne a,#07h,k8 cpl p0.7 ljmp receivek8: cjne a,#08h,k9 cpl p2.0 ljmp receivek9: cjne a,#09h,k10 cpl p2.1 ljmp receivek10: cjne a,#0ah,k11 cpl p2.2 ljmp receivek11: cjne a,#0bh,k12 cpl p2.3 ljmp receivek12: cjne a,#0ch,k13 cpl p2.4 ljmp receivek13: cjne a,#0dh,k14 cpl p2.5 ljmp receivek14: cjne a,#0eh,k15 cpl p2.6 ljmp receivek15: cjne a,#0fh,k16 cpl p2.7 ljmp receivek16: LJMP RECEive;*26us低电平*DEL10us:D1: MOV R6,#12 ;2 DJNZ R6,$ ;2*R6 DJNZ R7,D1 ;2 RET ;1
限制150内