红外遥控器的基本原理(2)

2020-04-14 05:47

西安科技大学高新学院 毕业论文

keydata equ 30h ;//该地址和31H地址用来存放遥控器按键编码。 org 00h main:

mov keydata,#0 ;// 清零

mov tmod ,#09h ;//设臵定时0方式1,GATE=1 mov r7,#0 ;//计数器,用来计数是否满8位

mov r6,#0 ;//计数器,用来计数是否满2字节(解16位编码) jb p3.2,$ ;//是否为低电平

again: ;//如果为低,继续往下面执行 mov tl0,#0 ;//清零TL0 mov th0,#0 ;//清零TH0 setb tr0 ;//开启定时器0 jnb p3.2,$ ;//等待高电平到来 jb p3.2,$ ;//高电平到来,此时开始计数 clr tr0 ;//高电平结束,停止计数 mov a,th0 ;//读取th0 值,TL0忽略不计 clr c ;// subb a,#12 ;//

jc again ;//th0<12则转,即小于3.4ms,你可以算一下这个时间 mov a,#14 ;// clr c ;//

subb a,th0 ;//和14比较,如果TH0>14则大于3.8ms

- 6 -

西安科技大学高新学院 毕业论文

jc again ;//大于3.8ms,从新再检测 nextbit: ;//起始位找到了,然后下一位 mov tl0,#0 ;// mov th0,#0 ;// setb tr0 ;//启动定时器 jnb p3.2,$ ;//等待高电平

jb p3.2,$ ;//高电平到来,此时开始计数 clr tr0 ;//高电平结束,停止计数 mov a,th0 ;//读取计数值,TL0忽略不计 clr c ;//

subb a,#8 ;//th0和8比较

jc next ;;;;//若 <2.2ms则转,再判断是否大于0.84ms mov a,#10 ;//再跟10比较 clr c ;// subb a,th0 ;//

jc again ;;;;;;;//若 >2.7ms,则放弃,从新检测 mov a,keydata ;// 符合大于2.2ms 小于2.7ms,即为“1” setb c ;//C = 1 rrc a ;//把1移位进A mov keydata,a ;//保存 inc r7 ;//计数器加1

cjne r7,#8,nextbit ;//是否满8位

- 7 -

西安科技大学高新学院 毕业论文

inc r6 ;//计数加1

cjne r6,#2,last8 ;//是否满两字节 sjmp seach ;//不满两字节,再新采集 last8: ;//满1字节,再接下来第二字节

mov keydata+1,a ;//把第一字节编码数据保存到31h里 mov r7,#0 ;//计数器R7清零 sjmp nextbit ;//继续采集数据 next: ;//小于2.2ms时转到这里 mov a,th0 ;//读取计数值TH0 swap a ;//高4位与低4位对换 mov r1,a ;//保存到R1

anl tl0,#0f0h ;//取TL0高4位,低4位忽略不计 mov a,tl0 ;// clr c ;// rrc a ;// rrc a ;// rrc a ;// rrc a ;// add a,r1 ;// mov r1,a ;//

subb a,#30 ;//以上几行是把TH0的低4位和TL0的高4位合并为1字节作为计数值

- 8 -

西安科技大学高新学院 毕业论文

jc nextbit ; //判断是否 <0.84ms,是则放弃,继续采集 mov a,r1 ;//否 clr c ;//

cjne a,#64,continue ;//跟64比较 continue: ;//

jnc nextbit ; //a>64表示采样值 >1.11ms mov a,keydata ;//否则 ,符合位“0” clr c ;//C = 0 rrc a ;//把零右移进A mov keydata,a ;//保存 inc r7 ;//计数器加1

cjne r7,#8,nextbit ;//是否满8位 inc r6 ;//计数器加1

cjne r6,#2,last_8 ;//是第一字节已经满 sjmp seach ;//

last_8: ;//如果为第二字节

mov keydata+1,a ;//则保存第一字节到31h mov r7,#0 ;//清零R7 sjmp nextbit ;// seach: ;//匹配按键编码

mov r0,#-2 ;//按键编码字节个数计数器 mov r1,#-1 ;//按键顺序计数器

- 9 -

放弃 西安科技大学高新学院 毕业论文

seach1: ;// inc r0 ;// seach2: ;// inc r0 ;// inc r1 ;//

cjne r1,#29,compare ;//是否R1=29 sjmp exit0 ;// compare: ;//开始匹配 mov a,r0 ;//

mov dptr,#keycode ;//地址指针指向码表首址 movc a,@a+dptr ;//取码 cjne a,keydata,seach1 ;//比较

inc r0 ;//R0+1,再比较下一字节(每个按键编码为2字节) mov a,r0 ;//

;mov dptr,#keycode ;// movc a,@a+dptr ;//比较

cjne a,keydata+1,seach2 ;//是否匹配,不匹配则继续跟下一字节比较 mov p1,r1 ;//如果匹配,把按键顺序号输出到p1 send: ;//

mov tmod,#20h ; //设臵timer 1,mode 2 mov tl1,#0fdh ;//设臵定时器初值 mov th1,#0fdh ;//

- 10 -


红外遥控器的基本原理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:译林版英语四年级下册Unit 7-8单元知识点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: