EV无线遥控解码编码程序
- 格式:docx
- 大小:9.38 KB
- 文档页数:7
PT2262与百万编码EV1527的区别一、PT2262编码简介●常用的无线编码芯片●PT2262有12根三态【地址/数据】引脚,每个引脚的状态有三种:高、低、悬空●对引脚位编码可形成12位编码【XXXXXXXXXXXX】,因每个引脚有3种状态,所以共312种组合●编码的每一位含两个脉冲周期,单个脉冲周期是软件无线接收时的处理单位●脉冲周期有两种,低电平较宽的称为0;低电平较窄的称为1●编码的每一位可以用00/11/01来表示【图一:PT2260/2262的无线编码方式】●12位编码对应24个脉冲周期,即通常所说的24位●软件接收无线码时,按脉冲为单位接收,一共24个脉冲,需要接收24位●24位中可根据需要进行地址/数据分配●遥控器上通常是20位作为地址,后面4位作为数据,即10根引脚作为地址编码、2根引脚作为数据编码用。
●探测器上通常是24位都作为地址,即12根引脚都做地址编码用。
二、PT2262编码方式在遥控器和探测器上的使用●遥控器编码方式【分地址和数据】(1)硬件上使用PT2262芯片,遵循PT2262编码方式(2)用12根地址/数据引脚中的8根做地址编码,另外4根用来做键值数据编码。
(3)地址编码的组合数为38=6561种,最多6561个遥控器地址不重复(4)24位中后面8位定义为按键值,一般为0x03,0x0C,0x30,0xC0●探测器编码方式【只有地址,无数据位】(1)硬件上使用PT2262芯片,遵循PT2262编码方式(2)用12根地址/数据引脚中的12根全部做地址编码(3)地址编码的组合数为312=531441种,最多531441个探测器地址不重复(4)24位中全部为地址位,没有数据位三、EV1527百万编码简介●可预烧录20位地址码,共220=1048576,104万种地址组合。
●PT2262的理想升级换代产品●硬件控制无线发射时的编码方式与PT2262完全一样●工作电压3-13V●四个按键输入,最多组合15个按键,对应24位的4位●可以软件控制无线发射,发射时,24位逐位发送出来四、EV1527 与PT2262比较设置方式软件设置手工跳线选择引脚封装体积小,SOP8封装16或18脚DIP/SOP封装发码方式硬件固定发码或软件控制发码硬件固定发码(如图1所示),不可更改[1]芯片价格价格1.3元价格1.5烧码数目20个位元可预烧220=1048576种不可烧录,硬件跳线编码[2] 按键输入4个,对应24位的4位4个,对应24位的8位(A0-A8,D0-D4)或2个,对应24位的4位(A0-A10,D0-D1)EV1527编码多、功能强大,硬件或软件控制发码PT2262编码少、功能简单,硬件控制发码[1]注:EV1527可以预先烧录编码,然后硬件控制发射,如使用EV1527的遥控器采用此种方式。
遥控器解码操作方法
遥控器解码操作方法通常包括以下几个步骤:
1. 确认解码器类型:首先要确定遥控器所使用的编码类型,例如NEC、RC5、SONY等。
2. 获取遥控器编码:使用红外线接收器将遥控器对准解码器,按下任意按钮,解码器会接收到红外信号。
3. 解码红外信号:将接收到的红外信号输入解码器,解码器会将信号转换成数字编码。
4. 进行处理:根据不同的解码器类型,可以进行不同的处理操作,例如将数字编码转换成对应的功能,或者将解码器输出的数字编码发送给其他设备。
总体而言,遥控器解码操作方法是通过红外接收器将遥控器信号转换成数字编码,并进行相应处理,以实现对其他设备的控制。
单片机软件解码在无线遥控中的应用
郑文
【期刊名称】《浙江万里学院学报》
【年(卷),期】2009(22)5
【摘要】介绍了一种在无线遥控应用中用单片机实现软件解码的方法.设计采用义隆单片机EM78P156N来作为主控芯片,无线发射部分采用eV1527编码芯片来实现数据的编码,结合硬件电路并通过软件编程的方法来实现无线编码数据的软件解码.
【总页数】6页(P43-48)
【作者】郑文
【作者单位】浙江万里学院,浙江,宁波,315100
【正文语种】中文
【中图分类】G642.423
【相关文献】
1.模糊控制在红外遥控软件解码中的应用 [J], 孙利涛;赵全邦;张建江
2.红外遥控器软件解码的研究及其在单片机控制产品设计中的应用 [J], 李经达
3.51单片机综合学习系统——无线遥控模块的应用 [J], 徐玮
4.单片机在无线遥控接收电路中的应用 [J], 匡忠辉
5.基于单片机的红外遥控软件解码及应用 [J], 邱寄帆
因版权原因,仅展示原文概要,查看原文内容请购买。
e V1527简介:eV1527是一片由CMOS 设计制造的可预烧内码的学习码编码IC ,由软件解码;内码共有20个位元可预烧1048576组(220)内码组合,降低使用上编码重复的机率。
功能简述: 脚位图: 超通和龙科技公司版权所有,未经授权不得私自复制、传播等◆低功耗静态电流<1.0μA ; ◆工作电压Vcc=3.0-13V ;◆四个按键输入,最多可组合至15个按健;◆内含振荡线路,只须外接一个电阻(推荐值330K ); ◆eV1527可代替RT1527以及升级FP527、eV527;◆小体积8脚贴片封装。
是PT2260、PT2262理想的升级换代产品; ◆生产极为方便,无须在PCB 上编码。
脚位功能说明:Symbol Description Pin I/OOSC1 振荡线路输入脚接电阻至电源 1 IVcc 电源正 2GND 电源负 3 TXD 串列资料输出脚 4 OK0 按健输入脚内含接地电阻 5 I K1 按健输入脚内含接地电阻 6 I K2 按健输入脚内含接地电阻 7 I K3按健输入脚内含接地电阻 8 I基本电气特性:Parameter Conditions Symbol Min.Typ. Max. Unit Operating V oltageVcc3513V Stand by CurrentVcc=12V ,OSC stopK1-K3=LOW Output Unloaded Isb 1.02.0 μA Operating Current Vcc=12V Iop 0.5 0.8 mA Source Current Vcc=12V ,V oh=6V Ioh 5 mA Sink CurrentVcc=12V ,V oI=6VIOI3mAOperating Freg Fop 80K HzAbsolute Maximum RatingsSymbol Parameter Conditions Rating Unit Vcc Supply voltage -0.3~14 V VI Input voltage -0.3~Vcc+0.3 V VO Output voltage -0.3~Vcc+0.3 V Tst Storage Temp -40~125 ℃ Top Operating Temp -20~70℃Pdis Max. PowerDissp Vcc=12V 300mW串列资料输出格式描述:资料格式:同步内码C0~C19(一百万组)D0 D1 D2 D3K0~K3按键组合表:K3 K2 K1 K0 D3 D2 D1 D00 0 0 1 0 0 0 10 0 1 0 0 0 1 00 0 1 1 0 0 1 10 1 0 0 0 1 0 00 1 0 1 0 1 0 10 1 1 0 0 1 1 00 1 1 1 0 1 1 11 0 0 0 1 0 0 01 0 0 1 1 0 0 11 0 1 0 1 0 1 01 0 1 1 1 0 1 11 1 0 0 1 1 0 01 1 0 1 1 1 0 11 1 1 0 1 1 1 01 1 1 1 1 1 1 1振荡阻值表:(16 LCK)3V 4V 5V 6V 7V 8V 9V 10V 11V 12V 13V 超通和龙科技公司版权所有,未经授权不得私自复制、传播等47K 346us 306 us 284 us 270 us 262 us 254 us 248 us 242 us 238 us 234 us 230 us 51K 368us 322 us 300 us 288 us 278 us 270 us 264 us 258 us 254 us 250 us 246 us 56K 400us 354 us 330 us 316 us 306 us 298 us 292 us 286 us 282 us 278 us 274 us 62K 430us 384 us 358 us 344 us 334 us 326 us 318 us 312 us 308 us 302 us 300 us 68K 456us 408 us 382 us 368 us 356 us 348 us 342 us 336 us 330 us 326 us 322 us 75K 492us 442 us 418 us 402 us 390 us 382 us 374 us 368 us 362 us 358 us 352 us 82K 528us 476 us 452 us 436 us 424 us 416 us 408 us 400 us 392 us 388 us 384 us 91K 580us 524 us 492 us 480 us 468 us 456 us 448 us 444 us 436 us 432 us 424 us 100K 612us 560 us 528 us 512 us 500 us 488 us 480 us 472 us 464 us 460 us 456 us 120K 728us 668 us 636 us 616 us 604 us 592 us 584 us 576 us 568 us 560 us 556 us 150K 872us 808 us 772 us 752 us 740 us 728 us 716 us 704 us 696 us 688 us 684 us 180K 1.00ms 932 us 896 us 876 us 860 us 848 us 836 us 824 us 816 us 808 us 800 us 200K 1.10ms 1.04 ms 1.00 ms 980 us 960 us 950 us 940 us 920 us 910 us 910 us 900 us 220K 1.18ms 1.10 ms 1.07 ms 1.04 ms 1.03 ms 1.01 ms 1.00 ms990 us 980 us 970 us 960 us 240K 1.29ms 1.21 ms 1.18 ms 1.15 ms 1.14 ms 1.12 ms 1.11 ms 1.09 ms 1.08 ms 1.07 ms 1.06 ms 270K 1.44ms 1.35 ms 1.31 ms 1.29 ms 1.27 ms 1.25 ms 1.24 ms 1.22 ms 1.21 ms 1.20 ms 1.19 ms 300K 1.57ms 1.47 ms 1.43 ms 1.41 ms 1.39 ms 1.37 ms 1.35 ms 1.34 ms 1.33 ms 1.31 ms 1.31 ms 330K 1.69ms 1.60 ms 1.56 ms 1.53 ms 1.51 ms 1.49 ms 1.48 ms 1.46 ms 1.45 ms 1.44 ms 1.42 ms 360K 1.88ms 1.78 ms 1.74 ms 1.71 ms 1.69 ms 1.67 ms 1.65 ms 1.64 ms 1.62 ms 1.61 ms 1.59 ms 390K 1.98ms 1.88 ms 1.83 ms 1.81 ms 1.79 ms 1.77 ms 1.75 ms 1.73 ms 1.72 ms 1.70 ms 1.69 ms 430K 2.29ms 2.17 ms 2.13 ms 2.10 ms 2.08 ms 2.06 ms 2.04 ms 2.02 ms 2.01 ms 1.99 ms 1.97 ms 470K 2.38ms 2.26 ms 2.23 ms 2.20 ms 2.18 ms 2.16 ms 2.13 ms 2.12 ms 2.10 ms 2.08 ms 2.06 ms 510K 2.52ms 2.40 ms 2.38 ms 2.34 ms 2.32 ms 2.30 ms 2.28 ms 2.26 ms 2.24 ms 2.22 ms 2.20 ms 560K 2.76ms 2.62 ms 2.58 ms 2.56 ms 2.54 ms 2.52 ms 2.50 ms 2.48 ms 2.46 ms 2.44 ms 2.42 ms 620K 3.04ms 2.92 ms 2.88 ms 2.84 ms 2.82 ms 2.08 ms 2.78 ms 2.76 ms 2.74 ms 2.70 ms 2.68 ms 680K 3.32ms 3.18 ms 3.16 ms 3.12 ms 3.10 ms 3.08 ms 3.08 ms 3.06 ms 3.04 ms 3.02 ms 3.00 ms 750K 3.80ms 3.68 ms 3.64 ms 3.6 ms 3.60 ms 3.56 ms 3.52 ms 3.52 ms 3.48 ms 3.44 ms 3.44 ms 820K 3.92ms 3.80 ms 3.76 ms 3.76 ms 3.72 ms 3.68 ms 3.68 ms 3.64 ms 3.60 ms 3.60 ms 3.56 ms 910K 4.24ms 4.14 ms 4.10 ms 4.08 ms 4.04 ms 4.02 ms 4.00 ms 3.96 ms 3.94 ms 3.90 ms 3.88 ms 振荡电阻值与TD输出关系示意图:(此图仅供参考)超通和龙科技公司版权所有,未经授权不得私自复制、传播等超通和龙科技公司版权所有,未经授权不得私自复制、传播等振荡电阻阻值TDms820K680K560K 470K360K270K 180K。
红外遥控解码(EM78P153)程序范例红外遥控解码(EM78P153)程序范例--------------------------------------------------------------------------------发布时间:2007年1月4日 16时38分;芯片为EM78P153 (ST码);P64,P65接晶振,振荡模式为4MHz晶振;看门狗关,指令周期为2个CLOCK,P63为复位脚;*******************IO口的定义*********************PORT6 EQU 0X06IOC60 EQU 0X06;**************特殊功能寄存器的定义******************TCC EQU 0X01PC EQU 0X02PSW EQU 0X03IOCD0 EQU 0X0DIOCE0 EQU 0X0EIOCF0 EQU 0X0FRF EQU 0X0F;***************用户自定义的寄存器*******************COUNTER EQU 0X10CODE1 EQU 0X11CODE2 EQU 0X12CODE3 EQU 0X13CODE4 EQU 0X14LP_CNT0 EQU 0X15LP_CNT1 EQU 0X16TEMP EQU 0X17TEMPCODE EQU 0X18REPEAT_COUNTER EQU 0X19SEND_DATA EQU 0X1AUSER_CODE EQU 0X1BFLAG EQU 0X1C;*******************FLAG位定义**********************C EQU 0Z EQU 2TCIF EQU 0LEAD EQU 0REPEAT EQU 1INPUT EQU 1OUTPUT EQU 0ORG 0X000NOPNOPNOPNOPJMP 0X50;********************表格转换子程序程序****************** TABLE_CONVER:CLR TEMPTABLE_CONVER_1:MOV A,TEMPCALL TABLE_CONVERSION_INBC PSW,ZXOR A,CODE3JBC PSW,ZJMP EXIT_5INC TEMPJMP TABLE_CONVER_1EXIT_5:CALL TABLE_CONVERSION_OUTRET;**********************表格转换程序IN********************* TABLE_CONVERSION_IN:ADD PC,ARETL 0XD0 ;KEY_1RETL 0X58 ;KEY_2RETL 0XD8 ;KEY_3RETL 0X90 ;KEY_4RETL 0X18 ;KEY_5RETL 0X98 ;KEY_6RETL 0XE0 ;KEY_7RETL 0X68 ;KEY_8RETL 0XE8 ;KEY_9RETL 0X28 ;KEY_0RETL 0X20 ;KEY_3DRETL 0XA0 ;KEY_MUTERETL 0X40 ;KEY_VOCALRETL 0XE2 ;KEY_VOL+RETL 0XA2 ;KEY_VOL-RETL 0X52 ;KEY_TUNE FWDRETL 0X22 ;KEY_TUNE REVRETL 0X12 ;KEY_STOPRETL 0X80 ;KEY_<|RETL 0X82 ;KEY_|>RETL 0X02 ;KEY_OKRETL 0XF0 ;KEY_TUNERRETL 0X78 ;KEY_AM/FMRETL 0XF8 ;KEY_SAVERETL 0X50 ;KEY_AUDIO;**********************表格转换程序OUT********************* TABLE_CONVERSION_OUT:MOV A,TEMPADD PC,ARETL 0X35 ;KEY_1RETL 0X2D ;KEY_2RETL 0X25 ;KEY_3RETL 0X1D ;KEY_4RETL 0X34 ;KEY_5RETL 0X2C ;KEY_6RETL 0X24 ;KEY_7RETL 0X1C ;KEY_8RETL 0X33 ;KEY_9RETL 0X2B ;KEY_0RETL 0X10 ;KEY_3DRETL 0X18 ;KEY_MUTERETL 0X11 ;KEY_VOCALRETL 0X16 ;KEY_VOL+RETL 0X15 ;KEY_VOL-RETL 0X28 ;KEY_TUNE FWDRETL 0X2A ;KEY_TUNE REVRETL 0X22 ;KEY_STOPRETL 0X31 ;KEY_<|RETL 0X21 ;KEY_|>RETL 0X29 ;KEY_OKRETL 0X2E ;KEY_TUNERRETL 0X20 ;KEY_AUX-1RETL 0X23 ;KEY_AUX-2RETL 0X17 ;KEY_DVDORG 0X050MAIN:;*********************初始化寄存器********************** MOV A,@0B00000000IOW IOCE0MOV A,@0B11111101IOW IOCD0MOV A,@0B00000010IOW IOC60MOV A,@0B00000001MOV PORT6,AMOV A,@0B00000001IOW IOCF0CLR FLAGCLR TEMPCODECLR COUNTERCLR CODE1CLR CODE2CLR CODE3CLR CODE4MOV A,@0B10010000MOV USER_CODE,A;*********************扫描引导码********************** SCAN_LEAD_CODE:JBC PORT6,INPUTJMP SCAN_LEAD_CODECLR FLAGCLR REPEAT_COUNTERCLR TEMPCODECALL JUDGE_START_CODEJBS FLAG,LEADJMP SCAN_LEAD_CODE;*********************接收数据********************** RECEIVE_DATA_PROCEE:CLR TEMPCODECALL RECEIVE_DATAMOV A,TEMPCODEMOV CODE1,AMOV A,@0 ;判断用户码是否是00BC PSW,ZXOR A,CODE1JBS PSW,ZJMP SCAN_LEAD_CODECLR TEMPCODECALL RECEIVE_DATAMOV A,TEMPCODEMOV CODE2,AMOV A,@0XFF ;判断用户码是否是FFBC PSW,ZXOR A,CODE2JBS PSW,ZJMP SCAN_LEAD_CODECLR TEMPCODECALL RECEIVE_DATAMOV A,TEMPCODEMOV CODE3,ACLR TEMPCODECALL RECEIVE_DATAMOV A,TEMPCODEMOV CODE4,ACLR FLAG;*********************发送数据********************** SEND_DATA_PROCEE:JBS USER_CODE,6 ;ST码的次高位反相JMP COM_1 ;=0JMP COM_2 ;=1COM_1:BS USER_CODE,6JMP VVVCOM_2:BC USER_CODE,6JMP VVVVVV:CALL TABLE_CONVER ;调用码表转换子程序MOV CODE3,AREP:CALL TRANSMIT_DATABS PORT6,OUTPUTCALL JUDGE_REPEAT_CODE ;扫描引导码是否在重复? JBS FLAG,LEADJMP SCAN_LEAD_CODEJBC FLAG,REPEATJMP REP ;引导码是重复,继续扫描JMP RECEIVE_DATA_PROCEE ;引导码不重复,去接收新数据;****************引导码的检测子程序***************** JUDGE_START_CODE:CLR COUNTER ;清计数器JUDGE_START_CODE_0:JBC PORT6,INPUTJMP NO_HIGHCALL DELAY0.5MSJBC PORT6,INPUTJMP NO_HIGHINC COUNTERJMP JUDGE_START_CODE_0NO_HIGH:MOV A,COUNTERBC PSW,CSUB A,@20 ;20-AJBS PSW,CJMP EXIT_0 ;C=1,COUNTER>20MOV A,COUNTERBC PSW,CSUB A,@16 ;16-AJBC PSW,CJMP EXIT_0 ;C=0,COUNTER<16BS FLAG,LEADEXIT_0:JBC PORT6,INPUTJMP EXIT_0INC REPEAT_COUNTERRET;****************接收数据子程序********************** RECEIVE_DATA:MOV A,@8MOV COUNTER,AMOV A,@0B00100000CONTW ;停止记数CONTINUE_1:JBS PORT6,INPUTJMP CONTINUE_1CLR TCCMOV A,@0B00000100CONTW ;TCC开始记数CONTINUE_2:MOV A,TCCMOV TEMP,ABC PSW,CSUB A,@250JBS PSW,CJMP SCAN_LEAD_CODE ;C=0,TCC>250JBC PORT6,INPUTJMP CONTINUE_2MOV A,TCCMOV TEMP,ABC PSW,CSUB A,@60;142JBC PSW,CJMP X1 ;C=1,TCC<60JMP X2 ;C=0,TCC>60X1:BC TEMPCODE,0JMP EXIT_1X2:BS TEMPCODE,0JMP EXIT_1EXIT_1:DJZ COUNTERJMP HHMOV A,@0B00100000CONTW ;停止记数RETHH:BC PSW,CRLC TEMPCODEJMP CONTINUE_1;****************发送数据子程序********************** TRANSMIT_DATA:MOV A,@4MOV COUNTER,AMOV A,USER_CODE ;@0B10010000 ;发送ST的用户码MOV SEND_DATA,ACYCLE_1:JBS SEND_DATA,7JMP SEND_P_0JMP SEND_P_1SEND_P_1:CALL SEND_CODE_1 JMP EXIT_3SEND_P_0:CALL SEND_CODE_0 JMP EXIT_3EXIT_3:RLC SEND_DATA DJZ COUNTER JMP CYCLE_1MOV A,@8MOV COUNTER,AMOV A,CODE3 MOV SEND_DATA,A RLC SEND_DATA CYCLE_2:JBS SEND_DATA,7 JMP SEND_Q_0 JMP SEND_Q_1 SEND_Q_1:CALL SEND_CODE_1 JMP EXIT_4SEND_Q_0:CALL SEND_CODE_0 JMP EXIT_4EXIT_4:RLC SEND_DATA DJZ COUNTERJMP CYCLE_2RET;***************发送数据"1"子程序******************** SEND_CODE_1:MOV A,@0B00100000CONTW ;停止记数MOV A,@0B00000001 ;允许TCC中断IOW IOCF0MOV A,@35 ;引导脉冲的预置值MOV TCC,AMOV A,@0B00000001 ;选择预分频比为1:4 CONTWBC PORT6,OUTPUTWAIT_1:JBS RF,TCIFJMP WAIT_1MOV A,@0B00100000CONTW ;停止记数BC RF,TCIFMOV A,@32 ;代码"1"的预置值MOV TCC,AMOV A,@0B00000101 ;选择预分频比为1:64 CONTWBS PORT6,OUTPUTWAIT_2:JBS RF,TCIFJMP WAIT_2BC RF,TCIFMOV A,@0B00100000CONTW ;停止记数RET;***************发送数据"0"子程序******************** SEND_CODE_0:MOV A,@0B00100000CONTW ;停止记数MOV A,@0B00000001 ;允许TCC中断IOW IOCF0MOV A,@35 ;引导脉冲的预置值MOV TCC,AMOV A,@0B00000001 ;选择预分频比为1:4 CONTWBC PORT6,OUTPUTWAIT_3:JBS RF,TCIFJMP WAIT_3MOV A,@0B00100000CONTW ;停止记数BC RF,TCIFMOV A,@114 ;代码"0"的预置值MOV TCC,AMOV A,@0B00000101 ;选择预分频比为1:64 CONTWBS PORT6,OUTPUTWAIT_4:JBS RF,TCIFJMP WAIT_4NOPBC RF,TCIFMOV A,@0B00100000CONTW ;停止记数RET;****************重复码的检测子程序****************** JUDGE_REPEAT_CODE:CLR COUNTER ;清计数器CLR FLAGJUDGE_REPEAT_CODE_0:JBC PORT6,INPUTJMP JUDGE_REPEAT_CODE_0SS:JBC PORT6,INPUTJMP JUDGE_REPEAT_CODE_1CALL DELAY0.5MSJBC PORT6,INPUTJMP JUDGE_REPEAT_CODE_1INC COUNTERJMP SSJUDGE_REPEAT_CODE_1:MOV A,COUNTERBC PSW,CSUB A,@20 ;20-AJBS PSW,CJMP EXIT_2 ;C=1,COUNTER>20MOV A,COUNTERBC PSW,CSUB A,@16 ;16-AJBC PSW,CJMP EXIT_2 ;C=0,COUNTER<16BS FLAG,LEADJMP JUDGE_REPEAT_CODE_2EXIT_2:RETJUDGE_REPEAT_CODE_2:CLR COUNTER ;清计数器JUDGE_REPEAT_CODE_3:JBS PORT6,INPUTJMP JUDGE_REPEAT_CODE_4CALL DELAY0.5MSJBS PORT6,INPUTJMP JUDGE_REPEAT_CODE_4INC COUNTERJMP JUDGE_REPEAT_CODE_3JUDGE_REPEAT_CODE_4:MOV A,COUNTERBC PSW,CSUB A,@7 ;7-AJBS PSW,CJMP NO_REPEAT ;C=0,COUNTER>7JMP YES_REPEAT ;C=1,COUNTER<7NO_REPEAT:BC FLAG,REPEATCLR REPEAT_COUNTERRETYES_REPEAT:BS FLAG,REPEATINC REPEAT_COUNTERRET;****************延时0.5mS子程序********************* DELAY0.5MS:MOV A,@2MOV LP_CNT0,A DELAY0.5MS_1: MOV A,@82 MOV LP_CNT1,A DELAY0.5MS_2: NOPNOPNOPDJZ LP_CNT1JMP DELAY0.5MS_2 DJZ LP_CNT0JMP DELAY0.5MS_1。
ev1527中文资料1. 引言ev1527是一种常见的射频编码芯片,广泛应用于无线遥控系统中。
本文将介绍ev1527的基本原理、工作方式和应用场景,以帮助读者更好地理解和应用ev1527。
2. ev1527的基本原理ev1527是一种低成本的射频编码芯片,主要应用于遥控系统中。
它通过编码和解码无线信号来实现遥控器与接收器之间的通信。
ev1527芯片的工作原理可以简单描述如下:1.发送端:遥控器通过将按键的状态转换为二进制编码,在一定的时间间隔内发送射频信号。
2.接收端:接收器接收到射频信号后,通过ev1527芯片对信号进行解码,并将解码结果转换成对应的按键状态。
3. ev1527的工作方式ev1527芯片具有以下几个重要的特点和工作方式:•编码方式:ev1527采用固定长度编码方式,通常为20位编码。
•传输频率:ev1527芯片能够在433MHz的频率范围内工作,该频率是无线遥控系统中常用的频率之一。
•数据传输:ev1527芯片通过调制和解调技术将二进制信号转换成无线信号进行传输。
•码率:ev1527的码率通常为300-600bit/s,具体取决于传输距离和环境噪声等因素。
•编码格式:ev1527芯片的编码格式通常为Manchester编码,通过不同的信号高低电平表示0和1。
4. ev1527的应用场景ev1527芯片广泛应用于各种无线遥控系统中,如:1.家庭应用:ev1527芯片常用于家庭智能控制系统中,如智能灯控、电动窗帘控制等。
通过ev1527芯片,用户可以通过遥控器对家居设备进行控制。
2.汽车应用:ev1527芯片也被广泛应用于汽车遥控系统中,如车辆门锁、车辆启动等。
通过ev1527芯片,车主可以通过遥控器对车辆进行控制。
3.工业应用:ev1527芯片还被用于工业自动化系统中,如远程控制、机器人控制等。
通过ev1527芯片,用户可以实现对工业设备的远程控制。
5. ev1527的优势和不足ev1527芯片作为一种低成本的射频编码芯片,具有以下优势和不足:5.1 优势•低成本:ev1527芯片的制造成本低廉,适用于大规模应用。
用于汽车遥控的Ev1527的pic单片机软件接收解码程序,密码采用I2C总线方式存在EEPROM中用于汽车遥控的Ev1527的pic单片机软件接收解码程序,密码采用I2C总线方式存在EEPROM中LIST P=16f57#INCLUDE "p16F5X.INC"__CONFIG _CP_OFF&_WDT_OFF&_XT_OSC;说明:SCL接单片机 RC0; : SDA接单片机 RC1;------------------------------------------------------------;寄存器定义;------------------------------------------------------------BY_COUNT EQU 14H ;I2CCOUNT_T0 EQU 12HCOUNT_T1 EQU 13HCOUNT EQU 11HSTATUS EQU 3HPORTB EQU 6HPORTC EQU 7HEEPROM EQU 08HADDR EQU 09HBUFIN EQU 0AHBUFOUT EQU 0BHSLAVE EQU 0CHTXBUF EQU 0DHBIT EQU 0EHDLY1 EQU 0FHDLY2 EQU 10H;******************************************FLAG EQU 20HIN_DATA_0 EQU 19HIN_DATA_1 EQU 1AHIN_DATA_2 EQU 1BHCOUNTER0 EQU 15H ;计数器COUNTER1 EQU 16HCOUNTER2 EQU 17HCOUNTER3 EQU 18HCAR_STATUS EQU 1CH ;W_SHADOW EQU 1DH ;函数调用时传送参数COUNTER EQU 1EHDATA1 EQU 1FH ;保留四位按键信息DEVICE_W EQU B'10100000' ;DEVICE_R EQU B'10100001' ;ADR_LOCK EQU 0x00 ;存储器锁门指令入口ADR_UNLOCK EQU 0x10 ;存储器开门指令入口DATA_2 EQU B'11001111'DATA_1 EQU B'00100111'DATA_U EQU B'10111000'DATA_L EQU B'10110100';都为反码与上位机通信COMC_LOCK EQU B'11110111' ;开锁指令 00001000B COMC_UNLOCK EQU B'11110001' ;锁门指令 00001110B COMC_RELAY EQU B'11110010' ;继电器指令 00001101B PORTA_S EQU B'11110001'DI EQU 7DO EQU 6SDA EQU 1SCL EQU 0ACKF EQU 0;-------------------------------------------------------------- ;定义管脚;------------------------------------------------------------- #define STUDY PORTC,6#define SIGNAL PORTC,3#define LIGHT PORTC,5ORG 00HGOTO INT_INIT;**********************BSTARTBSF PORTC,SDABSF PORTC,SCLMOVLW B'11001000'TRIS PORTCNOPNOPNOPNOPNOPNOPBCF PORTC,SDANOPNOPNOPNOPNOPBCF PORTC,SCL NOPNOPRETLW 0;********************** BSTOPBCF PORTC,SDA MOVLW B'11001000' TRIS PORTCBCF PORTC,SDA NOPNOPNOPBSF PORTC,SCL NOPNOPNOPBSF PORTC,SDA NOPNOPBCF PORTC,SCL NOPNOPRETLW 0;********************** TXMOVLW D'8' MOVWF BITTXLP BCF EEPROM,DO BTFSC TXBUF,7BSF EEPROM,DO CALL BITOUTRLF TXBUF,1 DECFSZ BIT,1GOTO TXLPCALL BITINBTFSC EEPROM,DI BSF PORTC,ACKF RETLW 0;************************ RXCLRF BUFIN MOVLW D'8' MOVWF BITBCF STATUS,0RXLP RLF BUFIN,1 BCF BUFIN,0CALL BITINBTFSC EEPROM,DI BSF BUFIN,0 DECFSZ BITGOTO RXLPNOPRETLW 0;**********************BITOUTMOVLW B'11001000' tris PORTCBTFSS EEPROM,DO GOTO BITLOWBSF PORTC,SDA GOTO CLKOUT BITLOW BCF PORTC,SDA CLKOUT BSF PORTC,SCL NOPNOPNOPNOPBCF PORTC,SCL RETLW 0;********************** BITINBSF EEPROM,DI MOVLW B'11001010' TRIS PORTCBSF PORTC,SCLNOPNOPNOPNOPNOPBTFSS PORTC,SDABCF EEPROM,DIBCF PORTC,SCL RETLW 0;---------------------------------;延时1s;---------------------------------`DELAY_1S: ;延时1sMOVLW 04H ;3+1MOVWF COUNTER1MOVLW 0AH ;10MOVWF COUNTER2MOVLW 031H ;49MOVWF COUNTER3;49*5+(256*5+5)*10+[(256*5+5)*256+5]*3+10=1,000,000us DELAY_1S_WAITNOPNOPDECFSZ COUNTER3,FGOTO DELAY_1S_WAITNOPNOPDECFSZ COUNTER2,FGOTO DELAY_1S_WAITNOPCLRWDTDECFSZ COUNTER1,FGOTO DELAY_1S_WAIT;DECFSZ COUNTER0,F;GOTO DELAY_WAITDELAY_RETRETLW 0;****************************************DELAY_10MSMOVLW D'13'MOVWF DLY1MOVLW 0FFHMOVWF DLY2LP0 DECFSZ DLY2,1GOTO $-1DECFSZ DLY1,1GOTO $-5RETLW 0;******************************************** WR_EEPROMBTFSC FLAG,1GOTO OUT1MOVLW B'00000000'TRIS PORTCCLRF PORTCCLRF PORTCMOVLW B'10100000'MOVWF SLAVEMOVLW 13HMOVWF FSR ;IN_DATA_0地址MOVLW B'10101100'MOVWF BUFOUTCLRF ADDRMOVF SLAVE,0MOVWF TXBUFCALL TXMOVF ADDR,0MOVWF TXBUFCALL TXMOVF INDF,0MOVWF TXBUFCALL TXINCF FSRMOVF INDF,0MOVWF TXBUFCALL TXINCF FSRMOVF INDF,0MOVWF TXBUFCALL BSTOPOUT1 RETLW 0;***************************************** XIANSHIMOVLW 08HMOVWF COUNTLOOP BTFSC BUFIN,7BSF PORTC,5CALLDELAY_1SBCF PORTC,5RLF BUFIN,1DECFSZ COUNT,1GOTO LOOPBCF PORTC,5RETLW 0;********************************;------------------------------------------------------------ ;25ms计时子程序;------------------------------------------------------------ DELAY_25MOVLW 20HMOVWF COUNT_T0DELAY CLRWDTMOVLW 0FFHMOVWF COUNT_T1DELAY1 DECFSZ COUNT_T1,1GOTO DELAY1DECFSZ COUNT_T0,1GOTO DELAYRETLW 0;------------------------------------------------------------ ;250ms计时子程序;------------------------------------------------------------ DELAY_250MOVLW 0F2HMOVWF COUNT_T0DELAY2 CLRWDTMOVLW 0FFHMOVWF COUNT_T1DELAY21 NOP ;内层循环1024usDECFSZ COUNT_T1,1GOTO DELAY21DECFSZ COUNT_T0,0GOTO DELAY2RETLW 0;------------------------------------------------------------- ;主程序开始;------------------------------------------------------------- ORG 100HINT_INITBANKSEL PORTCMOVLW B'11001000'TRIS PORTCCLRF PORTCCLRF FLAGMOVLW 00HMOVWF IN_DATA_0MOVWF IN_DATA_1MOVWF IN_DATA_2MOVWF COUNTERMOVWF COUNTER0MOVWF COUNTER1MOVWF COUNTER2SIGNAL_SERVICE ;COUNTERX 计数器分配混乱,需要调整BTFSS SIGNALGOTO SIGNAL_RETCLRF COUNTER0SIGNAL_SYN_HIGHCLRWDTBTFSS SIGNALGOTO SIGNAL_SYN_HIGH_TESTINCF COUNTER0,FBTFSS STATUS,ZGOTO SIGNAL_SYN_HIGHGOTO SIGNAL_RETSIGNAL_SYN_HIGH_TEST ;210us MOVLW D'30' ;30?这个取值需要重新计算SUBWF COUNTER0,WBNC SIGNAL_RETCLRF COUNTER1SIGNAL_SYN_LOWGOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1CLRWDTBTFSC SIGNALGOTO SIGNAL_RETDECFSZ COUNTER1,FGOTO SIGNAL_SYN_LOWSIGNAL_SYN_LOW_WAIT CLRWDTBTFSS SIGNALGOTO SIGNAL_SYN_LOW_WAIT MOVLW D'24'MOVWF COUNTER2SIGNAL_PERIOD_STARTCLRF COUNTER0CLRF COUNTER3SIGNAL_PERIOD_LOW_WAIT CLRWDTGOTO $+1BTFSC SIGNALGOTO SIGNAL_PERIOD_HIGH INCFSZ COUNTER0,FGOTO SIGNAL_PERIOD_LOW_WAIT GOTO SIGNAL_RETSIGNAL_PERIOD_HIGH ;6个时钟周期CLRWDTBTFSS SIGNALGOTO SIGNAL_PERIOD_VALUE_JUDGE INCFSZ COUNTER3,FGOTO SIGNAL_PERIOD_HIGH GOTO SIGNAL_RETSIGNAL_PERIOD_VALUE_JUDGEMOVLW D'20' ;高电平小于120us 退出SUBWF COUNTER3,WBNC SIGNAL_RETBCF FLAG,0MOVLW D'80' ;高电平大于120us 小于480us判断为‘0’ SUBWF COUNTER3,W ; 大于480us 判断为‘1’BNC SIGNAL_PERIOD_VALUE_SAVEBSF FLAG,0SIGNAL_PERIOD_VALUE_SAVERLF IN_DATA_0,FRLF IN_DATA_1,FRLF IN_DATA_2,FBCF IN_DATA_0,0BTFSC FLAG,0BSF IN_DATA_0,0DECFSZ COUNTER2,FGOTO SIGNAL_PERIOD_STARTBSF LIGHT ;收到信号,闪3下CALL DELAY_1SBCF LIGHTCALL DELAY_1SBSF LIGHTCALL DELAY_1SBCF LIGHTCALL DELAY_1SBSF LIGHTCALL DELAY_1SBCF LIGHTCALL DELAY_1SMOVLW 0FHANDWF IN_DATA_0,WMOVWF DATA1 ;屏蔽低4位,保留地址码值MOVLW 0F0HANDWF IN_DATA_0,F ;屏蔽高4位,保留键码值;-------------------------------------------------------------------------------------------;对接收到的数据进行处理,若为初始化(学习),则将数据存入EEPROM;否则,给出开锁或者上锁信号;------------------------------------------------------------------------------------------SIGNAL_PROCESSINGBCF PORTC,0BCF PORTC,1;BTFSC STUDY;GOTO WRITEMOVLW 40HMOVWF FSRMOVLW 03H ;3次读MOVWF BY_COUNT CLRF PORTCMOVLW B'10100000' MOVWF SLAVECLRF ADDRCALL BSTARTMOVF SLAVE,0 MOVWF TXBUFCALL TXMOVF ADDR,0 MOVWF TXBUFCALL TXCALL BSTARTMOVLW B'10100001' MOVWF TXBUFCALL TXRBYTE CALL RXMOVF BUFIN,0 MOVWF INDFINCF FSRDECFSZ BY_COUNT,1 GOTO LOWACKBSF EEPROM,DOCALL BITOUTCALL BSTOPGOTO OUT2LOWACK BCF EEPROM,DO CALL BITOUTCALL XIANSHIGOTO RBYTENOPOUT2 MOVLW B'11001000'TRIS PORTCBSF LIGHT ;读完闪1次CALL DELAY_1SBCF LIGHTGOTO CHECK_ADWRITE CALL WR_EEPROMBSF FLAG,1BSF LIGHTCALL DELAY_250BCF LIGHT ;进入写EEPROMGOTO EXIT;----------------------------------------------------------- ;比较地址码;----------------------------------------------------------- CHECK_AD MOVLW 40HMOVWF FSRMOVF IN_DATA_0,0XORWF INDF,0BTFSS STATUS,ZGOTO EXITINCF FSR,1MOVF IN_DATA_1,0XORWF INDF,0BTFSS STATUS,ZGOTO EXITINCF FSR,1MOVF IN_DATA_2,0XORWF INDF,0BTFSS STATUS,ZGOTO EXIT ;地址码不对,跳出;------------------------------------------------------------------;检查指令;-------------------------------------------------------------------GOTO OPENDONE MOVF DATA1,0XORLW 00HBTFSS STATUS,ZGOTO OPENGOTO EXITOPEN BSF PORTC,5CALL DELAY_250BCF PORTC,5CALL DELAY_250BSF PORTC,5CALL DELAY_250BCF PORTC,5EXITNOPSIGNAL_RETGOTO SERVICE_ENDSERVICE_ENDNOPNOPBTFSC SIGNAL ;SIGNAL =1外部有信号输入GOTO SIGNAL_SERVICENOPNOPNOPNOPNOPNOPGOTO SERVICE_ENDEND。
编码:编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。
用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
编码在电子计算机、电视、遥控和通讯等方面广泛使用。
编码是信息从一种形式或格式转换为另一种形式的过程。
解码,是编码的逆过程。
在计算机硬件中,编码(coding)是指用代码来表示各组数据资料,使其成为可利用计算机进行处理和分析的信息。
代码是用来表示事物的记号,它可以用数字、字母、特殊的符号或它们之间的组合来表示将数据转换为代码或编码字符,并能译为原数据形式。
是计算机书写指令的过程,程序设计中的一部分。
在地图自动制图中,按一定规则用数字与字母表示地图内容的过程,通过编码,使计算机能识别地图的各地理要素。
n位二进制数可以组合成2的n次方个不同的信息,给每个信息规定一个具体码组,这种过程也叫编码。
数字系统中常用的编码有两类,一类是二进制编码,另一类是十进制编码。
Rt1527:rt1527是EV1527 一样的IC两个不同的名字,都是无线学习编码IC。
EV1527RT1527就是EV1527 一样的IC两个不同的名字,都是无线学习编码ICeV1527简介:eV1527是一片由CMOS设计制造的可预烧内码的学习码编码IC,由软件解码;内码共有20个位元可预烧1048576组(220)内码组合,降低使用上编码重复的机率。
功能简述:◆低功耗静态电流<1.0μA;◆工作电压Vcc=3.0-13V;◆四个按键输入,最多可组合至15个按健;◆内含振荡线路,只须外接一个电阻(推荐值330K);◆eV1527可代替RT1527以及升级FP527、eV527;◆eV1527修正了上面那些型号的一些Bug;◆小体积8脚贴片封装。
是PT2260、PT2262理想的升级换代产品。
可以正常使用315M无线遥控C51解码程序/*315M无线解码程序*//*无线码宽电平脉冲时间1.8ms,低电平脉冲时间600us,同步码低电平时间18.6ms P1口接LED显示接收到的无线码的最后一字节数据MCU:STC12C4052,12MHzOSC,调试通过*/#include <stc12c4052.h>#define uchar unsigned char#define WUXIAN P3_2 //无线信号输入脚#define _rlcar_(RX) CY=RX&0X80 //RX带进位左移1位,数据放入ACC uchar bdata wx_data0,wx_data1,wx_data2; //存储24位无线数据uchar data wx_code0,wx_code1,wx_code2;uchar data wx_count,wxcount_buf; //低电平时间计数器uchar data wx_bit; //无线码位数uchar data t_10ms;uchar data t_500ms;bit tb_flag; //同步码接收成功标志bit wx_ok; //无线码接收成功标志bit wx_sta; //无线信号输入脚的高低电平状态void mcu_initialize() {WDT_CONTR=0x00; //关闭看门狗AUXR=0; //定时器0和1设为传统8051速度,12分频P1M0=0;P1M1=0x0; //P1为准双向口P1=0;P3M0=0x04;P3M1=0x00; //P3.2设置成输入脚TR0=0;TH0=0x9c;TL0=0x00; //100us中断一次TMOD|=0x02; //设置T0为自动装入的8位定时器ET0=1; //允许T0中断EA=1;TR0=1; //启动T0}void main() {mcu_initialize();while(1);}void decode() {if(WUXIAN) { //检测无线I/O口为高if(!wx_sta) {wx_sta=1; //无线信号从低变高wxcount_buf=wx_count;if(tb_flag) { //同步码标志为1if((0x02<wxcount_buf)&&(wxcount_buf<0x08)){ //低电平脉宽范围在200us 到800us之间CY=1;}else if((0x0d<wxcount_buf)&&(wxcount_buf<0x14)){ //低电平脉宽范围在1.3ms到2ms之间CY=0;}else{ //干扰码loop2:wx_count=0;wx_bit=0;wxcount_buf=0;tb_flag=0;return;}_rlcar_(wx_data0); //移位寄存器,接收一位数据wx_data0=ACC;_rlcar_(wx_data1);wx_data1=ACC;_rlcar_(wx_data2);wx_data2=ACC;if(++wx_bit==24){ //接收完24位码,接收成功标志wx_ok置1tb_flag=0;wx_bit=0;wx_ok=1;wx_code0=wx_data0;wx_code1=wx_data1;wx_code2=wx_data2;P1=wx_code0; //p1口接LED显示数据}}else {if((0x87<wxcount_buf)&&(wxcount_buf<0xc8))tb_flag=1; //抵电平脉宽范围在13.5ms到20ms之间,把同步码标志置1 elsegoto loop2;}}}else {if(wx_sta) {wx_count=0; //无线信号从高变低,清零低电平脉宽计数器wx_sta=0;}elsewx_count++; //无线信号为低电平,低电平脉宽计数器加1}}void timer0_isr() interrupt 1 {decode();if(++t_10ms>=100){ //P3.7口接的LED以0.5s的速度闪烁t_10ms=0;if(++t_500ms>=50){P3_7=!P3_7;t_500ms=0;}}}。
EV1527无线遥控解码编码程序//*stc11f02/or stc89c2051 12MHZ //TX IC hs1527/or ev1527 OSC_RES=200KVDD 12V *//*同步码低电平时间9.2ms~9.35ms //无线码宽TD时间1.16ms,1=(高电平脉冲时间920us~940us,低电平脉冲时间240us~220),0=(高电平脉冲时间240us~220us,低电平脉冲时间920us~940us)|同步码| c0~c19 addr码|D0|D1|D2|D3| Totals 24 bit|-| |----| |-| |--| |--| || |____________| |_| |____| |..........................||_____________||-|---9.25ms---|1.16ms|1.16ms|-----------------------------|用TIMER0和INT0配合实现脉宽测量,这种做法的好处是不用隔一段时间扫描I/O口,方便系统程序的整体设计硬件上要把无线信号反向后接到INT0(P3.2)脚,脉宽测量法测量反向后的高电平时间;用中断法(从高变低跳变引起中断}计量测到高电平脉冲时间.判定是,同步码,1码,0码;P1口接LED显示接收到的无线码的最后一字节数据*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define RLC(RX) CY=RX&0x80 //编译后生成带进位左移指令uchar bdata wx_data0,wx_data1,wx_data2; //存储24位无线数据uchar data wx_code0,wx_code1,wx_code2;uint data wx_count; //低电平时间计数器uint data wxh_count; //高电平时间计数器uint data tb_count; //同步码时间计数器uchar data wx_bit; //无线码位数uchar bit_CY;uchar data addr0;uchar data addr1;uchar data addr2;uchar data cmd_data;uint data times;uint data mode=0;uint data k;bit tb_flag; //同步码接收成功标志bit wx_ok; //无线码接收成功标志bit decode_ok;bit keyhold;bit keydown;bit keyopen;bit k_flag;bit k1;k2;k3;k4;sbit P37=P3^7;sbit P35=P3^5;sbit P32=P3^2;sbit P17=P1^7;sbit P16=P1^6;sbit P15=P1^5;void decode();void delayms(short i);////////////////////////////////////////////////////////////////////// void main(void){//////////////////////////////////////////////////////////////////// //设置脉宽测量法测量反向后的高电平时间//这是晶振为12M的定时中断1us// | D7 D6 D5 D4 D3 D2 D1 D0 |// TMOD=| GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |// GATE =1; TR0=1; INT0=1 时 TIMER0 START RUN ,INT0=0 STOP RUN// 脉宽=(TH0*256 TL0)*12/12(MHZ)=(TH0*256 TL0)*1(us)TMOD=0x19; //GATE=1;M0=1;设置T0为16位定时器,设为门控定时; ET0=0; //ET=0禁止T0中断IT0=1; //IT=1从高变低跳变引起中断EX0=1; //EX0=1开外部中断0EA=1; //启动总中断TH0=0;TL0=0;TR0=1; //启动T0//***************************************************************** //sulotion1 按下和放开都有效while(1){if((wx_ok==1)&&(cmd_data==0xf4)){//if(keyopen==1){////P16=~P16;keyopen=0;wx_ok=0;}////if(keyhold==0){////keyopen=1;}////}//}*///sulotion2 按下没效//放开都有效/*while(1){if((wx_ok==1)&&(cmd_data==0xf4)){//if(keyhold==0){////keyopen=1;}////if(keyopen==1){////P16=~P16;keyopen=0;wx_ok=0;}////}//}*//*//sulotion3 按下有效//放开都没效/反应不灵敏while(1)if((wx_ok==1)&&(cmd_data==0xf4)) {//if(keyhold==1){if(keyopen==0){////P16=~P16;keyopen=1;wx_ok=0;}////}if(keyhold==0){////keyopen=0;}////}//}*/while(1){//times ;decode();switch(mode){///case 1://turn onP37=0;times=0;break;case 2://6Hz flashif(times>=10000){P37=~P37;times=0;}break;case 3://3Hz flashif(times>=30000){P37=~P37;times=0;}break;case 0://offP37=1;times=0;break;}///}////////////////////////////////////////////////////////////////////// void decode(){//P1=wx_code0|0Xf0; //P1口接LED显示数据cmd_data=wx_code0|0xf0;//sulotion4 按下有效/反应较灵敏if((wx_ok==1)&&(cmd_data==0xf4)){//if(keyopen==0){////k_flag=~k_flag;if(k_flag==1){//P16=~P16;mode ;if(mode>3){mode=0;}}keyopen=1;wx_ok=0;}////if(keyhold==0){////keyopen=0;}////}//}///////////////////////////////////////////////////////////////////// void int0() interrupt 0{wx_count=TH0*256 TL0;TH0=0;TL0=0;//////////////////////////////////////////////////////////////////////// /////////////////if(tb_flag==1) //同步码标志为1{if((800<wx_count)&&(wx_count<1000)) //低电平脉宽范围在900us到950us之间{CY=0;}else if((200<wx_count)&&(wx_count<400)) //低电平脉宽范围在220us到350us之间{CY=1;}else //干扰码{wx_count=0;wxh_count=0;wx_bit=0;tb_flag=0;keyhold=0;return;}RLC(wx_data0); //移位寄存器,接收一位数据wx_data0=ACC;RLC(wx_data1);wx_data1=ACC;RLC(wx_data2);wx_data2=ACC;if( wx_bit==24) //接收完24位码,接收成功标志wx_ok置1{tb_flag=0;wx_bit=0;wx_ok=1;wx_code0=wx_data0;wx_code1=wx_data1;wx_code2=wx_data2;}}else if ((8000<wx_count)&&(wx_count<9000)) //低电平脉宽范围在9.2ms 到9.5ms之间,把同步码标志置1{tb_flag=1;keyhold=1;}else //干扰码{wx_count=0;wxh_count=0;wx_bit=0;tb_flag=0;keyhold=0;return;}}//////////////////////////////////////////////////////////////////////// ////////////////////////////////void delayms(int k) //@12M,ms{int j;while((k--)!=0){for(j=0;j<100;j ){;}}}。