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

📄 oki80second_1.dt.bak

📁 IPOD 射频 发射器 主要将 音乐信号通过BH1418 发射给 收音机
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	R0		==	0X00
	TCC		==	0X01
	PC		==	0X02
	STATUS		==	0X03
	 C          	== 0     ;   Carry flag                                       
  	DC         	== 1     ;   Auxiliary carry flag                             
  	Z          	== 2     ;   Zero flag                                        
  	P          	== 3     ;   Power down flag                                  
  	T          	== 4     ;   Timeout flag                                     
	RSR		==	0X04
	PORT5		==	0X05
	PORT6		==	0X06
	INTERRUPT	==	0X0F
	LED		==	4	;led display
	SDA		==	6	;i2c data
	SCL		==	7	;i2c clock
	UPkey		==	1	;up key
	DOWNkey		==	2	;down
	cs		==	0	;lcd en
	CK		==	2	;lcd clock\1415 clock
	DA		==	3	;lcd data\1415da
	ce		==	1	;1415 en		
;--------------------------------------------
	CONT		==	0X01
	IOC5		==	0X05
	IOC6		==	0X06
	IOCB		==	0X0B
	IOCC		==	0X0C
	IOCD		==	0X0D
	IOCE		==	0X0E
	IOCF		==	0X0F	
	PROT_I2C	==      0x06
;--------------------------------------------------------------------
;Control Registers Define

	MOVE_TIME	== 0X10	
	DATA1		== 0X11	
	KEYTIME		== 0X12
	FLAG		== 0x13
	havedata  	== 0		;	0  1 I2C have data 0 no have data 
	LOSEFLAG  	== 1		;	0  KEY NO LOSE	1 KEY LOSE
	ack		==  2		;
	outack		==  3
	updownflag	==  4
	ledflag		==  5
	i2cflag		==  6
	DATA		== 0X14	
	I2CDATA_HIGH	== 0X15
	I2CDATA_LOW	== 0X16	
	ADDRESS		== 0X17	
	BCDDATA		== 0X18
	BCDDATA1	== 0X19
	BCDDATA2	== 0X1a
	BCDDATA3	== 0X1b
	DATATEMP	== 0X1c
	BCDTEMP_HIGH	== 0X1d
	BCDTEMP_LOW	== 0X1e
	MOVE_TIMETEMP	== 0X1f

	COMMAND		== 0X20
	LCDRAM		== 0X21   
	LCD_MAP		== 0X22
	E_BUFFER	== 0x23
	SLAVE		== 0x24
	MOVETIME2	== 0X25
;--------------------------------------------------------------------
;--------------------------------
	ORG	0		;RESET VECTOR
	DISI			;disable interrupt
	jmp	stinit
	org	8
	jmp	INT_PRO
	org	0x15
stinit:	
	CALL	INIT
	bs	flag,ledflag
	CALL	lcdinit
	bc	port6,led
	call	read24c01
	nop
	mov	a,i2cdata_high
	sub	a,@0x04
	jbs	status,z
	jmp	banduani2chi
	mov	a,i2cdata_low	;  i2cdata_high==4
	sub	a,@0x38
	jbs	status,c
	jmp	INIDATA
	jmp	datato1415
banduani2chi:			; 
	mov	a,i2cdata_high
	sub	a,@0x03
	jbs	status,z
	jmp	INIDATA
	mov	a,i2cdata_low
	sub	a,@0x6b
	jbc	status,c
	jmp	INIDATA
	jmp	datato1415
;--------------------------------------  赋 原始数据给 I2C
INIDATA:
	MOV	A,@0X03
	mov	I2CDATA_HIGH,A		; 87.5 MHz 
	MOV	A,@0X6B
	mov	I2CDATA_LOW,A
	call	e_w
	call	writeto1415 		; to 1415
	call	HEX_TO_BCD
	CALL    LCDDISPLAY		; to display
	JMP	MAIN_START_1
