STC89C52学习型遥控器源程序_第1页
STC89C52学习型遥控器源程序_第2页
STC89C52学习型遥控器源程序_第3页
STC89C52学习型遥控器源程序_第4页
STC89C52学习型遥控器源程序_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、STC89C52学习型遥控器源程序STC89C52 做的学习型遥控器,可存八个红外遥控信 息,只要再把按键用定时器中断 2 完成就可以用于商业 生产.RXIN BIT P2.0TXZAI BIT P2.2TXOUT BIT P2.1KEY_SIGN BIT 20H ; 为 0按键错误,为 1 按键正确 RXTX_SIGN BIT 21H ; 为 0是为发射状态,为 1是为接 收状态ISP_DATA DATA 0E2H ;ISP 功能寄存器定义ISP_ADDRH DATA 0E3HISP_ADDRL DATA 0E4HISP_CMD DATA 0E5HISP_TRIG DATA 0E6HISP_

2、CONTR DATA 0E7HISP_CMD_NO EQU 0 ; 操作数ISP_CMD_READ EQU 1ISP_CMD_PROGRAM EQU 2ISP_CMD_ERASE EQU 3WAIT_TIME EQU 1 ; 等待时间ZHIL EQU 30HZHIH EQU 31HGESHU EQU 32HJISHU EQU 33HKEY_WORD EQU 34HKEY_VALUE EQU 35HADDRH EQU 36HADDRL EQU 37HTX_GESHU EQU 38HORG 0000HLJMP STARTORG 000BHLJMP T0INORG 001BHLJMP T1INORG

3、 0100HSTART: MOV SP,#10HCLR RXTX_SIGNLJMP KEY_MAINKEY_MAIN:LCALL SCAN_KEY ; 检测有没有单个按键按 下MOV A,KEY_WORDCJNE A,#00H,NEXT1LJMP KEY_MAINNEXT1: JNB KEY_SIGN,KEY_MAINMOV KEY_VALUE,ALCALL RE_DELAY ; 消抖时间 20msLCALL SCAN_KEY ; 是否依然是按下的MOV A,KEY_WORDCJNE A,#00H,NEXT2LJMP KEY_MAINNEXT2: JNB KEY_SIGN,KEY_MAINCJ

4、NE A,KEY_VALUE,KEY_MAINRELEASE: LCALL SCAN_KEY ; 查看是否放开按键了MOV A,KEY_WORDCJNE A,#00H,RELEASEMOV DPTR,#TAB ; 执行相应的程式CLR CMOV A,KEY_VALUEADD A,KEY_VALUEJMP A+DPTRTAB: AJMP KEY_0AJMP KEY_1AJMP KEY_2AJMP KEY_3AJMP KEY_4AJMP KEY_5AJMP KEY_6AJMP KEY_7AJMP KEY_8AJMP KEY_9AJMP KEY_10AJMP KEY_11AJMP KEY_12AJM

5、P KEY_13AJMP KEY_14AJMP KEY_15AJMP KEY_16KEY_0: LJMP KEY_MAIN ; 无效的按健值KEY_1: JNB RXTX_SIGN,T1RX ; 接收发送键设定键,P1 灯亮为接收存储状态,灯灭是为发射状态T1TX: CLR RXTX_SIGNMOV P1,#0FFHLJMP KEY_MAINT1RX: SETB RXTX_SIGNMOV P1,#00HLJMP KEY_MAINKEY_2: MOV ADDRH,#20HMOV ADDRL,#00HJB RXTX_SIGN,KEY2_RX KEY2_TX:LJMP TX_START KEY2_R

6、X:LJMP RX_START KEY_3: MOV ADDRH,#22HMOV ADDRL,#00HJB RXTX_SIGN,KEY3_RX KEY3_TX:LJMP TX_START KEY3_RX:LJMP RX_START KEY_4: MOV ADDRH,#24HMOV ADDRL,#00HJB RXTX_SIGN,KEY4_RX KEY4_TX:LJMP TX_START KEY4_RX:LJMP RX_START KEY_5: MOV ADDRH,#26HMOV ADDRL,#00HJB RXTX_SIGN,KEY5_RXKEY5_TX:LJMP TX_START KEY5_RX

7、:LJMP RX_START KEY_6: MOV ADDRH,#28HMOV ADDRL,#00HJB RXTX_SIGN,KEY6_RX KEY6_TX:LJMP TX_START KEY6_RX:LJMP RX_START KEY_7: MOV ADDRH,#2AHMOV ADDRL,#00HJB RXTX_SIGN,KEY7_RX KEY7_TX:LJMP TX_START KEY7_RX:LJMP RX_START KEY_8: MOV ADDRH,#2CHMOV ADDRL,#00HJB RXTX_SIGN,KEY8_RX KEY8_TX:LJMP TX_START KEY8_RX

