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

📄 b8_tb4.asm

📁 视频加扰器源代码,用于电视信号收费系统加扰
💻 ASM
📖 第 1 页 / 共 3 页
字号:
			
			pop	r16
			ret	

delay_2us:
			push	r16
			ldi     r16,$20
			cbi     portb,$1
		exit_sop:
			clc 
			subi   r16,01
			brne   exit_sop
			sbi     portb,$1
			pop	r16
			ret		
			
DELAY_COMMAND:
			PUSH	R16
			CLC
			LDI		R16,$E
		REPATE_COMMAND:
			DEC		R16
			BRNE	REPATE_COMMAND
			POP		R16
		RET

			
delay_1h:
			push	r16
		rerr:
			clc 
			dec    r16
			brne   rerr
			pop	r16
			ret			
			
delay_25us:
			push	r16
			ldi     r16,80
		fg_delkau:	
			clc 
			subi   r16,$1
			brne   fg_delkau
			pop	r16
			ret


COMPARE_40L:	
		PUSH	R16
		PUSH	R17
	        ;IN     TIMER0_CL,TCNT0
	    	;LDI    TIMER0_CH,$45
	    	;LDI    TIMER0_CH,$23
		CLC
		CPI    RLC_TEMP,H_40_H
		BRNE   G4ON_HCOMP 
		CLC
		CPI      TIMER0_CL,H_40_L
		BRCS    G4_OKH
		LDI     R18,$BB
		RJMP    EX4_COMP
	G4ON_HCOMP:
		BRCS    G4_OKH 
		LDI     R18,$BB
		RJMP    EX4_COMP
	G4_OKH:
		CLC
		CPI    RLC_TEMP,L_40_H
		BRNE   G4ON_LCOMP 
		CLC
		CPI      TIMER0_CL,L_40_L
		BRCC    G4_OKL
		LDI     R18,$BB
		RJMP    EX4_COMP
	G4ON_LCOMP:
		BRCC    G4_OKL 
		LDI     R18,$BB
		RJMP    EX4_COMP
	G4_OKL:
		LDI     R18,$AA
		RJMP    EX4_COMP
	
		
	EX4_COMP:
		
		POP	R17
		POP	R16
		RET

COMPARE_120L:	
		PUSH	R16
		PUSH	R17
		IN      TIMER0_CL,TCNT0
	    	CLC
		CPI     RLC_TEMP,H_120_H
		BRNE    GOON_HCOMP 
		CLC
		CPI     TIMER0_CL,H_120_L
		BRCS    GO_OKH
		LDI     R18,$BB
		RJMP    EXIT_COMP
	GOON_HCOMP:
		BRCS    GO_OKH 
		LDI     R18,$BB
		RJMP    EXIT_COMP
	GO_OKH:
		CLC
		CPI    RLC_TEMP,L_120_H
		BRNE   GOON_LCOMP 
		CLC
		CPI      TIMER0_CL,L_120_L
		BRCC    GO_OKL
		LDI     R18,$BB
		RJMP    EXIT_COMP
	GOON_LCOMP:
		BRCC    GO_OKL 
		LDI     R18,$BB
		RJMP    EXIT_COMP
	GO_OKL:
		LDI     R18,$AA
		RJMP    EXIT_COMP
	
		
	EXIT_COMP:
		POP	R17
		POP	R16
		RET






TIMER2:			PUSH	R16
			IN     R16,SREG
			PUSH	R16
			LDI    R16,$3D
       		        STS   TCNT2,R16
       		        INC   R14   
       		        MOV   R16,R14
       		        CPI    R16,100
       		        BRNE   EXIT_SDMS
       		        LDI    R16,$0
       		        MOV    R14,R16
       		        RCALL  SET_MSECOND
       	      EXIT_SDMS:
	      		RCALL   SET_IICT
			POP     R16
			OUT     SREG,R16
			POP	R16
			RETI

TDIMER1:		
			PUSH   R16
			IN     R16,SREG
			PUSH	R16
			;-------------ZHANGWEI--------------
			PUSH	R17
			;-------------END-------------------
			LDS    R16,PWM_START
			SBRC   R16,$0
			RJMP   EXIT_RY
			RCALL  TIMER_PSW
			RJMP   EXIT_1RY
		EXIT_RY:
;----由16M晶振改为20M晶振后,可加入的时钟周期为至少25个。---ZHANGWEI--------------------
			CPI		COUNTP_H,$1F
			BRNE	PWM_OTHERCASE
			CPI		COUNTP_L,$7
			BRNE	PWM_ADDCOUNTL
			;数到最后一个时	
			LDI     R16,$00
			STS     TCCR1B,R16
			LDS     R16,PWM_SIGNER
			SBRS    R16,$1
			RJMP    D_SIGHPWM1
			LDI     R16,$0
			STS     PWM_SIGNER,R16
			LDI     COUNTP_L,$0
			LDI     COUNTP_H,$0
			RCALL   CLOSE_TIMER1
			RJMP    CDFF
		D_SIGHPWM1:
			RCALL   OPEN_NETTIMER
			LDI     COUNTP_L,$1
			LDI     COUNTP_H,$0
			LDI     R16,$FF
			STS     PWM_SIGNER,R16
			RJMP    CDFF
		PWM_OTHERCASE:
			CPI		COUNTP_L,$09
			BRNE	PWM_ADDCOUNTL
			LDI		COUNTP_L,$0
			INC		COUNTP_H
;			RCALL	DELAY_COMMAND
			;在此处加入处理延时的问题,对TCNT1L的计数重新赋值。
		PWM_ADDCOUNTL:
			INC		COUNTP_L
		CDFF:
			;RCALL  TEST_LED1;FIELD SYNC
;-------------------------------------END--------------------------------------------------

;			LDI     R16,$1
;			ADD     COUNTP_L,R16
;			LDI     R16,$0
;			ADC     COUNTP_H,R16
;			CLC 
 ;			CPI     COUNTP_H,$1
;			BRNE    CDFF
;			CPI     COUNTP_L,$1F  ;1D
;			BRNE    CDFF
;			LDI     R16,$00
;			STS     TCCR1B,R16
;			LDS     R16,PWM_SIGNER
;			SBRS    R16,$1
;			RJMP    D_SIGHPWM1
;			LDI     R16,$0
;			STS     PWM_SIGNER,R16
;			LDI     COUNTP_L,$0
;			LDI     COUNTP_H,$0
;			RCALL   CLOSE_TIMER1
;			RJMP    CDFF
;		D_SIGHPWM1:
;			RCALL   OPEN_NETTIMER
;			LDI     COUNTP_L,$1
;			LDI     COUNTP_H,$0
;			LDI     R16,$FF
;			STS     PWM_SIGNER,R16
;			RJMP    CDFF
;		CDFF:
;			;RCALL  TEST_LED1;FIELD SYNC
		
		EXIT_1RY:	
;------------------ZHANGWEI---------------
			POP  	R17
;------------------END--------------------
			POP     R16
			OUT     SREG,R16
			POP	R16
			RETI
			
			
OPEN_TIMER1:
		PUSH   R16 
		CLI  
		LDI    R16,$8F    ;a5   2005-7-11 14:15修改计数方式后将第一延时减小.5us从8F94改为8F8A
		STS    TCNT1H,R16
		LDI    R16,$6C    ;94    ;60
		STS    TCNT1L,R16
		LDI    R16,$00
		STS    TCCR1A,R16
		LDI    R16,$01
		STS    TCCR1B,R16
		LDI    R16,$01
		STS    TIMSK1,R16
		LDI    R16,$7
		OUT    TIFR1,R16
		LDI    R16,$0
		STS    PWM_START,R16
		SEI
		POP	R16
		RET                
CLOSE_TIMER1:
		PUSH   R16 
		CLI  
		LDI    R16,$A5
		STS    TCNT1H,R16
		LDI    R16,$60
		STS    TCNT1L,R16
		LDI    R16,$00
		STS    TCCR1A,R16
		LDI    R16,$01
		STS    TCCR1B,R16
		LDI    R16,$00
		OUT    EIMSK,R16
		LDI    R16,$3
		OUT    EIFR,R16
		LDI    R16,$00
		STS    PWM_START,R16
		SEI
		POP	R16
		RET 
OPEN_NETTIMER:
		PUSH	R16
		CLI  
		LDI    R16,$81    ;9A     2005-7-11 14:15修改计数方式后将第二延时从814B
		STS    TCNT1H,R16
		LDI    R16,$4B    ;C0
		STS    TCNT1L,R16
		LDI    R16,$00
		STS    TCCR1A,R16
		LDI    R16,$01
		STS    TCCR1B,R16
		LDI    R16,$01
		STS    TIMSK1,R16
		LDI    R16,$7
		OUT    TIFR1,R16
		LDI    R16,$00
		OUT    EIMSK,R16
		LDI    R16,$3
		OUT    EIFR,R16
		LDI    R16,$00
		STS    PWM_START,R16
		SEI
		POP	R16
		RET		
		               
