⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 遥控解调器程序.asm

📁 1256高频头遥控接收版本
💻 ASM
字号:

       P_IR     DATA 	60H
       State    DATA    61H
      Search    DATA    62H
      NCheck    DATA    63H
      TIME_N    DATA    64H

       SubA     DATA 	65H
       ADB	DATA 	66H
       DB1	DATA 	67H
       DB2	DATA 	68H
       CB	DATA 	69H
       PB	DATA 	6AH
       STB      DATA 	6BH
       Temp 	DATA 	6CH


       MIR      EQU  70H
       scl      equ p3.0
       sda      equ p3.1
       IR	EQU  P3.3


       FI1256 	EQU  0C0H
       AT24C02	EQU  0A0H


        ORG    0000H
        AJMP   MAIN

        ORG 000BH
        AJMP TIME

        ORG 0013H
	AJMP INT

        ORG    0030H
MAIN: 	MOV    R4,#0F0H
        DJNZ   R4,$

        ACALL INIF

        SETB IT1
        SETB EX1
        SETB EA
 loop:  MOV A,P_IR
        JZ loop
        ACALL YKDATA
 	AJMP loop


YKDATA: CLR EX1


   ZT0: MOV A,#00H
	CJNE A,State,ZT1

	MOV A,MIR
        JNZ NFZ
	MOV R0,#MIR
	MOV R2,#01H
	ACALL MOVE
        ACALL display
        AJMP EX

  NFZ:	CLR C
	MOV A,P_IR
        SUBB A,#06H
        JC ZTEX0
	ACALL display

	MOV R3,#08H
	MOV DPTR,#TAB
ZT0_LOOP:MOV A,R3
        DEC A
        MOV B,#06H
        MUL AB
        MOV R1,A
        MOV R2,#06H
        ACALL COMP
        JZ  ZT0_0
        DJNZ R3,ZT0_LOOP
        AJMP  ZT0_1


  ZT0_0:MOV A,R3
  	MOV B,#08H
	MUL AB
	MOV SUBA,A

  	MOV A,#7FH
    ZTA:RL  A
        DJNZ R3,ZTA
        MOV P1,A
	MOV State,#01H
	CLR P3.7

 ZT0_1: MOV R0,#MIR
	MOV R2,#06H
	ACALL MOVE
 ZTEX0:	AJMP EX


  ZT1: MOV A,#01H
        CJNE A,State,ZTExit
	CLR C
	MOV A,P_IR
        SUBB A,#05H
        JC ZTEX1
	MOV DPTR,#TabExit
        MOV R1,#00H
        MOV R2,#05H
        ACALL COMP
	JZ  ZTExit
	MOV DPTR,#TabUp
        MOV R1,#00H
        MOV R2,#05H
        ACALL COMP
	MOV Search,#01H
	JZ  ZT2
	MOV DPTR,#TabDown
        MOV R1,#00H
        MOV R2,#05H
        ACALL COMP
	MOV Search,#00H
	JZ  ZT2

