注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
★单片机四路无线遥控解码程序
文章长度[3930] 加入时间[2006/7/27] 更新时间[2024/10/21 3:23:00] 级别[3] [评论] [收藏]
  这篇文章中的程序我们只提供了程序设计思路,有些子程序还要自己增加。即大家应该怎么样做才可能完成我们需要的功能。本站另一片文章中有最终版本完成版的程序,可以直接生成HEX,请自己找。
  该程序可以对2262以及类似芯片的遥控器进行解码,并且可以学习记忆,不受停电影响,做成的无线遥控开关通过学习后,可以实现单独开、单独关、群开、群关等功能。
  这个程序我们收了客户2500元,客户不允许我们提供在网上,后来达成协议,不提供任何技术支持的情况下,可以让付费贵宾阅读。如果需要提供原理路、源程序批注,最少应付款800元才可以出售(包括一块功能演示测试电路板)。
  
org 00h
jmp config


org 03h
reti
org 0bh
reti
org 13h
reti
org 1bh
reti
org 23h
reti
org 30h
config:
clr ea
mov p0,#0h
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh

mov r3,#0;表示现在非学习状态,1234分别表示要学习四路

mov r4,#0;延时要准
mov r5,#0;延时要准
clr 30h;当30h能变成高电平时,说明长识别码已经收到,下次电平变化时开始保存数据

main:
call key;求出键值
call keyrun;执行功能
call rec;记录接收
call kong;执行接收
call xuexi;是否学习
jmp:main

rec:jb p2.2,recend;检查p2.2是低电平,高电平转移到recend,可以进入保存数据程序
rec0:clr p2.3
mov r1,#30h
mov a,#0;累加器清零,准备保存数据
rec1:call chk
rlc a;第1位存入低位
call d10ms
rec2:call chk
rlc a;第2位存入a
call d10ms
rec3:call chk
rlc a;第3位存入a
call d10ms
rec4:call chk
rlc a;第4位存入a
call d10ms
rec5:call chk
rlc a;第5位存入a
call d10ms
rec6:call chk
rlc a;第6位存入a
call d10ms
rec7:call chk
rlc a;第7位存入a
call d10ms
rec8:call chk
rlc a;第8位存入a
call d10ms
mov @r1,a;r1=30/31/32/33,连续记录4个字节
inc r1
cjne r1,#34h,rec1
setb p2.3
recend:ret

chk:inc r5
cjne r5,#0,chk0;去检测P3。7的状态
mov r5,#0
inc r4
cjne r4,#50,chk0
mov r4,#0
clr p2.2
chk0:jnb p2.1, sou2
sou1:jb p3.7, sou3
   clr p2.1
   setb p2.2
   jmp sou3
sou2:jnb p3.7, sou3
   setb p2.1
   setb p2.2
chkend:
mov c,p3.7
jb p2.2,recend;检查p2.2是低电平,高电平转移到recend,可以进入保存数据程序
ret


kong:jb p2.3,kondend;只有p2.3为高表示收到了有效的数据
jb p2.4,kongend;数据已经记录,看现在是什么状态,是学习状态跳到学习,kk0表示要开始执行按键功能
kk0:mov r1,#50h;50/51/52/53存第一个开关
call bj
cjne r2,#4,kk1;连续4个字节相等,说明有码相同,执行开关命令,否则到kk1检查第二个开关
cpl p1.4

kk1:mov r1,#54h;
call bj
cjne r2,#4,kk2;连续4个字节相等,说明有码相同
cpl p1.5

kk2:mov r1,#58h;
call bj
cjne r2,#4,kk3;连续4个字节相等,说明有码相同
cpl p1.6

kk3:mov r1,#5ch;
call bj
cjne r2,#4,bend;连续4个字节相等,说明有码相同,
cpl p1.7
kongend :ret


xuexi:jnb p2.3,xxend;只有p2.3为高表示收到了有效的数据
jb p2.4,xxend;数据已经记录,看现在是什么状态,是学习状态学习

cjne r3,#0,xxend;r3是表示当前被学习的路数,0表示不学习,1234分别代表4路
xx1:cjne r3,#1,xx2;是否保存第1路数据
mov r1,#50h
call up
xx2:cjne r3,#2,xx3;是否保存第2路数据
mov r1,#54h
call up
xx3:cjne r3,#3,xx4;是否保存第3路数据
mov r1,#58h
call up
xx4:cjne r3,#4,xxend;是否保存第4路数据
mov r1,#5ch
call up
jmp xxend

up:
mov r2,#0;从第一位数保存
mov r0,#30h;装入学习的数或者收到的数
upre:
mov a,@r0
mov @r1,a;r1已经分别装入四路要保存的数
inc r0
inc r1
inc r2
cjne r2,#4,upre;0123表示四位数已经全部保存,r2=4时表示第五数不能保存,否则会写坏其它数据
iap0:
;此处要写到EEROM,50-5f必须放入EEROM中才能在停电不丢失数据,每次重启动时又从EEROM中读出
;
;
;
xxend:ret


bj:mov r2,#0;正在比较第几位数
mov r0,#30h;装入学习的数或者收到的数
bj0:mov a,@r0
xrl a,@r1;与要比较的数异或
inc r0
inc r1
inc r2
cjne a,#0,bjend;等于表示数相等,往下走,不等于0表示不等,结束比较
cjne r2,#4,bj0;0123表示四位数都相等就要立即反回,等于4表示前四次比较完都相等
bjend:ret


key:
setb p1.0
setb p1.1
setb p1.2
setb p1.3
mov r7,#0;r7内装按键值,0表示无键按下去
k1:jb p1.0,k2;先检查P1。0是否按下,
mov r7,#1
mov 4fh,r7;立即将键值存入R7和4F,R7还要检查按键松开
k2:jb p1.1,k3
mov r7,#2
mov 4fh,r7
k3:jb p1.2,k4
mov r7,#3
mov 4fh,r7
k4:jb p1.3,k5
mov r7,#4
mov 4fh,r7;立即将键值存入R7和4F,R7还要检查按键松开
k5:cjne r7,#0,kend;扫描到最后,r7为0表示已经没有按键按下,下面要执行按键程序
mov r7,4fh;将4FH值装入r7,根据键值去执行功能。
mov 4fh,#0;同时将4FH清零,以免重复执行
run1:cjne r7,#1,run2;分别执行键值等于1234的功能
cpl p1.4
run2:cjne r7,#2,run3
cpl p1.5
run3:cjne r7,#3,run4
cpl p1.6
run4:cjne r7,#4,kend;没有按键值相等,表示什么也不执行。
cpl p1.7
kend:ret


d10ms:
mov r6,#0
;mov r5,#0
dms:
;inc r5
;cjne r5,#25,dms
;mov r5,#0
inc r6
cjne r6,#250,dms
mov r6,#0
cpl p1.7
ret
end
1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389