新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT89C2051的紅外遙控學習器源程序

        基于AT89C2051的紅外遙控學習器源程序

        作者: 時間:2011-01-23 來源:網絡 收藏

        源程序

        ORG 0000H
        AJMP MAIN
        ORG 0003H
        AJMP KEYPRESS
        ORG 000BH
        AJMP TIMEOUT
        ORG 001BH
        AJMP TIMEOUT

        SENDDUAN BIT P3.0
        JIEDUAN BIT P3.1
        INTRPO BIT P3.2
        JIEXUAN BIT P3.3
        SENDLIGHT BIT P3.4
        JIELIGHT BIT P3.5
        CS BIT P3.7
        DATADUAN BIT P1.6
        CLK BIT P1.7
        JIANWEI EQU R5
        JIANMA EQU R6
        SHANGJIAN EQU 07H;R7
        OPENKEY EQU 81H
        CLOSEKEY EQU 00H
        CHUT0 EQU 11H
        CHUT1 EQU 11H
        BUFBEGIN EQU 18H
        OPENT1 EQU 88H
        CLOSET1 EQU 00H
        OPENT0 EQU 82H
        CLOSET0 EQU 00H
        DATABEG1 EQU 0AAH
        DATABEG2 EQU 33H

        ORG 0030H
        MAIN: MOV IE,#80H
        MOV IP,#00H
        MOV P3,#0FFH
        CLR CS
        SETB P1.0
        SETB P1.1
        SETB P1.2
        CLR P1.3
        CLR P1.4
        CLR P1.5
        CLR P1.6
        CLR P1.7

        MOV R3,#80H
        MOV R0,00H
        CYCLE1: MOV @R0,#00H
        INC R0
        DJNZ R3,CYCLE1

        MOV PSW,#00H
        MOV SP,#07H

        MOV TMOD,#11H
        MOV TCON,#00H

        START: MOV SP,#07H
        SETB SENDDUAN
        CLR F0
        SETB EXO
        WAITKEY: MOV C,F0
        JNC WAITKEY
        CJNC JIANMA,#1BH,SEND
        LCALL LEARNP
        LJMP START
        SEND: LCALL SENDP
        LJMP START

        SENDP: SETB SENDDUAN
        CLR F0
        MOV TMOD,#CHUT1
        CLR SENDLIGHT
        MOV A,JIANMA
        CJNE A,SHANGJIAN,SAME
        SAME: MOV R0,#BUFBEGIN
        CLR TR1
        LJMP NEXT3
        RETURN: CLR ET1
        SETB SENDDUAN
        SETB SENDLIGHT
        CLR F0
        LCALL DELAY
        RET
        NEXT3: CPL F0
        JB F0,SEND1
        SEND0: CLR C ;1
        MOV A,#0FFH
        SUBB A,@R0
        MOV R2,A ;1
        INC R0 ;1
        MOV A,#0FFH ;1
        SUBB A,@R0 ;1
        MOV R3,A
        INC R0
        CLR C
        MOV A,#4FH
        ADDC A,R2
        MOV R2,A
        MOV A,R3
        ADDC A,#00H
        MOV R3,A
        MOV TL1,R2
        MOV TH1,R3
        SETB TR1 ;1
        SETB ET1 ;1
        SEND1: CLR C
        MOV A,#0FFH
        SUBB A,@RO
        MOV TL1,A
        INC R0
        MOV A,#0FFH
        SUBB A,@R0
        MOV TH1,A
        INC R0
        SETB TR1
        SETB ET1
        NEXT6: CLR SENGGUAN
        MOV R3,#03H
        NEXT4: DJNZ R3,NEXT4
        SETB SENDDUAN
        MOV R3,#07H
        NEXT5: DJNZ R3,#NEXT5
        SJMP NEXT6

        TIMA1OUT: CLR ET1 ;2
        CLR TR1 ;2
        SETB SENDDUAN ;1
        CJNE@R0,#DATABEG2,TIM1NT2
        MOV DPTR,#RETURN ;2
        MOV R1,SP ;2
        MOV @R1,DPH ;2
        DEC R1 ;1
        MOV @R1,DPL ;2
        RETI ;2
        TIM1NET2: DEC R0
        TIM1NET1: CPL F0 ;1
        JB F0,SEND11 ;2
        SEND00: MOV DPTR,#SENDO ;11
        MOV R1,SP
        MOV @R1,DPH
        DEC R1
        MOV @R1,DPL
        RETI
        SEND11: MOV DPTR,#SEND1 ;11
        MOV R1,SP
        MOV @R1,DPH
        DEC R1
        MOV @R1,DPL
        RETI
        LEARNP: MOV R2,#02H
        NEXT91: MOV R3,#0FFH
        NEXT81: MOV R4,#0FFH
        NEXT71: DJNZ R4,NEXT71
        DJNZ R3,NEXT81
        GJNZ R2,NEXT91
        CLR F0
        SETB EX0
        MOV R2,#0AH
        MEXT9: MOV R3,#0FFH
        NEXT8: MOV R4,#0FFH
        NEXT7: JB F0,NEXT10
        DJNZ R4,NEXT7
        DJNZ R3,MEXT8
        DJNZ R2,NEXT9
        CLR EX0
        RET
        NEXT10: CJNE JIANMA,#1BH,NEXT11
        LJMP NEXT111
        NEXT11: RET
        NEXT111: CLR JIELIGHT
        CLR JIEXUAN
        CLR F0
        MOV R0,#BUFBEGIN
        SETB ET0
        MOV TCON,#00H
        MOV TMOD,#CHUT0
        MOV TL0,#00H
        MOV TH0,#00H
        MOV R2,#02H
        NEXT92: MOV R3,#0FFH
        NEXT82: MOV R4,#0FFH
        NEXT72: DJNZ R4,NEXT72
        DJNZ R3,NEXT82
        DJNZ R2,NEXT92

        CLR TR0
        L1: MOV C,JIEDUAN
        JC L1
        L4: SETB TR0
        L2: MOV C,JIEDUAN
        CLR TR0
        MOV @R0,TL0
        INC R0
        MOV TH0,#00H
        MOV TL0,#00H
        L6: SETB TR0
        L3: MOV C,JIEDUAN
        JC L3
        CLR TR0
        CLR C
        MOV A,TL0
        ADDC A,#13H
        MOV @R0,A
        INC R0
        MOV TH0,#00H
        MOV TL0,#00H
        SETB TR0
        L5: MOV C,JIEDUAN
        JNC L5
        CLR TR0
        CLR C ;1
        MOV A,TL0 ;1
        ADDC A,#13H ;1
        MOV @R0,A ;2
        INC R0
        MOV A,TH0
        ADDC A,#00H
        MOV @R0,A
        INC R0
        MOV TH0,#00H
        MOV TL0,#00H
        SJMP L6
        SHUJIAN: SETB JIEXUAN
        MOV @R0,#DATABEG1
        INC R0
        MOV @R0,#DATABEG2
        SETB EX0
        CLR F0
        NEXT13: JB F0,NEXT12
        LJMP NEXT13
        NEXT12: LCALL WRITEP
        SETB JIELIGHT
        RET
        TIME0OUT CLR ET0
        CLR TR0
        MOV DPTR,#SHUJIAN
        MOV @R1,DPH
        DEC R1
        MOV @R1,DPL
        RETI
        KEYPRESS: CLR EX0
        MOV R3,#0DH
        CYCLE3: MOV R4,#0FFH
        CYCLE2: DJNZ R4,CYCLE2
        DJNZ R3,CYCLE3
        MOV C,INTRPO
        JNC NEXT1
        RETI
        NEXT1: SETB F0
        MOV C,P1.0
        MOV ACC.0,C
        MOV C,P1.1
        MOV ACC.1,C
        MOV C,P1.2
        MOV ACC.2,C
        CLR P1.0
        CLR P1.1
        CLR P1.2
        SETB P1.3
        SETB P1.4
        SETB P1.5
        MOV C,P1.3
        MOV ACC.3,C
        MOV C,P1.4
        MOV ACC.4,C
        MOV C,P1.5
        MOV ACC.5,C
        ANL A,300111111B
        MOV JIANMA,A
        SETB P1.0
        SETB P1.1
        SETB P1.2
        CLR P1.3
        CLR P1.4
        CLR P1.5
        LCALL JIANWEIP
        RETI
        JIANWEIP: CJNE JIANMA,#36H,NEXT14
        MOV JIANWEI,#01H
        LJMP LAST
        NEXT14: CJNE JIANMA,#35H,NEXT15
        MOV JIANWEI,#02H
        LJMP LAST
        NEXT15: CJNE JIANMA,#35H,NEXT16
        MOV JIANWEI,#03H
        LJMP LAST
        NEXT16: CJNE JIANMA,#2EH,NEXT17
        MOV JIANWEI,#04H
        LJMP LAST
        NEXT17: CJNE JIANMA,#2DH NEXT18
        MOV JIANWEI, #05H
        LJMP LAST
        NEXT18: CJNE JIANMA,#2BH,NEXT19
        MOV JIANWEL,#06H
        LJMP LAST
        NEXT19: CJNE JIANMA,#1EH,NEXT20
        MOV JIANWEI,#07H
        LJMP LAST
        NEXT20: CJNE JIANMA,#1DH,NEXT21
        MOV JIANWEL,#09H
        LJMP LAST
        NEXT21: CJNE JIANMA,#1BH,NEXT22
        MOV JIANWEI,#09H
        LJMP LAST
        NEXT22: CLR FO
        LAST: RET
        READP: MOV RO,BUFBEGIN
        MOV A,JIANWEI
        MOV B,50
        MUL AB
        MOV R3,A
        SHU JU DI ZHI
        INC R3
        LCALL READCOM
        READNET2: MOV A,R3
        LCALL WRITEADRESS
        LCALL READBYTE
        CJNE ,#DATABEG1,READNET1
        MOV A R3
        INC A
        LACLL WRITEADRESS
        LCALL READBYTE
        CJNE A,#DATABEG2,READNET1
        CLR CS
        RET
        READNET1: MOV @RO,A
        INC RO
        INC R3
        LJMP READNET2
        WRITEP: MOV RO,BUFBEGIN
        MOV A,JIAWEI
        MOV B,50
        MUL AB
        MOV R3,A ;KAI SHI SHU
        JU DI ZHI
        INC R3
        LCALL EWEN
        WRITNET1: LACLL WRITECOM
        MOV,R3
        LCALL WRITEADRESS
        MOV A,@RO
        CJNE A,#DATABEG1,WRITNET2
        INC RO
        MOV A,@RO
        CJNE A,DATABEG2,WRITNET3
        LCALL EWDS
        CLR CS
        RETWRITNRT3: DEC RO
        WRITNET2: LCALL WRITEBYTE
        INC RO
        INC R3
        LJMP WRITNE1
        RET
        WRITBYTE: MOV R2,#08H
        BOUT1: CLR CLK
        RLC A
        MOV DATADUAN,C
        NOP
        SETB CLK
        NOPDJNZ R2,BOUT1
        CLRDATADUAN
        RET
        READBYTE: SETB DATAUAN
        MOV R2,#08H
        BIN1: CLR CLK
        NOP
        SETB CLK
        NOP
        MOV C,DATADUAN
        RLC A
        DJNZ R2,BIN1
        RET
        READCOM: CLR CS
        CLR CLK
        SETB DATADUAN
        SETB CS
        NOP
        SETB CLK ;1
        NOP
        CLR CLK
        NOP
        SETB CLK ;1
        NOP
        CLR DATAUAN
        CLR CLK
        NOP
        SETB CLK ;0
        RET
        WRITECOM: CLR CS
        NOP
        CLR CLK
        SETB DATADUAN
        SETB CS
        NOP
        SETB CLK ;1
        NOP
        CLR DATADUAN
        NOP
        CLR CLK
        NOP
        SETB CLK ;0
        NOP
        SETB DATADUAN
        NOP
        CLR CLK
        NOP
        SETB CLK ;1
        RET
        WRITEADRESS: MOV R2,#07H
        RLC A ;TIAO GUO
        DI 7 WEI
        BOUT2: CLR CLK
        RLC A
        MOV DATADUAN,C
        NOP
        DJNA R2,BOUT2
        CLR DATAUAN
        RET
        EQEN: CLR CS
        CLR CLK
        SETB DATADUAN
        SETB CS
        SETB CLK ;1
        NOP
        CLR CLK
        NOP
        CLR DATADUAN
        SETB CLK ;0
        NOP
        NOP
        CLR CLK
        NOP
        SETB CLK ;0
        NOP
        NOP
        SETB DATADUAN
        CLR CLK
        NOP
        SETB CLK ;1
        NOP
        NOP
        SETB CLK ;1
        NOP
        NOP
        CLR CLK
        NOP
        NOP
        CLR CS
        RET
        EWDS: CLR CS
        CLR CLK
        SETB DATADUAN
        SETB CS
        SETB CLK ;1
        NOP
        CLR CLK
        NOP
        CLR DATADUAN
        SETB CLK ;0
        NOP
        NOP
        CLR CLK
        NOP
        SETB CLK ;0
        NOP
        NOP
        CLR CLK
        NOP
        NOP
        RETB CLK ;0
        NOP
        NOP
        SETB CLK ;0
        NOP
        NOP
        CLR CLK
        NOP
        NOP
        SETB CLK ;0
        NOP
        NOP
        CLR CS
        CLR CLK
        RET
        DELAY: MOV R3,#96H
        DEL1: MOV R4,#OFFH
        DEL2: DJNZ R4,DEL2
        DJNZ R3,#DEL1
        RET
        END



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 锦屏县| 雅安市| 定襄县| 隆安县| 公主岭市| 疏勒县| 资溪县| 罗平县| 健康| 井冈山市| 澄江县| 富平县| 澜沧| 辛集市| 巴南区| 临澧县| 荥经县| 长岛县| 福清市| 辛集市| 涞源县| 南投市| 邯郸县| 新巴尔虎左旗| 金沙县| 仁化县| 屯留县| 八宿县| 全南县| 历史| 太仆寺旗| 甘泉县| 霸州市| 鲁山县| 离岛区| 东台市| 洪江市| 资阳市| 乐山市| 聂拉木县| 和田县|