ZT1_1:  MOV Adb,#0C0H
        MOV CB,#88H
	ACALL BHML
	JNZ  ZT1_2

	MOV R1,#DB1
	MOV R2,#04H
	MOV A,#FI1256
	ACALL Write

	ACALL YS10MS
	MOV R1,#SUBA
	MOV R2,#06H
	MOV A,#AT24C02
	ACALL Write

  ZT1_2:ACALL display
  	MOV R0,#MIR
	MOV R2,#05H
	ACALL MOVE

  ZTEX1:AJMP EX


   ZT2: ACALL display
   	MOV TIME_N,#05H
   	MOV TMOD,#01H
   	MOV TL0,#0B0H
   	MOV TH0,#3CH
   	SETB TR0
   	SETB ET0
   	ACALL AUTO
   	CLR TR0
   	CLR ET0
   	CLR P3.7
  	MOV R0,#MIR
	MOV R2,#05H
	ACALL MOVE

  	AJMP EX

 ZTExit:MOV P1,#0FFH
  	MOV P_IR,#00H
        MOV State,#00H
  	SETB P3.7
  	AJMP EX

    EX: SETB EX1
      	RET



 INIF:  MOV P_IR,#00H
        MOV State,#00H
        MOV P1,#0FFH
        MOV P3,#0FFH
        MOV NCheck,#00H

 	MOV R4,#08H
 INIF0: MOV A,R4
        MOV B,#08H
	MUL AB
	MOV SUBA,A

        MOV R1,#SUBA
	MOV R2,#01H
	MOV A,#AT24C02
	ACALL Write
        MOV R1,#Adb
	MOV R2,#05H
	MOV A,#AT24C02
	ACALL READ
	ACALL YS10MS
	JZ AAA
	ACALL DISPLAY
	INC NCheck
  AAA:  MOV A,R4
        MOV R3,A
        MOV A,#7FH
  INIF1:RL  A
        DJNZ R3,INIF1
        MOV P1,A

        MOV R1,#DB1
	MOV R2,#04H
	MOV A,#FI1256
	ACALL Write
	ACALL YS10MS
	JZ BBB
	ACALL DISPLAY
	INC NCheck

  BBB:  DJNZ R4,INIF0
	MOV P1,#0FFH
	MOV A,NCheck
	CJNE A,#00H,CCC
	CPL P3.7
	MOV R6,#255
     D6:MOV R7,#255
     	DJNZ R7,$
     	DJNZ R6,D6
        CPL P3.7
  CCC:  RET


display:CPL P3.7
	MOV R6,#255
        MOV R7,#255
     	DJNZ R7,$
     	DJNZ R6,D6
        CPL P3.7
        RET


 AUTO:  MOV R1,#SUBA
	MOV R2,#01H
	MOV A,#AT24C02
	ACALL Write
        MOV R1,#Adb
	MOV R2,#05H
	MOV A,#AT24C02
	ACALL READ


fine1:	MOV A,Search
        CJNE A,#00H,FADD
	CLR C
 	MOV A,DB2
 	SUBB A,#01H
        MOV DB2,A
        MOV A,DB1
        SUBB A,#00H
        MOV DB1,A
        AJMP FOK

FADD:   MOV A,DB2
 	ADD A,#01H
        MOV DB2,A
        MOV A,DB1
        ADDC A,#00H
        MOV DB1,A

FOK:    ACALL Band
 	JNZ  Fine3
        ACALL YS10MS
        MOV R1,#DB1
	MOV R2,#04H
	MOV A,#FI1256
	ACALL Write

        ACALL YS10MS
        MOV R1,#STB
	MOV R2,#01H
	MOV A,#FI1256
	ACALL Read

	MOV A,STB
	ANL A,#07H
	CJNE A,#02,fine1
	ACALL IsTure
        JNZ  fine1

 Fine2: MOV R1,#SUBA
	MOV R2,#06H
	MOV A,#AT24C02
	ACALL Write

 Fine3:RET


IsTure: MOV R4,DB1
 	MOV R5,DB2

	CLR C
	MOV A,DB2
	SUBB A,#02H
	MOV DB2,A
	MOV A,DB1
	SUBB A,#00H
	MOV DB1,A

        ACALL YS10MS
        MOV R1,#DB1
	MOV R2,#03H
	MOV A,#FI1256
	ACALL Write

        ACALL YS10MS
        MOV R1,#STB
	MOV R2,#01H
	MOV A,#FI1256
	ACALL Read

	MOV DB1,R4
 	MOV DB2,R5
        ACALL YS10MS
        MOV R1,#DB1
	MOV R2,#02H
	MOV A,#FI1256
	ACALL Write

	MOV A,STB
	ANL A,#07H
	SUBB A,#03H
	JNC IsOK
	MOV A,#01H
	RET
 IsOK:  MOV A,#00H
	RET





 COMP:  MOV R0,#MIR
 COMP1: MOV A,R1
	MOVC A,@A+DPTR
       	XRL A,@R0
       	JNZ CEXIT
       	INC R0
       	INC R1
       	DJNZ R2,COMP1
