Board logo

标题: 基于51单片机的红外遥控器源程序 [打印本页]

作者: 苹果也疯狂    时间: 2015-3-15 21:41     标题: 基于51单片机的红外遥控器源程序

下面是基于AT89C2051的红外遥控学习器源程序



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

RET

WRITNRT3: 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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0