资源描述:
《红外遥控电子琴》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、;用万能遥控器(16)的1~9键发送遥控数据,实验板(USB)接收;实验板连接扬声器,组成红外遥控电子琴;六位数码管同时显示一个数字,与遥控器按键号1~9相同BUF_LEDEQU40HKEYBUFEQU30HSTH0EQU31HSTL0EQU32HTEMPEQU33HORG00HLJMPSTARTORG0003HAJMPINTORG0BHLJMPINT_T0START:MOVR0,#100;R0和R2做按下键后的音乐时间保持用MOVR2,#3SETBEX0;允许INT0中断MOVSP,#60HMOVDPTR,#TABM
2、OVTMOD,#01H;T0定时器工作在模式1--16位定时器SETBET0;允许T0中断SETBEAACALLYS12MSAJMP$;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INT:CLREA;关中断PUSHPSWPUSHACCMOVR6,#7;以下为9ms时段内,多次检查是否是低电平SB:ACALLYS1JBP3.2,EXITDJNZR6,SBJNBP3.2,$;等待9ms的结束,即4.5ms的开始ACALLYS2;延时约4.5ms(这里其实是4.735ms)
3、MOVR7,#16;以下是屏蔽16位用户识别码JJA:JNBP3.2,$ACALLYS1MOVC,P3.2JNCUUAACALLYS3UUA:DJNZR7,JJAMOVR1,#21H;以下是将8位有效数据原码存入21H内存单元MOVR3,#8JJ:JNBP3.2,$ACALLYS1MOVC,P3.2JNCUUUACALLYS3UUU:MOVA,@R1RRCAMOV@R1,ADJNZR3,JJACALLPDJZ;调“判断键值”子程序EXIT:POPPSWPOPACCSETBEA;开中断RETI;;;;;;;;;;;;;;
4、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PDJZ:MOVA,21H;“判断键值”子程序CJNEA,#01H,N1;若键值不是01H,则跳到N1看是否是02HMOVKEYBUF,#5;否则,若键值是01H,则将TABLE1中的第五个数【音乐1】赋给KEYBUFMOVBUF_LED,#1;将数字1送数码管显示ACALLGCZ;调“给初值”子程序AJMPN9N1:MOVA,21HCJNEA,#02H,N2MOVKEYBUF,#6MOVBUF_LED,#2ACALLGCZAJ
5、MPN9N2:MOVA,21HCJNEA,#03H,N3MOVKEYBUF,#7MOVBUF_LED,#3ACALLGCZAJMPN9N3:MOVA,21HCJNEA,#04H,N4MOVKEYBUF,#8MOVBUF_LED,#4ACALLGCZAJMPN9N4:MOVA,21HCJNEA,#05H,N5MOVKEYBUF,#9MOVBUF_LED,#5ACALLGCZAJMPN9N5:MOVA,21HCJNEA,#06H,N6MOVKEYBUF,#10MOVBUF_LED,#6ACALLGCZAJMPN9N6:MO
6、VA,21HCJNEA,#07H,N7MOVKEYBUF,#11MOVBUF_LED,#7ACALLGCZAJMPN9N7:MOVA,21HCJNEA,#08H,N8MOVKEYBUF,#12MOVBUF_LED,#8ACALLGCZAJMPN9N8:MOVA,21HCJNEA,#09H,N9MOVKEYBUF,#13MOVBUF_LED,#9ACALLGCZN9:RETGCZ:;“给初值”子程序---重新为定时器T0赋初值ACALLDISP;调显示子程序MOVA,KEYBUF;---重新为定时器T0赋初值MOVB,#
7、2MULABMOVTEMP,AMOVDPTR,#TABLE1MOVCA,@A+DPTRMOVSTH0,AMOVTH0,AINCTEMPMOVA,TEMPMOVCA,@A+DPTRMOVSTL0,AMOVTL0,ASETBTR0RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INT_T0:;定时器T0中断子程序MOVTH0,STH0;定时时间到,重新给T0赋初值MOVTL0,STL0CPLP1.1;求反P1.1得到音乐方波CLREX0;暂时关INT0中断,防止INT
8、0开着时,音调中噪音太大DJNZR0,EXI;以下四行为延时一段时间,保证遥控器按下后,扬声器响约1秒MOVR0,#100DJNZR2,EXIMOVR2,#3SETBEX0;开INT0中断,【1秒后再开INT0中断】CLRTR0;禁止T0定时器启动【注意:不是关T0中断:CLRET0】,扬声器响约1秒就停止EXI:RETI;;;;