CEXIT: 	RET



  MOVE: MOV A,R2
        MOV R3,A
  	ADD A,R0
  	MOV R1,A
        MOV A,#16
        CLR C
        SUBB A,R2
        MOV R2,A
    M1: MOV A,@R1
        MOV @R0,A
        INC R0
        INC R1
        DJNZ R2,M1
  	MOV A,P_IR
        SUBB A,R3
        MOV P_IR,A
        RET


  BHML: MOV R0,#MIR
        MOV A,@R0
        MOV B,#100
        MUL AB
        MOV DB2,A
        MOV DB1,B
        INC R0
        MOV A,@R0
        MOV B,#10
        MUL AB
        ADD A,DB2
        MOV DB2,A
        MOV A,B
        ADDC A,DB1
        MOV DB1,A
        INC R0
        MOV A,@R0
        ADD A,DB2
        MOV DB2,A
        MOV A,#0
        ADDC A,DB1
        MOV DB1,A

        MOV A,#20
        MOV B,DB2
        MUL AB
        MOV DB2,A
        MOV R1,B
        MOV A,#20
        MOV B,DB1
        MUL AB
        ADD A,R1
        MOV DB1,A

        MOV A,#0AH
        ADD A,DB2
        MOV DB2,A
        MOV A,#03H
        ADDC A,DB1
        MOV DB1,A

        INC R0
        MOV A,@R0
        RL A
        RL A
        RL A
        RL A
        INC R0
        XCHD A,@R0

  BHD:  MOV R2,#8
  BHD0: ADD A,ACC
	DA A
	XCH A,R3
	RLC A
	XCH A,R3
	DJNZ R2,BHD0
	ADD A,#0B0H
	JNC BHD1
	INC R3
 BHD1:  MOV A,R3

        MOV B,#20
        MUL AB
        MOV A,B
        ADD A,DB2
        MOV DB2,A
        MOV A,#00
        ADDC A,DB1
        MOV DB1,A

	ACALL Band

        RET

  Band: CLR C
        MOV A,DB2
        SUBB A,#8AH
        MOV A,DB1
        SUBB A,#46H
        JC BH
        AJMP  BFH
   BH:  CLR C
        MOV A,DB2
        SUBB A,#32H
        MOV A,DB1
        SUBB A,#26H
        JC BM
        MOV PB,#30H
        AJMP BOK
   BM:  CLR C
        MOV A,DB2
        SUBB A,#52H
        MOV A,DB1
        SUBB A,#10H
        JC BL
        MOV PB,#90H
        AJMP BOK
   BL:  CLR C
        MOV A,DB2
        SUBB A,#0CAH
        MOV A,DB1
        SUBB A,#06H
        JC  BFL
        MOV PB,#0A0H

   BOK:	MOV A,#00H
        RET
   BFH: MOV A,#02H
        RET
   BFL: MOV A,#01H
        RET


 TAB: 	DB  05H,05H,07H,08H,00h,01h
 	DB  05H,05H,07H,08H,00h,02h
  	DB  05H,05H,07H,08H,00h,03h
 	DB  05H,05H,07H,08H,00h,04h
  	DB  05H,05H,07H,08H,00h,05h
  	DB  05H,05H,07H,08H,00h,06h
 	DB  05H,05H,07H,08H,00h,07h
 	DB  05H,05H,07H,08H,00h,08h
 TabExit: DB  00H,00H,00H,00H,00H,00H
 TabDown: DB  08H,08H,08H,08H,08H,08H
 TabUp:   DB  09H,09H,09H,09H,09H,09H

TIME:   MOV TL0,#0B0H
   	MOV TH0,#3CH
	DJNZ TIME_N,T_LOOP
	MOV TIME_N,#05H
	CPL P3.7
T_LOOP:	RETI


INT:  	CLR EA
	PUSH ACC
	PUSH 00H
	PUSH 01H
	PUSH 02H
	PUSH 03H
	PUSH 04H
	PUSH 05H
	MOV R4,#10
