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

📄 b4cgp.asm

📁 模拟感应式机顶盒源代码,用于电视信号收费系统解扰
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		RET               
RX_E2PROM:;接收数据子程序
		IOR     PORT6         
         	OR      A,@EE2ROM_OR;		
         	IOW     PORT6
        	MOV     A,@8           
        	MOV     COUNTER,A
        	CLR     RXBUF
	RXLP_E2PROM:
		BS      PORT6,SCL_E2PROM  
		MOV     A,@1
        	CALL    DELAY_EEROM
		BS      PORT6,SDA_E2PROM 
	       	BC      STATUS,C
          	JBC     PORT6,SDA_E2PROM   
          	BS      STATUS,C  
          	RLC     RXBUF     
      	  	BC      PORT6,SCL_E2PROM 
      	  	MOV     A,@1
        	CALL    DELAY_EEROM 
             	DEC    COUNTER
		JBS     STATUS,Z         
        	JMP     RXLP_E2PROM
        	BS      TXBUF,7     
		CALL    BITOUT_E2PROM  
        	RET    
TX_E2PROM:
		JBC    SIGN_FLAG2,ACK_ERROR
		JMP    EXIT_EROM
		BC     STATUS,C
        	MOV     A,@8
        	MOV     COUNTER,A
 	TXLP_E2PROM:
               	CALL    BITOUT_E2PROM   
        	RLC     TXBUF
        	DEC     COUNTER
		JBS     STATUS,Z          
        	JMP     TXLP_E2PROM     
	       	BS      PORT6,SDA_E2PROM
	       	IOR     PORT6         
         	OR      A,@EE2ROM_OR;		
         	IOW     PORT6
       		BS      PORT6,SCL_E2PROM
       		MOV     A,@60
           	MOV     WAIT_ACK,A
 	WAIT_ACK_E2PROM:
         	JBS     PORT6,SDA_E2PROM  
         	JMP     ACK_E2PROMR
         	DJZ     WAIT_ACK
         	JMP     WAIT_ACK_E2PROM
               	BS	SIGN_FLAG2,ACK_ERROR
         ACK_E2PROMR:	
         	BC      PORT6,SCL_E2PROM 
         	MOV     A,@1
        	CALL    DELAY_EEROM
         	IOR     PORT6         
         	AND     A,@EE2ROM_ND;		
         	IOW     PORT6
         	BS      PORT6,SDA_E2PROM
         	MOV     A,@1
        	CALL    DELAY_EEROM 
        EXIT_EROM:       
	       	RET     

;******************************************
DIVDIE_8:
                MOV     A,@0X8
		MOV     T_R16,A
		BC      STATUS,C  
		CLR     DREM8U	
	D8U_2:
		RLC	DD8U		
		RLC	DREM8U
		MOV     A,DV8U		
		SUB	DREM8U,A
		JBC     STATUS,C	
		JMP	D8U_1	
		MOV     A,DV8U		
		ADD	DREM8U,A
		BC      STATUS,C		
		JMP	D8U_20		
	D8U_1:		
		BS      STATUS,C			
	D8U_20:
		DJZ    T_R16
		JMP    D8U_2
		RLC	DD8U
		RET
DIVIDE_16:
   	MOV     A,@0X10
	MOV     T_20H,A
	CLR	DREM16UL	
	CLR	DREM16UH
	BC      STATUS,C
   D16U_0:
	RLC	DD16UL		
	RLC	DD16UH
	RLC	DREM16UL	
	RLC	DREM16UH
	MOV     A,DV16UL
	SUB	A,DREM16UL
	MOV     TEMP_DVL,A
	MOV     A,DV16UH
	JBS     STATUS,C
	JMP     SUBB34
	SUB	A,DREM16UH
	JBC     STATUS,C
	JMP     D16U_1
	JMP     D16U_X1
   SUBB34:
	SUB	A,DREM16UH
	JBS     STATUS,C
	JMP     D16U_X1
	SUB     A,@0X1
	JBS     STATUS,C
	JMP     D16U_1
    D16U_X1:
	BC      STATUS,C		
	JMP	D16U_2		
    D16U_1:
    	MOV    DREM16UH,A	
    	MOV    A,TEMP_DVL
    	MOV    DREM16UL,A
    	BS     STATUS,C	
    D16U_2:
	DJZ  T_20H
	JMP  D16U_0
	RLC	DD16UL
	RLC	DD16UH
	RET

;-----------------------------------------------------
TIMER0_A:
		BC  TIMERSIGER,0
		INC  DT_ACOUN
		JBS  STATUS,Z
		JMP  EXIT_0KP
		BC   IR_CTRF,NINE_MS
		BS   PORT5,DESL
	EXIT_0KP:
		RETI