8、:LJMP RX_START KEY_9: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY9_RX KEY9_TX:LJMP TX_START KEY9_RX:LJMP RX_STARTKEY_10: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY10_RX KEY10_TX:LJMP TX_START KEY10_RX:LJMP RX_START KEY_11: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY11_RX KEY11_TX:LJMP TX_START K

9、EY11_RX:LJMP RX_START KEY_12: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY12_RX KEY12_TX:LJMP TX_START KEY12_RX:LJMP RX_START KEY_13: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY13_RX KEY13_TX:LJMP TX_START KEY13_RX:LJMP RX_START KEY_14: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY14_RXKEY14_TX:LJMP

10、 TX_START KEY14_RX:LJMP RX_START KEY_15: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY15_RXKEY15_TX:LJMP TX_STARTKEY15_RX:LJMP RX_STARTKEY_16: MOV ADDRH,#2EHMOV ADDRL,#00HJB RXTX_SIGN,KEY16_RXKEY16_TX:LJMP TX_STARTKEY16_RX:LJMP RX_START SCAN_KEY:CLR KEY_SIGN第一行MOV KEY_WORD,#00HKEY1: MOV P3,#11111110B

11、JB P3.4,KEY2JB KEY_SIGN,KEYWRONG1MOV KEY_WORD,#1SETB KEY_SIGNKEY2: JB P3.5,KEY3JB KEY_SIGN,KEYWRONG1MOV KEY_WORD,#2SETB KEY_SIGNKEY3: JB P3.6,KEY4JB KEY_SIGN,KEYWRONG1MOV KEY_WORD,#3SETB KEY_SIGNKEY4: JB P3.7,KEY5JB KEY_SIGN,KEYWRONG1MOV KEY_WORD,#4SETB KEY_SIGNLJMP KEY5第二行KEYWRONG1: LJMP KEYWRONG K

12、EY5: MOV P3,#11111101B ;JB P3.4,KEY6JB KEY_SIGN,KEYWRONG2MOV KEY_WORD,#5SETB KEY_SIGNKEY6: JB P3.5,KEY7JB KEY_SIGN,KEYWRONG2MOV KEY_WORD,#6SETB KEY_SIGNKEY7: JB P3.6,KEY8JB KEY_SIGN,KEYWRONG2MOV KEY_WORD,#7SETB KEY_SIGNKEY8: JB P3.7,KEY9JB KEY_SIGN,KEYWRONG2MOV KEY_WORD,#8SETB KEY_SIGNLJMP KEY9第三行KE

13、YWRONG2:LJMP KEYWRONGKEY9: MOV P3,#11111011B ;JB P3.4,KEY10JB KEY_SIGN,KEYWRONG3MOV KEY_WORD,#9SETB KEY_SIGNKEY10: JB P3.5,KEY11JB KEY_SIGN,KEYWRONG3MOV KEY_WORD,#10SETB KEY_SIGNKEY11: JB P3.6,KEY12JB KEY_SIGN,KEYWRONG3MOV KEY_WORD,#11SETB KEY_SIGNKEY12: JB P3.7,KEY13JB KEY_SIGN,KEYWRONG3MOV KEY_WOR

14、D,#12SETB KEY_SIGN第四行LJMP KEY13 KEYWRONG3:LJMP KEYWRONG KEY13: MOV P3,#11110111B ;JB P3.4,KEY14JB KEY_SIGN,KEYWRONG4MOV KEY_WORD,#13SETB KEY_SIGNKEY14: JB P3.5,KEY15JB KEY_SIGN,KEYWRONG4MOV KEY_WORD,#14SETB KEY_SIGNKEY15: JB P3.6,KEY16JB KEY_SIGN,KEYWRONG4MOV KEY_WORD,#15SETB KEY_SIGNKEY16: JB P3.7,

15、SCAN_ENDJB KEY_SIGN,KEYWRONG4MOV KEY_WORD,#16SETB KEY_SIGNLJMP SCAN_ENDKEYWRONG4: LJMP KEYWRONGKEYWRONG:CLR KEY_SIGNSCAN_END:RETRE_DELAY:MOV R7,#5DE2:MOV R6,#10DE1:MOV R5,#200DJNZ R5,$DJNZ R6,DE1DJNZ R7,DE2RETRX_START: CLR P2.4 ; 接收红外信号,存入外部扩 展寄存器 0256CLR P2.6CLR P2.7CLR P2.2CLR TXOUTMOV R1,#00HMOV

