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

📄 tc9154.dt

📁 TC9153+HT6122+PT2258
💻 DT
字号:
;==========================================================				
;define				

;include	<Emc456.inc>	
;================================================
;************************************************						
		tcc   ==    0x01
;--------------------------------- --		
		pc    ==    0x02
;-------------status----------------			
		status==    0x03		
		c     ==    0x00
		dc    ==    0x01	
		z     ==    0x02
						
		intf  ==    0x0f	
						
		
		iocb  ==    0x0b	
	;	iocc  ==    0x0c	
	;	iocd  ==    0x0d
;-----------port5------------------					
		port5  ==   0x05
		
		led_roc==   0x00
		up_down==   0x01
		osc_m  ==   0x02
		osc_w  ==   0x03
;-----------port6-------------------					
		port6  ==   0x06
		
		stb_pin==   0x00
		mut_pin==   0x01
		POINT1 ==   0x02
		POINT2 ==   0x03
		led_m  ==   0x04
		led_w  ==   0x05
		ir	 ==   0x06
		led_pop==   0x07	
;---------define ------------------
;==================================			
		r0     ==   0x10
		r1     ==   0x11
		r2     ==   0x12
		r3     ==   0x13
		r4     ==   0x14
		r5     ==   0x15	
		r6     ==   0x16
		count1 ==   0x17
		keybyte==   0x18	
		buffer ==   0x19		
		a_buf  ==   0x1a	
		r3_buf ==   0x1b
			
		;	    0x1c
		;	    0x1d	
		mvolg  ==   0x1e
		mvolg1 ==   0x1f
		wvolg  ==   0x20
		wvolg1 ==   0x21
		DAT_REM==   0X23
	    REMBYTE==   0X24
        TIMES  ==   0X25	
;------------0x28------------------
        rembyte1==  0x2b
        count2  ==  0x2c
        
;=============================
        buf_led==    0x28
      
;;;;29 2a-------2f
;============================= 
        REMBUFF==   0X30
        ROTAL_Z==   0X31
        
			
	
					
;==========bit defind==========						
		flag	==	0x1c		
		keyed   ==	0x00			
		key_down==	0x01			
		power   ==	0x02
		mute	==	0x03
		r_over  ==	0x04
		ak47	==	0x05
		remed   ==	0x06
		addd	==	0x07
;==============================
		bit_flag==	0x32
		POINT11 ==    0x00
		POINT22 ==    0x01		
;=========================================================						
		org	0x00
		jmp	start			
;---------------------------------------------------------						
		org	0x08
		clr	0x0f
		mov	a_buf,a			
		swap   a_buf				
		swapa  status				
		mov	r3_buf,a
		mov	a,times
		xor	a,@0x010
		jbs	status,z
		jmp	down_next
		clr	times
down_next:
		inc	times		
		mov	a,@0x0	
		mov	tcc,a
		swapa  r3_buf	
		mov	status,a
		swapa  a_buf	
		reti
;;-------------init  back--------------------		
SW_TAB: ADD     PC,a
        RETL    @00H
        RETL    @02H
        RETL    @01H
        RETL    @00H

        RETL    @00H
        RETL    @00H
        RETL    @00H
        RETL    @00H

        RETL    @0H
        RETL    @0H
        RETL    @0H
        RETL    @00H

        RETL    @00H
        RETL    @00H
        RETL    @00H
        RETL    @00H				
;==========================================		
irkey:  
		clr	rembyte
	    add	pc,a
		retl   @0x00
		retl   @0x11
		retl   @0x01
		retl   @0x1f
		retl   @0x0f
		retl   @0x41
		retl   @0x45
		retl   @0x06
		retl   @0x5e
;===============================================				
tab_yaokon01:
		jbs	flag,power
		jmp	loop
		jmp	tab_yaokon02
table_yaokon:
		bs	 flag,ak47
		mov	a,rembyte
		xor	a,@0x02
		jbs	status,z
		jmp	tab_yaokon01