TIMER_PSW:;
		CLI
		LDI COUNTP_H,0
		LDI COUNTP_L,0
		LDI   R16,$01
		OUT   EIMSK,R16
		LDI   R16,$3
		OUT   EIFR,R16
		LDI    R16,$00
		STS    TCCR1B,R16
		
		LDI    R16,$2	  ;1
		STS    TCNT1H,R16
		LDI    R16,$10    ;A4
		STS    TCNT1L,R16		
		
			
		LDI   R16,$C0
		STS   TCCR1A,R16
		LDI   R16,$11
		STS   TCCR1B,R16
;16M		
;		LDI   R16,$02
;		STS   ICR1H,R16		
;		LDI   R16,$00
;		STS   ICR1L,R16
;20M
		LDI   R16,$02
		STS   ICR1H,R16		
		LDI   R16,$80
		STS   ICR1L,R16
		
		
		LDI   R16,$2   ;01
		STS   OCR1AH,R16		
		LDI   R16,$10   ;A4
		STS   OCR1AL,R16
		
		LDI    R16,$FF
		STS    PWM_START,R16
		
		LDI    R16,$01
		STS    TIMSK1,R16

		;------ZHANGWEI MODIFY------------
		;------END------------------------
		SEI
		RET
TIMER0:
			PUSH	R16
			IN 	R16,SREG
			PUSH	R16 
			LDI     R16,15
       			OUT     TCNT0,R16
			INC     TIMER0_CH
			POP     R16
			OUT     SREG,R16
			POP	R16
       			RETI
TEST_LED3:
			SBIS  PORTD,$7
			RJMP  TEST_3D
			CBI   PORTD,$7
			RJMP  TEST_3D1
		TEST_3D:
			SBI   PORTD,$7
		TEST_3D1:
			RET
TEST_LED1:
			SBIS  PORTb,$2
			RJMP  TEST_1D
			CBI   PORTb,$2
			RJMP  TEST_1D1
		TEST_1D:
			SBI   PORTb,$2
		TEST_1D1:
			RET
INI_CPU:
                 PUSH    R16
                 ldi     r16,$0
                 sts     wdtcsr,r16
                ;端口D的方向设置
                LDI  	R16,$9a
                OUT  	DDRD,R16;RXD输入,其余输出
                LDI 	R16, $0FF
				OUT     PORTD,R16
                ;端口B的方向设置,PB6为输入,其余输出
                LDI  	R16,$FF
                OUT  	DDRB,R16;输出
                LDI 	R16, $0FF
		OUT     PORTB,R16
                ;端口C的方向设置
                LDI  	R16,$3f
                OUT  	DDRC,R16;输出
         	LDI 	R16, $0FF
			OUT     PORTC,R16
                ;定时器1设置
       		LDI     R16,$0
       		OUT     TCCR0A,R16
       		LDI     R16,$1
       		OUT     TCCR0B,R16
       		LDI     R16,15
       		OUT     TCNT0,R16
		LDI     R16,$1
       		STS     TIMSK0,R16;TIMER0 OPEN
       		
       		LDI     R16,$02
       		STS     EICRA,R16      
       		   
       		;串口设置,botelv;9600
       		ldi  r16,$d8
       		sts  ucsr0b,r16
       		ldi  r16,$06
       		sts  ucsr0c,r16
       		ldi  r16,$03
       		sts  ubrr0l,r16
       		ldi  r16,$01
       		sts  ubrr0h,r16
       		
       		ldi  r16,$0
       		sts  udr0,r16  
       		ldi  r16,$ce
       		sts  ucsr0a,r16  
       		 
       		LDI  R16,$0
       		STS  TCCR2A,R16
       		LDI  R16,$07
       		STS  TCCR2B,R16
       		LDI  R16,$01
       		STS  TIMSK2,R16
       		LDI  R16,$3D
       		STS  TCNT2,R16   
       		
            	POP     R16   
            	RET
flash_fees:
	sbis portb ,$0
	rjmp  cli_ledfees
	cbi  portb,$0
	rjmp  cli_lede
cli_ledfees:
	sbi  portb,$0
    cli_lede:
	ret