;-------------------------------------------------------------- 
dispdatatab:                            
	ADD	PC,A                       
	RETL	@00001111B	; 0        
	RETL	@00000111B	; 1        
	RETL	@00001101B	; 2        
	RETL	@00001111B	; 3        
	RETL	@00000111B	; 4        
	RETL	@00001011b	; 5        
	RETL	@00001011B	; 6        
	RETL	@00001111B	; 7        
	RETL	@00001111B	; 8        
	RETL	@00001111B	; 9
dispdatatab_2:                              
	ADD	PC,A                       
	RETL	@00001011B	; 0        
	RETL	@00000000B	; 1        
	RETL	@00000111B	; 2        
	RETL	@00000101B	; 3        
	RETL	@00001100B	; 4        
	RETL	@00001101b	; 5        
	RETL	@00001111B	; 6        
	RETL	@00000000B	; 7        
	RETL	@00001111B	; 8        
	RETL	@00001101B	; 9     		
dispdatatab_1:                            
	ADD	PC,A                       
	RETL	@00001000b	; 0                
	RETL	@00001110b	; 1                          
;-------------------------------------          
datato1415:
	CALL 	writeto1415
	CALL    HEX_TO_BCD
	CALL	LCDDISPLAY
;--------------------------------------	main 入口
MAIN_START_1:
	call	delay1s
	bs	port6,led
MAIN_START:
	wdtc
;	mov	a,@0x02
;	iow	iocf
;	disi	
;	MOV	A,@0X0  
;	IOW	IOCE		;DISABLE WDT
;	nop	 
;	mov	pORT6,pORT6
;	NOP
;	SLEP	
;	nop
;	nop
;	nop           
;	MOV	A,@0X80
;	IOW	IOCE		;ENABLE WDT
;	WDTC			;CLEAR WDT

	jbc	port6,upkey
	jmp	mainstart_2
	jmp	upkeytab
mainstart_2:
	jbc	port6,downkey
	jmp	MAIN_START	
upkeytab:
	WDTC			;CLEAR WDT
	CALL	DELAY10MS
	JBC	PORT6,UPkey 
	JMP	DOWNKEYTAB
	JMP	UPKEYPROCE
DOWNKEYTAB:
	JBC	PORT6,DOWNkey
	JMP	MAIN_START
	JMP	DOWNKEYPROCE
;--------------------------------------------- UPKEY PROCE PROGRAM
UPKEYPROCE:
	bc	port6,led
	CLR	KEYTIME
UPKEYPROCELOOP:
	wdtc
	INC	KEYTIME
	MOV	A,I2CDATA_HIGH
	SUB	A,@4
	JBS	STATUS,Z
	JMP	UPI2C3
UPI2C4:
	INC	I2CDATA_LOW
	MOV	A,@0X39
	SUB	A,I2CDATA_LOW
	JBS	STATUS,C
	JMP	UPKEYPROCE_2
UPRESET:
	MOV	A,@3
	MOV	I2CDATA_HIGH,A
	MOV	A,@0X6B
	MOV	I2CDATA_LOW,A
	JMP	UPKEYPROCE_2
UPI2C3:
	MOV	A,I2CDATA_HIGH
	SUB	A,@3
	JBS	STATUS,Z
	JMP	UPRESET
UPI2C3_1:
	INC	I2CDATA_LOW
	MOV	A,I2CDATA_LOW
	SUB	A,@0X00
	JBS	STATUS,Z
	JMP	UPKEYPROCE_2
UPI2C3_:
	INC	I2CDATA_HIGH
	CLR	I2CDATA_LOW
UPKEYPROCE_2:
	CALL	writeto1415
	CALL	HEX_TO_BCD
	nop
	CALL	LCDDISPLAY
	MOV	A,@3
	SUB	A,KEYTIME
	JBS	STATUS,C	; 前三次一秒变一次
	JMP	UPKEYPROCE_3
	JMP	UPKEYPROCE_4 
UPKEYPROCE_3:
	CALL	KEYDELAY500MS
	JMP	UPKEYPROCE_5   
UPKEYPROCE_4:
	CALL	KEYDELAY100MS  
	MOV	A,@10
	MOV	KEYTIME,A