TIMER0_INT:
		BC   RF,0
		INC  TIMERIRH
		RETI
TIMER0_B:
		BC   TIMERSIGER,1
		RETI			
;*******************************************************
;*******************************************************
  		ORG  0x0400
NOR_EVENTS:    
		DISI
		BC   R4,SAV_PAGE
		BS   STATUS,C      
		JBC  PORT6,DATA_IN
		JMP  XDTU_1
		BC   STATUS,C
	XDTU_1:
		RLC  RECI_IO
		MOV  A,RECI_IO
		AND  A,@3
		JBC  STATUS,Z
		JMP  EXIT_RECIE
		SUB  A,@3
		JBC  STATUS,Z
		JMP  EXIT_RECIE
		
		BS   STATUS,IOCS
		IOR  TCCBL_COUNT
		MOV  TEMPMPL,A
		IOR  TCCBH_COUNT
		MOV  TEMPMPH,A
		MOV  A,@00
		IOW     TCCBL_COUNT
		IOW     TCCBH_COUNT
		BC      STATUS,IOCS
		JBC     SIGNER_FLAG,FLAG_L60US;接到60US的低电平
		JMP     RECI_H60US
		JBC     SIGNER_FLAG,FLAG_80US;接到80US的高电平
		JMP     RECI_L60US
		JBC     SIGNER_FLAG,FIRST_LBIT;接到低电平到高电平的跳变
		JMP     RECI_80US
		JBS     RECI_IO,0;
		JMP     EXIT_RECYE
		BS      SIGNER_FLAG,FIRST_LBIT
		JMP     EXIT_RECYE
	RECI_80US:
		BC      SIGNER_FLAG,FIRST_LBIT
		JBC  RECI_IO,0
		JMP     EXIT_RECYE	
		CALL    COMP_80US
		SUB     A,@0XAA
		JBS     STATUS,Z
		JMP     EXIT_RECYE
		BS      SIGNER_FLAG,FLAG_80US
		BS      PORT5,D_LED
		JMP     EXIT_RECYE
	RECI_L60US:
		BC      SIGNER_FLAG,FLAG_80US
		JBS     RECI_IO,0
		JMP     EXIT_RECYE
		CALL    COMP_60US
		SUB     A,@0XAA
		JBS     STATUS,Z
		JMP     EXIT_RECYE
		BS      SIGNER_FLAG,FLAG_L60US;??????????????
		BC    PORT5,D_LED
		JMP     EXIT_RECYE
	RECI_H60US:
		BC      SIGNER_FLAG,FLAG_L60US
		JBC     RECI_IO,0
		JMP     EXIT_RECYE
		CALL    COMP_60US
		SUB     A,@0XAA
		JBS     STATUS,Z
		JMP     EXIT_RECYE
		BS      PORT5,D_LED
		CALL    DELAY_60US
		SUB     A,@0XAA
		JBS     STATUS,Z
		JMP     EXIT_RECYE
		BC      PORT5,D_LED
		MOV     A,@0X0E
		MOV     RS_SAVC,A
		MOV     A,@0X28
		MOV     R4,A
	LAY1_6:	
		JBS   PORT6,DATA_IN
		JMP   LAY1_6
		BS    PORT5,D_LED
	LAYX_6:	
		JBC   PORT6,DATA_IN
		JMP   LAYX_6
		BC      PORT5,D_LED	
		CALL    DEL_3US
		NOP
		NOP
		NOP
	LAYY_6:	
		CALL    RD_BYTE
		BC      PORT5,D_LED
		MOV     A,RECI_DBUF
		MOV     R0,A
		INC 	R4
		DJZ     RS_SAVC
		JMP     LAZY_6
		JMP     LAXY_6
	LAZY_6:
		NOP
		NOP
		NOP
		CALL    DEL_3USB
		JMP     LAYY_6
	LAXY_6:
		BC      PORT5,D_LED
		MOV     A,@0X0C
		MOV     ADDR_C,A
		MOV     A,@0X28
		MOV     R4,A
		CALL    SUM_CHECK
		MOV     A,R0
		SUB     A,ADDRESS
		JBS     STATUS,Z
		JMP     EXIT_RECYE1
		INC     R4
		MOV     A,R0
		COM     ADDRESS
		SUB     A,ADDRESS
		JBS     STATUS,Z
		JMP     EXIT_RECYE1
		BC      PORT5,D_LED
		MOV     A,QUHAO_DT
		SUB     A,DAT_ADRES+1
		JBS     STATUS,Z
		JMP     JUDG_DIS
		MOV     A,QUHAO_DT+1
		SUB     A,DAT_ADRES+2
		JBS     STATUS,Z
		JMP     JUDG_DIS
		MOV     A,QUHAO_DT+2
		NOP
		NOP
		SUB     A,DAT_ADRES+3
		JBS     STATUS,Z
		JMP     JUDG_DIS
		NOP
		NOP
		BC      R4,SAV_PAGE
		MOV     A,@DAT_ADRES+4
		ADD     A,QUHAO_DT+3
		MOV     R4,A
		MOV     A,0
		AND     A,QUHAO_DT+4
		JBC     STATUS,Z
		JMP     CLOSE_D
		BS      OPEN_STA,OPEN_S
		BC      PORT5,DESL   
		JMP     JUDG_DIS
	CLOSE_D:
		CLR     OPEN_STA
		BS      PORT5,DESL 
	JUDG_DIS:
		JBS     OPEN_STA,OPEN_S
		JMP     EXIT_RECIE

