|  | 
 
| 源程序 
 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
 
 | 
 |