JUDG_ORIG:;加扰机初始化处理
                PUSH    XH
                PUSH    XL
                PUSH    ZH
                PUSH	ZL
                PUSH    R16
                PUSH    R17
                PUSH    R24
                PUSH    R25
                LDI  XL,LOW(RD_MAP)
                LDI  XH,HIGH(RD_MAP)
                LDI  ADR_L,$0
                LDI  R16,$4
        G_ORIG1:
                RCALL EEROM_R
                ST    X+,EE_DAT
                INC   ADR_L
                SUBI  R16,$1
                BRNE  G_ORIG1
                LDI   R16,$4
        G_ORIG2:;判断初始化标记
                LD    EE_DAT,-X
                CPI   EE_DAT,$AA
                BRNE  ERROR_J1;没初始化
                SUBI  R16,$1
                BRNE  G_ORIG2
                RCALL READ_MAP;读出映射表
                RJMP  G_ORIG3
        ERROR_J1:;默认设置
   
                RCALL ERAST_MEM
                RCALL READ_MAP
        G_ORIG3:
                POP     R25
                POP     R24
                POP     R17
                POP     R16
                POP	ZL
                POP	ZH
                POP     XL
                POP     XH      
                RET 

READ_MAP:;读取参数映射表
                LDI   XL,LOW(RD_MAP)
                LDI   XH,HIGH(RD_MAP)
                LDI   ADR_L,$0
               
                LDI   R16,$20
        READ_1M:
                RCALL EEROM_R
                ST    X+,EE_DAT
                INC    ADR_L
                SUBI   R16,$1
                BRNE  READ_1M
                RET                     
ERAST_MEM:;擦锄E2ROM,设置默认值
                LDI   ADR_L,$0
                LDI   EE_DAT,$AA;初始化标记
                LDI   R16,$4
        G_ORIG2A:
                RCALL EEROM_W
                INC  ADR_L
                SUBI  R16,$1
                BRNE  G_ORIG2A
                LDI   EE_DAT,$aa;主机
                RCALL EEROM_W
                INC  ADR_L
                LDI   EE_DAT,$01;区号
                RCALL EEROM_W
                INC  ADR_L
                LDI   EE_DAT,$00;USER TERMS LOWER;组号低
                RCALL EEROM_W
                INC  ADR_L
                LDI   EE_DAT,$00;USER TERMS HIGHER;组号高
                RCALL EEROM_W
                INC   ADR_L
                LDI   EE_DAT,$00;USER NO.用户偏移
                RCALL EEROM_W
                INC   ADR_L
                LDI   EE_DAT,$08;USER NO.子机号
                RCALL EEROM_W
                INC   ADR_L
                LDI   EE_DAT,$3;USER SIGENER CAN WATCH;用户信息
                RCALL EEROM_W
                INC  ADR_L
	    
        G_ORIG2B:;其余擦除
                LDI   EE_DAT,$00
                RCALL EEROM_W
                INC   ADR_L
                CPI   ADR_L,$80
                BRNE  G_ORIG2B
                RET     

       

CLR_RAMJ:
 		LDI  XL,$00
                LDI  XH,$20
                LDI  R16,$ff
        GONE1_ON:
                ST    -X, R16
                CPI   XL,$60
                BRNE  GONE1_ON
                CPI   XH,$02
                BRNE  GONE1_ON          
                RET  
WRITE:
	MOV     R17,R16    ;DATA
	MOV     R18,R17

	RCALL   WRITE_24C02
	INC     R16
	CPI     R16,$FF
	BRNE    WRITE

	LDI     R17,$00
	LDI     R18,$01

	RCALL   READ_24C02
	CPI     R17,$01
	BRNE    ZERO
	SBI     PORTB,1
	RJMP    LOOP
ZERO:
	CBI     PORTB,1
LOOP:
	RJMP    LOOP

deal_i2cdata:
		LDS     R16,S_DIGN
		SBRS    R16,$2
		RJMP    exiyyuX_iic
		RCALL   CLR_IICT
		sec
		sbis   pind,5
		CLC
  		lds    r16,iic_js
		rol    r16
		sts    iic_js,r16
		cpi    r16,$0
		brne   next1j
		STS    iic_jd,R16
		RJMP   exiyyuX_iic
	next1j:
		cpi      r16,$ff
		brne     exiyyuX_iic
		lds      r17,iic_jd
		cpi      r17,$0
		brne     exiyyuX_iic
		cli
		LDI      R16,$FF
		sts      iic_jd,r16
		ldi      r16,$0
       		sts      ucsr0b,r16
       		ldi      XL,LOW(RD_MAP+4);主从处理
		ldi      XH,HIGH(RD_MAP+4)
		ld       r17,x+
		SBRS     R17,$7
		RJMP     SLARY_UINT
		RCALL    MASTER_DONE
		sei
		rjmp     exiyyuX_iic
	SLARY_UINT:;
		RCALL   SLAY_DONE
		sei
	exiyyuX_iic:	
		
		ret

MASTER_DONE:
		PUSH	R19
		PUSH	R18
		rcall    clr_eerom;
		ldi      r18,$0

⌨️ 快捷键说明

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