twd_loop:		
		
		JBS   PORT5,GY_IN
		CLR   GY_COUNTER
		
		JBS   PORT5,GY_IN
		JMP   EXIT_DO

GY_IS_HIGH:		
		inc GY_COUNTER  ;let GY_COUNTER=1
		MOV A,GY_COUNTER
		AND A,@0xE0
		JBC STATUS,Z 
		JMP EXIT_DO
		  
		  MOV A,@0x60
		  MOV GY_COUNTER,A 
		  jmp   twd_loop    		
		
		
	EXIT_DO:	;
		CLR     DT_ACOUN
		JBS     PORT6,DATA_IN;判断停止位上升沿
		JMP     EXIT_DO
	 LAY2_K:	
		JBC     PORT6,DATA_IN;判断停止位下降沿
		JMP     LAY2_K
		CALL    DEL_6US

        BC      IR_CTRF,NORMORL_MS;//add by twd
		JBC     IR_CTRF,NORMORL_MS;判断通道数
		JMP     SECOND_Y;第二通道
		
		NOP     
		BC      PORT6,CTL;打开第一通道
		
		MOV     A,@0X80
		SUB     A,0X28;第一通道
		JBC     STATUS,C
		JMP     SET_HI
		JMP     SET_LO
	SET_HI:
		NOP
		nop
		Bc    PORT5,IC_CARDS;第二通道保持状态
		Bc    	PORT6,OUT_CTR;第一通道保持状态
		JMP   	EXIT_RECIE
	SET_LO:	
		nop
		Bc    PORT5,IC_CARDS;第二通道保持状态
		Bs    	PORT6,OUT_CTR;第一通道保持状态
		JMP   	EXIT_RECIE
	EXIT_RECIE:
		CALL  	DEL_8US
	EXIT_RECYE:
		BS    	PORT6,CTL
		BC    	STATUS,PS0		
		JMP   	MAIN_NEXT2
	SECOND_Y:;第二通道	
		BC      PORT6,6
		MOV     A,@0X80
		SUB     A,0X28;第一通道
		JBC     STATUS,C
		JMP     SET2_HI
		JMP     SET2_LO
	SET2_HI:
		NOP
		nop
		Bc    	PORT6,OUT_CTR
		Bc    PORT5,IC_CARDS
		JMP   EXIT2_RECIE
	SET2_LO:	
		nop
		Bc    	PORT6,OUT_CTR
		Bs    PORT5,IC_CARDS
		JMP   EXIT2_RECIE
	EXIT_RECYE1:
		NOP
		NOP
		NOP
	EXIT2_RECIE:
		CALL   DEL_8US
	EXIT2_RECYE:
		BS    PORT6,6
		BC    STATUS,PS0
		JMP   MAIN_NEXT2
RD_BYTE:

		MOV   A,@0X8
		MOV   RECI_CNT,A
		CLR   RECI_DBUF
	DATA_D:
		BS    PORT5,D_LED
		JBS   PORT6,DATA_IN
		JMP   DATA_0
		JMP   DATA_1
	DATA_0:
		NOP
		BC  STATUS,C
		NOP
		NOP
		RLC  RECI_DBUF
		BC   PORT5,D_LED
		DJZ  RECI_CNT
		JMP  DATAB_D
		BS    PORT5,D_LED
		JMP  EXITY9A
	DATAB_D:
		CALL DELAY_4US
		JMP  DATA_D
	DATA_1:
		BS  STATUS,C
		NOP
		NOP
		RLC  RECI_DBUF
		BC   PORT5,D_LED
		DJZ  RECI_CNT
		JMP  DATAB_D
		BS    PORT5,D_LED
		JMP  EXITY9B
	EXITY9A:
		JBS   PORT6,DATA_IN
		JMP   EXITY9A
		JMP   EXITY9C
	EXITY9B:
		JBC   PORT6,DATA_IN
		JMP   EXITY9B
		JMP   EXITY9C	
	EXITY9C:
		RET