tab_yaokon02:		
		mov	a,rembyte
		clr	rembyte
		add	pc,a
		jmp	loop
		jmp	p_stby
		jmp	p_mute
		jmp	p_pop
		jmp	p_rock
		
		jmp	p_insw
		jmp	p_desw
		
		jmp	p_inmvol
		jmp	p_demvol
		
		
;--------------------------------		
table_01:	
		jbs	flag,power
		jmp	loop
		jmp	table_02						
table:	
		call   delay20ms
		call   delay20ms
		mov	a,keybyte
		xor	a,@0x04
		jbs	status,z
		jmp	table_01
table_02:		
		mov	a,keybyte
		clr	keybyte			
		bs	 flag,key_down
		add	pc,a
		jmp	loop
		jmp	p_inmvol
		jmp	p_demvol
		jmp	p_mute
		
;;-===========================================
;&&&&&&&&&&&&&&&& start  asm &&&&&&&&&&&&&&&&&&		
start:			
		mov	a,@10
		mov	0x04,a
		clr	r0
up_start:					;clear 10h---3ffh	
		clr	0			
		inc	0x04
		inc	r0
		mov	a,r0
		xor	a,@048
		jbs	status,z
		jmp	up_start
		
		
		mov	a,@0x0	
		iow	port5
		bs	 port5,up_down
		
		mov	a,@0x4c		
		iow	port6

		call   delay20ms
		call   delay20ms
		call   delay20ms
		
    	nop
		nop
		nop
		nop
		bc	 port6,stb_pin;==   0x00
		bc	 port6,mut_pin;==   0x01
		bc	 port6,led_m;  ==   0x04
		bc	 port6,led_w;  ==   0x05
		bc	 port6,led_pop;
	    bs	 port5,led_roc
;------------------------------------------		
		mov	a,@0x47		  ;设定分频器
		contw	
				
		mov	a,@0x0			
		iow	0x0e					;close wdt
		
		mov	a,@0x1			
		iow	0x0f
		eni					;开中断
;------------------------------------------		
		mov	a,@30
		mov	mvolg,a
		mov	wvolg1,a
		call   send_mvol
		
	/*	mov	a,@20
		mov	mvolg1,a
		mov	wvolg1,a
		clr	mvolg
		clr	wvolg
		
		call   send_mvol	*/
		
		mov	a,@0xf0
		mov	port6,a
		
		call   delay20ms
		call   delay20ms
		call   delay20ms
		call   delay20ms
		call   delay20ms
		call   delay20ms
		call   delay20ms
					
		bc     flag,mute		;;;;;;;;;;;
		bs     flag,power	   ;;;;;;;;;;			
			
		bc	 flag,remed
							
		
		jmp	loop
						
;************************************************
;************************************************							
loop_rem:
		
		call   remote
		mov	a,rembyte
		jbc    status,z
		jmp	loop1
		clr	count1
		mov	a,@250
		mov	count2,a
		jmp	table_yaokon	
loop:   
		jbs	port6,ir
		jmp	loop_rem	
loop1:
		eni
		call   chg_vol
		jbs	status,z
		jmp    SELECT_VOL
		jmp    loop					

SELECT_VOL:
		jbc	flag,addd
		jmp	p_inmvol
		jmp	p_demvol
		
;*************************************************				
;--------------key  scan--------------------------					
;****** ================ROTALLER START====================== ******
CHG_VOL:
                clr     rotal_z
                jbc     port5,point1
                BS      rotal_z,0
                jbc     port5,point2
                BS      rotal_z,1
                jbc     bit_flag,point11
                BS      rotal_z,2
                jbc     bit_flag,point22
                BS      rotal_z,3
                mov	 a,rotal_z
                CALL    SW_TAB
                MOV     R0,a
                BC      bit_flag,point11
                jbc     port5,point1
                BS      bit_flag,POINT11
                BC      bit_flag,point22
                jbc     port5,point2
                BS      bit_flag,POINt22
                mov	 a,r0
                jbs     STATUS,Z
                jmp     NEXT_NET
                RETL    @0
NEXT_NET:       jbs     R0,0
                jmp     UNWISE
WISE:           BS      flag,ADDD
                RETL    @1
UNWISE:         jbs     R0,1
			    retl    @0
			    BC      flag,ADDD
                RETL    @1

;==========================================================		 		 	  		
;****** ================ROTALLER START====================== ******
;==========================================================		 		 	  		
;---------------------------------
;=================================
;========bcd  to  10 digital=========================
convert:
		clr	r1
		clr	r2
con_01:
		mov	r2,a
		bc	 status,c
		mov	a,@10
		sub	a,r2
		jbs	status,c

		jmp	con_02
		inc	r1
		jmp	con_01
con_02:
		ret	
;================================================		

;;;;;;;;;;init  pt2258;;;;;;;;;;;;;;;;		

;=================================
send_mvol:
		mov	a,mvolg
		sub	a,mvolg1
		jbs	status,c
		jmp	pin_m
pde_m:		
		bc	 port5,up_down
	
	;	bc	 port5,osc_m
		call   key_delay		
		mov	a,mvolg
		sub	a,mvolg1
		mov	r3,a
		jmp	wby0
pin_m:  
		bs	 port5,up_down
		
	;	bc	 port5,osc_m
		call   key_delay		
		mov	a,mvolg1
		sub	a,mvolg
		mov	r3,a
		
wby0:   	
	
wby1:   
		NOP
		bs	 port5,osc_m
		call   delay20ms
		bc	 port5,osc_m	
		call   key_delay
		bS	 port5,osc_m
			
	;	call   delay20ms
		Bs	 PORT5,UP_DOWN
		nop
		ret	
;-----------------------------------------
send_wvol:
		mov	a,wvolg
		sub	a,wvolg1
		jbs	status,c
		jmp	pin_w
pde_w:		
		bc	 port5,up_down
		bc	 port5,osc_w		
		mov	a,wvolg
		sub	a,wvolg1
		mov	r3,a
		jmp	wby0
pin_w:  
		bs	 port5,up_down
		bc	 port5,osc_w		
		mov	a,wvolg1
		sub	a,wvolg
		mov	r3,a
		
wby0w:   	
	
wby1w:  bc	 port5,osc_w	
		bs	 port5,osc_w	
		call   key_delay
		bc	 port5,osc_w
		call   key_delay
		djz	r3
		jmp	wby0w		
		bs	 port5,up_down
		bs	 port5,osc_w	
		nop			
		ret			
;-----------------------------------------
key_delay:
		mov	a,@025
		mov	r0,a
up_key_delay:		
		djz	r0
		jmp	up_key_delay
		ret				
;===============long delay==============================
delay20ms:
		mov	a,@255
		mov	r2,a
delay_lp1:
		mov	a,@200
		mov	r1,a
delay_lp0:
		nop	
		nop
		nop
		djz	r1
		jmp	delay_lp0
		djz	r2
		jmp	delay_lp1
		ret
;===========================================
ak_47:
		call   delay20ms
		call   delay20ms
		call   delay20ms
		mov	a,rembyte1
		mov	rembyte,a
		ret
r_exit: 
		jbc	flag,ak47	
		jmp	ak_47	
		ret
r_exit1:nop
		nop
		ret				
r_exit2:nop
		nop
		ret
;----------------------------====================		
;===========remote control  software===================						    					
remote: 
		mov	a,@12
		mov	r2,a
r_loop1:   
		call   delay0
		jbs	port6,ir
		jmp	r_loop3
r_loop2:	
		jmp	r_exit2
r_loop3:	
		djz	r2				;9ms start code
		jmp	r_loop1
r_loop4:	
		jbs	port6,ir
		jmp	r_loop4   		;4.5ms code
			
		mov	a,@4
		mov	r2,a
		
		mov	a,@rembuff
		mov	4,a
r_loop5:						;start read code 	
		call   byte_in
		jbc	flag,r_over
		jmp	r_exit	
		mov	a,dat_rem
		mov	0,a
		inc	4
		djz	r2
		jmp	r_loop5
		mov	a,rembuff	
		xor	a,@0x02
		jbs	status,z
		jmp	r_exit2
		mov	a,rembuff+1
		xor	a,@0xfd
		jbs	status,z
		jmp	r_exit2
		mov	a,@8
		mov	r3,a