UPKEYPROCE_5:	
	JBS	port6,UPKEY 	
	JMP	UPKEYPROCELOOP 
	CALL	e_w 
	CALL	LEDDELAY          
	JBS	FLAG,LOSEFLAG     
	JMP	KEYDELAYUP  
	BS	port6,LED                         
    	jmp	main_start  
KEYDELAYUP:
	CALL	e_w 
	JBC	port6,UPKEY             
	JMP	DOWNKEYPROCE          
	JMP	UPKEYPROCe 
KEYDELAYUP_1:
	;JBC	port6,DOWNKEY             
	;JMP	main_start         
	;JMP	UPKEYPROCELOOP                    
;---------------------------------------------	DOWNKEY PROCE PROGRAM
DOWNKEYPROCE: 
	bC	port6,led
	CLR	KEYTIME   
DOWNKEYPROCELOP:
	wdtc
	INC	KEYTIME	             
	MOV	A,I2CDATA_HIGH
	SUB	A,@4
	JBS	STATUS,Z
	JMP	DOWNI2C3
DOWNI2C4:
	DEC	I2CDATA_LOW
	MOV	A,@0Xff
	SUB	A,I2CDATA_LOW
	JBS	STATUS,Z
	JMP	DOWNKEYPROCE_2
	DEC	I2CDATA_HIGH
	MOV	A,@0XFF
	MOV	I2CDATA_LOW,A
	JMP	DOWNKEYPROCE_2
DOWNRESET:
	MOV	A,@3
	MOV	I2CDATA_HIGH,A
	MOV	A,@0X6C
	MOV	I2CDATA_LOW,A
	JMP	DOWNKEYPROCE_2
DOWNI2C3:
	MOV	A,I2CDATA_HIGH
	SUB	A,@3
	JBS	STATUS,Z
	JMP	DOWNRESET
DOWNI2C3_1:
	DEC	I2CDATA_LOW
	MOV	A,I2CDATA_LOW
	SUB	A,@0X6A
	JBS	STATUS,C
	JMP	DOWNKEYPROCE_2
DOWNI2C3_:
	MOV	A,@0X04
	MOV	I2CDATA_HIGH,A
	MOV	A,@0X38
	MOV	I2CDATA_LOW,A
DOWNKEYPROCE_2:
	CALL	writeto1415
	CALL	HEX_TO_BCD
	CALL	LCDDISPLAY
	MOV	A,@3                                  
	SUB	A,KEYTIME                                
	JBS	STATUS,C	; 前三次一秒变一次       
	JMP	DOWNKEYPROCE_3                             
	JMP	DOWNKEYPROCE_4                             
DOWNKEYPROCE_3:                                            
	CALL	KEYDELAY500MS                               
	JMP	DOWNKEYPROCE_5                             
DOWNKEYPROCE_4:                                            
	CALL	KEYDELAY100MS                               
	MOV	A,@10                                    
	MOV	KEYTIME,A                                
DOWNKEYPROCE_5:	   
	JBS	port6,DOWNKEY 	                                                                  
	JMP	DOWNKEYPROCELOP
		CALL	e_w  
	CALL	LEDDELAY
	JBS	FLAG,LOSEFLAG
	JMP	KEYDELAYDOWN
	BS	port6,LED                   
    	jmp	main_start   
KEYDELAYDOWN:
		CALL	e_w 
	JBC	port6,UPKEY             
	JMP	DOWNKEYPROCE           
	JMP	UPKEYPROCE       
;-----------------------------------------  backlight  延时程序	
LEDDELAY:
	BC	FLAG,LOSEFLAG
	MOV	A,@250
	MOV	MOVE_TIMETEMP,A
LEDROULOP:	
	MOV	A,@250
	WDTC			;CLEAR WDT
	MOV	move_time,A 
	jbc	port6,upkey
	jmp	cyROULOP
	jmp	LEDROULOP_5
cyROULOP:
	jbs	port6,downkey
	jmp	LEDROULOP_5
LEDROULOP_4:
	wdtc
	DJZ	move_time
	jmp	LEDROULOP_3
	JMP	LEDROULOP_2