DEL_6US:
		MOV  A,@0XD
		mov  CTEMP_L,A
	AY_6US:
		DJZ  CTEMP_L
		JMP  AY_6US
		RET
DEL_8US:
		MOV  A,@0XB
		mov  CTEMP_L,A
	AY_8US:
		DJZ  CTEMP_L
		JMP  AY_8US
		RET
DEL_3US:
		MOV  A,@0XA
		mov  CTEMP_L,A
	AY_3US:
		DJZ  CTEMP_L
		JMP  AY_3US
		RET
DEL_3USB:
		MOV  A,@0X06
		mov  CTEMP_L,A
	AY_3USB:
		DJZ  CTEMP_L
		JMP  AY_3USB
		RET				
DELAY_4US:
		MOV  A,@0XB
		mov  CTEMP_L,A
		NOP
	AY_4US:
		DJZ  CTEMP_L
		JMP  AY_4US
		RET
		
		
DELAY_60US:
		;MOV   A,@0X18
		MOV   A,@0X10
		MOV   CTEMP_L,A
	LAY1_60US:
		JBC  PORT6,DATA_IN
		JMP  LAY4_6
		NOP
		NOP
		DJZ  CTEMP_L
		JMP  LAY1_60US
	LAY3_6:
		MOV A,@0XAA
		JMP  EXIT_Y6	
	LAY4_6:
		MOV A,@0XBB
	EXIT_Y6:	
		RET               
COMP_60US:
		MOV     A,TEMPMPH
		SUB     A,@DAT_H60SH
		JBC     STATUS,Z
		JMP     LARGE6X_TN
		JBS     STATUS,C
		JMP     LARGE6_TN
		JMP     LARGE6Z_TN
	LARGE6X_TN:
		MOV     A,TEMPMPL
		SUB     A,@DAT_H60SL
		JBS     STATUS,C
		JMP     LARGE6_TN
	LARGE6Z_TN:	
		MOV     A,TEMPMPH
		SUB     A,@DAT_L60SH
		JBC     STATUS,Z
		JMP     LARGE6Y_TN
		JBC     STATUS,C
		JMP     LARGE6_TN
		JMP     EQU6_TN
	LARGE6Y_TN:
		MOV     A,TEMPMPL
		SUB     A,@DAT_L60SL
		JBC     STATUS,C
		JMP     LARGE6_TN
	EQU6_TN:
		MOV 	A,@0XAA
		JMP  	EXIT6_ED	
	LARGE6_TN:	
		MOV 	A,@0XBB
	EXIT6_ED:	
		RET
COMP_80US:
		MOV     A,TEMPMPH
		SUB     A,@DAT_H80SH
		JBC     STATUS,Z
		JMP     LARGE8E
		JBC     STATUS,C
		JMP     LARGE8X_TN
		JMP     LARGE8_TN
	LARGE8E:
		MOV     A,TEMPMPL
		SUB     A,@DAT_H80SL
		JBS     STATUS,C
		JMP     LARGE8_TN
	LARGE8X_TN:
		MOV     A,TEMPMPH
		SUB     A,@DAT_L80SH
		JBC     STATUS,Z
		JMP     LARGE8Y_TN
		JBC     STATUS,C
		JMP     LARGE8_TN
	LARGE8Y_TN:
		MOV     A,TEMPMPL
		SUB     A,@DAT_L80SL
		JBC     STATUS,C
		JMP     LARGE8_TN
	EQU8_TN:
		MOV A,@0XAA
		JMP  EXIT8_ED	
	LARGE8_TN:	
		MOV A,@0XBB
	EXIT8_ED:	
		RET

SUM_CHECK:
		CLR  ADDRESS
	M_1CH:
		BC STATUS,C
		MOV  A,R0
		ADD  ADDRESS,A
		INC  R4
		DEC  ADDR_C
		JBS  STATUS,Z
		JMP  M_1CH
		RET
TEST_PORT6:
		COM  0X3F
		MOV  A,@0X01
		AND  0X3F,A
		JBC  0X3F,0
		JMP  T1_PORT6
		JMP  T2_PORT6
	T1_PORT6:
		NOP
		NOP
		NOP
		BS   PORT5,D_LED
		JMP  T3_PORT6
	T2_PORT6:
		NOP
		NOP
		NOP
		BC   PORT5,D_LED
		JMP  T3_PORT6
	T3_PORT6:
		RET
		
		
		
;********************************************
END       

⌨️ 快捷键说明

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