16、R0,#00HMOV TMOD,#00010001BMOV TH0,#00HMOV TL0,#00HMOV TH1,#00HMOV TL1,#00HCLR ET0CLR ET1CLR EACLR TR0CLR TR1LJMP RX_MAINRX_MAIN: MOV R0,#00HJB RXIN,$SETB TR0JUDGE1: JB TF0,RXENDJNB RXIN,JUDGE1CLR TR0SETB TR1MOV A,TL0MOVX R0,AINC R0MOV A,TH0MOVX R0,AINC R0MOV TL0,#00HMOV TH0,#00HINC R1JUDGE2: JB TF1,

17、RXENDJB RXIN,JUDGE2CLR TR1SETB TR0MOV A,TL1MOVX R0,AINC R0MOV A,TH1MOVX R0,AINC R0MOV TL1,#00HMOV TH1,#00HINC R1AJMP JUDGE1RXEND: CLR TR0CLR TR1CLR TF0CLR TF1MOV TL0,#00HMOV TH0,#00HMOV TL1,#00HMOV TH1,#00HMOV GESHU,R1MOV R1,GESHU ; 取反转换重新存入外部扩展寄存 器MOV R0,#00HLOOP_CPL: MOVX A,R0CPL AMOVX R0,AINC R0M

18、OVX A,R0CPL AMOVX R0,AINC R0DJNZ R1,LOOP_CPLLJMP ISP_STOREISP_STORE: LCALL ISP_ERASEMOV ISP_DATA,GESHU ;将个数输入至U ISP_EEPROI的第一位MOV ISP_ADDRH,ADDRHMOV ISP_ADDRL,ADDRLCLR EAMOV ISP_CONTR,#WAIT_TIMEORL ISP_CONTR,#10000000BMOV ISP_CMD,#ISP_CMD_PROGRAMMOV ISP_TRIG,#46HMOV ISP_TRIG,#0B9HNOPMOV R1,GESHUMOV

19、R0,#00HLOOP_WRITE: LCALL BYTE_WRITE ; 将扩展寄存器中的计时值依次放入ISP_EEPRO第二位开始的存储器中INC R0LCALL BYTE_WRITEINC R0DJNZ R1,LOOP_WRITEMOV ISP_CMD,#00H ;ISP 指令清零,防止误触发MOV ISP_TRIG,#00HMOV ISP_ADDRH,#00HMOV ISP_ADDRL,#00Hmov p1,geshuLJMP KEY_MAINBYTE_WRITE: MOVX A,R0MOV ISP_DATA,AMOV ISP_ADDRH,ADDRHINC R0MOV ISP_ADDR

20、L,R0DEC R0CLR EAMOV ISP_CONTR,#WAIT_TIMEORL ISP_CONTR,#10000000BMOV ISP_CMD,#ISP_CMD_PROGRAMMOV ISP_TRIG,#46HMOV ISP_TRIG,#0B9HNOPRETISP_ERASE: MOV ISP_ADDRH,ADDRHMOV ISP_ADDRL,ADDRLCLR EAMOV ISP_CONTR,#WAIT_TIMEORL ISP_CONTR,#10000000BMOV ISP_CMD,#ISP_CMD_ERASEMOV ISP_TRIG,#46HMOV ISP_TRIG,#0B9HNOP

21、RETTX_START: MOV ISP_ADDRH,ADDRH ; 取出第一位的 个数MOV ISP_ADDRL,ADDRLCLR EAMOV ISP_CONTR,#WAIT_TIMEORL ISP_CONTR,#10000000BMOV ISP_CMD,#ISP_CMD_READMOV ISP_TRIG,#46HMOV ISP_TRIG,#0B9HNOPMOV ISP_CMD,#00H ;ISP 指令清零,防止误触发MOV ISP_TRIG,#00HMOV ISP_ADDRH,#00HMOV ISP_ADDRL,#00HMOV A,ISP_DATA ; 为 0FF 则是错误的,回去,不为0

22、FF 则继续CJNE A,#0FFH,ISP_READLJMP KEY_MAINISP_READ: MOV GESHU,ISP_DATAMOV R1,GESHUMOV R0,#00HLOOP_READ: LCALL BYTE_READINC R0LCALL BYTE_READINC R0DJNZ R1,LOOP_READLJMP TX_EXROMBYTE_READ: INC R0MOV ISP_ADDRH,ADDRHMOV ISP_ADDRL,R0DEC R0CLR EAMOV ISP_CONTR,#WAIT_TIMEORL ISP_CONTR,#10000000BMOV ISP_CMD,#ISP_CMD_READMOV ISP_TRIG,#46HMOV I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论