LEDROULOP_3:
		CALL	DLY
		CALL	DLY
		CALL	DLY
		CALL	DLY
		CALL	DLY
		CALL	DLY
    	JMP	LEDROULOP_4
LEDROULOP_2:    	
	DJZ	MOVE_TIMETEMP
	JMP	LEDROULOP
LEDROULOP_1:
	BS	FLAG,LOSEFLAG
	nop
LEDROULOP_5:
	RET
;-------------------------------------------	
KEYDELAY500MS:
	MOV	A,@250
	MOV	MOVE_TIMETEMP,A
	JMP	ROULOP		
KEYDELAY100MS:
	MOV	A,@20
	MOV	MOVE_TIMETEMP,A
	JMP	ROULOP
KEYDELAY10MS:				
	MOV	A,@1
	MOV	MOVE_TIMETEMP,A
ROULOP:	
	MOV	A,@250
	WDTC			;CLEAR WDT
	MOV	move_time,A 
	jbC	port6,upkey
	jmp	cROULOP
	jmp	ROULOP_4
cROULOP:
	jbC	port6,downkey
	jmp	ROULOP_1
ROULOP_4:
	wdtc
	DJZ	move_time
	jmp	ROULOP_3
	JMP	ROULOP_2
ROULOP_3:
		NOP
		NOp
	call	dly
	CALL	DLY
    	JMP	ROULOP_4
ROULOP_2:    	
	DJZ	MOVE_TIMETEMP
	JMP	ROULOP
ROULOP_1:
	RET
;-----------------------------------------------
delay1s:
	mov	a,@100
	mov	MOVETIME2,a
delay1s_3:
	djz	MOVETIME2
	jmp	delay1s_1
	jmp	delay1s_2
delay1s_1:
	call	delay10ms
	jmp	delay1s_3
delay1s_2:	
	ret
;------------------------------------------
delay10ms:
	MOV	A,@20
	MOV	MOVE_TIMETEMP,A	
delay10ms_2:
	MOV	A,@100
	MOV	MOVE_TIME,A
delay10ms_1:
	wdtc
	djz	MOVE_TIME
	jmp	delay10ms_1
	djz	MOVE_TIMETEMP
	jmp	delay10ms_2:
	ret  
;----------------------------------
writeto1415:
	MOV	A,@0X02
	MOV	MOVE_TIMETEMP,A
	MOV	A,@0X08
	MOV	MOVE_TIME,A
	MOV	A,i2cdata_low
	MOV	DATATEMP,A
W1415: 
	Bs	Port5,CE
;	call	dly
;	bc	port5,ce
;	call	dly
;	bs	port5,ce
W1415_1:
	wdtc
        RRC	DATATEMP
        JBC	STATUS,C
        JMP	W1415_2         
        BC	Port5,DA	;0
        JMP	WR11415
W1415_2:
	BS	Port5,DA	;1
WR11415: 
	call	dly
	Bc	Port5,CK
	call	dly
	Bs	Port5,CK
	call	dly
	DJZ	MOVE_TIME
	JMP	W1415_1
	DJZ	MOVE_TIMETEMP
	JMP	WR11415_1
	JMP	writeto1415END
WR11415_1:
	MOV	A,@0X08
	MOV	MOVE_TIME,A
	MOV	A,i2cdata_high
	MOV	DATATEMP,A
	bs	datatemp,3
	bs	datatemp,6
	JMP	W1415_1
writeto1415END:
	bc	port5,ce
	call	dly
	bc	port5,da
	call	dly
	bc	port5,ck
	RET	
;------------------
HEX_TO_BCD:                                              
	CLR	BCDTEMP_HIGH
	CLR	BCDTEMP_LOW  
	mov	a,I2CDATA_LOW
	mov	data,a
	mov	a,I2CDATA_HIGH  
	mov	data1, a
	mov	a, @16    
	MOV	MOVE_TIME, a          
LOOP:   
	wdtc                     
	BC	STATUS,C    

⌨️ 快捷键说明

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