;==============????????====================		
rem_bak1:
		mov	a,r3
		call   irkey
		xor	a,rembuff+2	
		jbc	status,z
		jmp	rem_bak0
		djz	r3
		jmp	rem_bak1
		jmp	r_exit	
rem_bak0:
		nop		
		mov	a,r3
		mov	rembyte,a	
		mov	rembyte1,a
		nop
		ret 
;==============????????========================		    
byte_in:
		bc	 flag,r_over
		mov	a,@8
		mov	r1,a
		clr	dat_rem
byte1:  
		mov	a,@8
    	mov	r3,a
    
BYTE03:

        MOV	A,@4
    	MOV	R0,A   
     	
byte2:  
		mov	a,@218
    	mov	r5,a
byte3: 
		jbs	port6,ir
		jmp	byte4
	    djz	r5
    	jmp	byte3
    	nop
    	djz	r0
    	jmp	byte2
    	djz	r3
    	jmp	byte03
    	bs	 flag,r_over
    	ret		
byte4:
		jbs	port6,ir
		jmp	byte4
		call   delay0
		bs	 status,c
		jbc	port6,ir
		jmp	byte04
		bc	 status,c
byte04:
		rrc	dat_rem
		djz	r1
		jmp	byte1
		ret		
;######################################
delay1ms: 
		mov	a,@30
        mov	r5,a
delay10:				        ;2clock(32x4x2/3.58)x10=715us
		mov	a,@30	        ;4clock(32x4x4/3.58)x10=715usx2
		mov	r6,a
delay20: 
		nop
		djz	r6
		jmp	delay20
		djz	r5
		jmp	delay10
		nop
        ret					       
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
delay0: 
		mov	a,@225		  ;
		mov	tcc,a		   ;tcc 
    	mov	a,@36
        mov	r5,a
delay1:				        ;2clock(32x4x2/3.58)x10=715us
		mov	a,@30	       ;4clock(32x4x4/3.58)x10=715usx2
		mov	r6,a
delay2: 
		nop
		djz	r6
		jmp	delay2
		djz	r5
		jmp	delay1
		nop
        ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

;======================================
P_mute:
		bc	 flag,ak47
		jbc	flag,mute
		jmp	mute_off
		jmp	mute_on	
mute_on:
	;	bc	 port6,mup_led
		bs	 flag,mute
		jmp	P_mu01
mute_off:
	;	bs	 port6,mup_led
		bc	 flag,mute
p_mu01:				  
	;	call    play_mute
		jmp	loop    
			
		;
;===================================
loop99:
		
		jmp	 loop			
;++++++++++++++++++++++++++++++++++++
;++++++++++++++++++++++++++++++++++++

;===================================
p_stby:
	
p_pop:
p_rock:
		jmp	loop					
p_demvol:
		bc	 flag,key_down	
	/*	bc 	status,c
		mov	a,@064
		sub	a,mvolg
		jbc	status,c	
		jmp	LOOP
		inc	mvolg*/
		bc	 port5,up_down
		CALL   KEY_DELAY
		call   delay20ms
	;	call   delay20ms
	;	call   delay20ms
	;	bc	 port5,osc_m
		call	wby0
		jmp	LOOP
		
		jmp	p_inm_01
p_inmvol:
	/*	bc	 flag,key_down
		bc 	status,c
		mov	a,@1
		sub	a,mvolg
		jbs	status,c	
		jmp	LOOP
		dec	mvolg*/
p_inm_01:
		bs	 port5,up_down
	;	bc	 port5,osc_m
		CALL   KEY_DELAY
		call   delay20ms
;;		call   delay20ms
	;	call   delay20ms
		
		call	wby0
	;	call   send_mvol		
		jmp	loop
		

p_desw:	
		mov	a,wvolg
		jbc	status,z
		jmp	p_dew_01
		dec	wvolg
p_dew_01:
	
		mov	a,wvolg		
	    jmp	loop99
p_insw:	
		mov	a,@015
		bc	status,c
		sub	a,wvolg
		jbc	status,c
		jmp	p_dew_01
		inc	wvolg	
		jmp	p_dew_01
	
						
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$		
		end	

⌨️ 快捷键说明

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