SB:     ACALL YS882
     	JB IR,EXIT
     	DJNZ R4, SB

	JNB IR, $
	ACALL YS4740

	MOV R1,#Temp
	MOV R2,#4
PP:    	MOV R3,#8
JJJJ:  	JNB IR,$
       	LCALL YS882
      	MOV C,IR
      	JNC UUU
      	LCALL YS1000
UUU:  	MOV A,@R1
      	RRC A
      	MOV @R1,A
	DJNZ R3,JJJJ
	INC R1
	DJNZ R2,PP

        MOV R1,#Temp
        INC R1
        INC R1
        MOV A, @R1
        MOV R2,A
        CPL A
        INC R1
        XRL A,@R1
        JNZ EXIT

	MOV A,P_IR
        XRL A,#0Fh
        JZ EXIT

  SAVE: MOV A,R2
        CLR C
        SUBB A,#10
        JNC EXIT

	MOV A,#MIR
        ADD A,P_IR
        MOV R1,A
	MOV A,R2
	MOV @R1, A
        INC P_IR

 	CPL P3.7
        ACALL YS1S
        CPL P3.7

 EXIT:
	POP 05H
	POP 04H
 	POP 03H
	POP 02H
	POP 01H
	POP 00H
 	POP ACC
 	SETB EA
       	RETI

YS882: 	MOV R6,#2
     	D1:  MOV R7,#133
     	DJNZ R7,$
     	DJNZ R6,D1
     	RET
YS4740: MOV R6,#30
     	D2: MOV R7,#52
     	DJNZ R7,$
     	DJNZ R6,D2
     	RET
YS1000:	MOV R6,#2
     	D3:MOV R7,#165
     	DJNZ R7,$
     	DJNZ R6,D3
     	RET
 YS10ms:MOV R6,#20
    	D4: MOV R7,#165
     	DJNZ R7,$
     	DJNZ R6,D4
     	RET
  YS1S: MOV R6,#200
     	D5:MOV R7,#100
     	DJNZ R7,$
     	DJNZ R6,D5
     	RET




Write:  ACALL START
	ACALL SEND
	JC Write1
Write0: MOV A,@R1
        ACALL SEND
	JC Write1
	INC R1
	DJNZ R2,Write0
	MOV A,#00H
	AJMP Write2
Write1: MOV A,#01H
Write2: ACALL STOP
	RET ;



 READ:	ACALL START
	INC A
	ACALL SEND
	JC  Read1;
 Read0: ACALL REV
	MOV @R1,A
	INC R1
	DJNZ R2,READ0
	MOV A,#00H
        AJMP Read2
 Read1: MOV A,#01H
 Read2: ACALL STOP
	RET


 START: setb sda
	ACALL DELAY
	setb scl
	ACALL DELAY
	clr sda
	ACALL DELAY
	clr scl
	ACALL DELAY
	ret


  STOP: clr sda
	ACALL DELAY
	setb scl
	ACALL DELAY
	setb sda
	ACALL DELAY
	ret

  Send: mov r0,#08h
 Send0: rlc a
	mov sda,c
	ACALL DELAY
	setb scl
	ACALL DELAY
	clr scl
	ACALL DELAY
	djnz r0,Send0
	setb sda
	ACALL DELAY
	setb scl
	ACALL DELAY
	MOV C,SDA
	clr scl
	ACALL DELAY
	RET


  REV:  MOV R0,#08H
  REV0: SETB SDA
	ACALL DELAY
	SETB SCL
	ACALL DELAY
	MOV C,SDA
	RLC A
	CLR SCL
	ACALL DELAY
	DJNZ R0,REV0
	CJNE R2,#01H,REV1
 	SETB SDA
	ACALL DELAY
	SETB SCL
        ACALL DELAY
        CLR SCL
	ACALL DELAY
	RET
  REV1: CLR SDA
	ACALL DELAY
	SETB SCL
        ACALL DELAY
	CLR SCL
	ACALL DELAY
	RET


 DELAY: NOP
	NOP
	NOP
	NOP
	RET
     	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -