STC89C52学习型遥控器源程序.docx

上传人:scccc 文档编号:14770295 上传时间:2022-02-19 格式:DOCX 页数:21 大小:11.77KB
返回 下载 相关 举报
STC89C52学习型遥控器源程序.docx_第1页
第1页 / 共21页
STC89C52学习型遥控器源程序.docx_第2页
第2页 / 共21页
STC89C52学习型遥控器源程序.docx_第3页
第3页 / 共21页
STC89C52学习型遥控器源程序.docx_第4页
第4页 / 共21页
STC89C52学习型遥控器源程序.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STC89C52学习型遥控器源程序.docx》由会员分享,可在线阅读,更多相关《STC89C52学习型遥控器源程序.docx(21页珍藏版)》请在三一文库上搜索。

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,#I

23、SP_CMD_READMOV ISP_TRIG,#46HMOV ISP_TRIG,#0B9HNOPMOV A,ISP_DATAMOVX R0,ARETTX_EXROM: MOV TMOD,#00010010BMOV TH0,#0F4HMOV TL0,#0F4HMOV R1,GESHUMOV R0,#00HMOVX A,R0MOV TL1,AINC R0MOVX A,R0MOV TH1,AINC R0DEC R1MOVX A,R0MOV ZHIL,AINC R0MOVX A,R0MOV ZHIH,AINC R0DEC R1SETB ET1SETB ET0SETB EASETB TR1SETB T

24、R0CLR TXOUTMAIN2:CJNE R1,#00H,MAIN2CLR TXOUTmov p1,#55hLJMP KEY_MAINT0IN:CPL TXZAIRETIT1IN: MOV TL1,ZHILMOV TH1,ZHIHJB TR0,NEXTT1SETB TR0LJMP NEXTTNEXTT1:CLR TR0CLR TXZAINEXTT:CPL TXOUTMOVX A,R0MOV ZHIL,AINC R0MOVX A,R0MOV ZHIH,AINC R0DJNZ R1,OUTTICLR TR1CLR TR0CLR TXZAICLR TXOUTOUTTI:RETIDELAYXMS:MOV R7,#255DEL1:MOV R6,#4DEL2:MOV R5,#5DJNZ R5,$DJNZ R6,DEL2DJNZ R7,DEL1RETDELAYX2MS:MOV R7,#255DEL12:MOV R6,#50DEL22:MOV R5,#50DJNZ R5,$DJNZ R6,DEL22DJNZ R7,DEL12 RET END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1