单片机模拟pt2272解码12路遥控器用tp2264编码的汇编源代码有详细注释.docVIP

单片机模拟pt2272解码12路遥控器用tp2264编码的汇编源代码有详细注释.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机模拟pt2272解码12路遥控器用tp2264编码的汇编源代码有详细注释

民用315M调制频率下,单片机模拟解码芯片2272 工作中需要控制12个开关。而且要遥控的。就想到了通用的315M传输模块。市场上只有少见的多路无线遥控。找到一个设计很巧妙的12路无线遥控发射和接收模块。拆开一看,原来如此 发射模块用2264芯片,8位地址码,每位地址有3种状态(高电平,低电平,悬空),共3^8(65535)种地址,4位数据码,每个数据3种状态(共12种状态)。只不过一般2272解码芯片把悬空状态和低电平等同。输出4个开关状态(每个开关有高电平和低电平2种状态)。综合上述,2264芯片其实每发送一帧编码,可以有3^12(531441)种帧编码。也就是说。我们不用2272解码芯片,而是用单片机解码,其实就可以实现8位地址(65535种)码,和12种数据,然后扩展控制12个动作。这就是12路遥控的原理。 我在网上查了一下汇编源代码所有的源代码都是一个。注释比较少。我就自己写了一个,实际调试也成功了。现在将代码共享如下。 STC单片机用的是4052AD,12M晶振,原因是计时器是1um的。比较好算一点。呵呵。以下是源代码,复制编译即可。接收模块接P1.7引脚。 ;================================================= ;STC单片机。本人用了很多该单片机,最多的是STC12c4052AD这款 ;接收模块,315M,发射端用PT2264调制震荡电阻式1.2M的,电阻标示125 ;网上只搜索到一个汇编程序,注释比较少。所以我调试成功之后写了一个 ;我在应用过程中硬件调试成功。实际测得窄脉冲为100um左右,宽脉冲在300um左右,同步位低电平为3800um左右 ;遥控器有12个案件。是市场上比较少见的。一般2272解码后,4路输出,把悬空和0做相同处理 ;遥控器可以发出12种状态,4路(每路有0,1,悬空三种状态)故共12种状态。这个遥控器设计比较巧妙。接收只能用单片机实现,输出12种状态 ;程序调试通过。修改参数可以实现距离上的增加。但你要在距离和准确率上有取舍!!!!!!! ;有兴趣可以联系我百度留言 ;================================================= rdata equ p1.7 ;p1.7引脚连接315M接受模块的data输出端 ORG 0000H AJMP START org 0003h ;外部中断0 reti org 000bh ;定时器0中断 reti org 0013h ;外部中断1 reti org 001bh ;计数器1中断 reti org 0023h ;串行口中断 ,串口发送占用R2做缓存 reti org 002bh ;定时器2中断 reti ;================================================= ;程序入口地址 ;================================================= ORG 0030H ;程序起始地址 start: mov 30h,#00h mov 31h,#00h mov 3ah,#00h mov 3bh,#00h lcall notetime ;记录高低电平时间 lcall do_tbdata ;判断接收到同步数据,接收到40h置0ffh mov a,40h cjne a,#0ffh,start ;同步失败,重新开始 ;lcall looktiming ;检测同步码是否接收到,可靠接收 mov r1,#08h ;循环接收8位数据(高4位编码),放4ah a8_addata: mov r0,#4ah lcall notetime lcall do_adddata ;判断接收到的地址数据,数据有效41h置0ffh mov a,41h cjne a,#0ffh,start ;lcall looktiming ;检测数据码是否接收到,可靠接收 ;------------------------------------------------- mov 41h,#00h djnz r1,a8_addata mov r1,#08h ;循环接收8位数据(低4位编码),放4bh b8_addata: mov r0,#4bh lcall notetime lcall do_adddata mov a,41h cjne a,#0ffh,start mov 41h,#00h djnz r1,b8_addata ;----地址接收完成---------------------------- mov r1,#08h re_4wdata: m

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档