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

📄 oki80second_1.dt.bak

📁 IPOD 射频 发射器 主要将 音乐信号通过BH1418 发射给 收音机
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	mov	a,data       
	MOV	DATATEMP, a    
	RLC	DATATEMP   
	mov	a, DATATEMP       
	MOV	data,a
	mov	a, data1  
	MOV	DATATEMP, a      
	RLC	DATATEMP  
	mov	a, DATATEMP      
	MOV	data1, a
	mov	a,BCDTEMP_LOW      
	MOV	DATATEMP, a      
	JBC	STATUS,C       
	INCA	DATATEMP            
LOOP_1:                       
	ADD	A,BCDTEMP_LOW	      
	DAA                    
	MOV      BCDTEMP_LOW,A 
;---------------------------------------- 
	mov	a, BCDTEMP_HIGH       
	MOV	DATATEMP,a          
	JBC	STATUS,C        
	INCA	DATATEMP             
LOOP_2:                       
	ADD    A,BCDTEMP_HIGH            
	DAA            
	MOV      BCDTEMP_HIGH ,A          
	DJZ     MOVE_TIME
	JMP	LOOP 
	mov	a,BCDTEMP_HIGH
	mov	datatemp,a
	swapa	datatemp
	and	a,@0x0f
	mov	bcddata,a
	mov	a,BCDTEMP_HIGH
	and	a,@0x0f
	mov	bcddata1,a
	mov	a,BCDTEMP_low
	mov	datatemp,a
	swapa	datatemp
	and	a,@0x0f
	mov	bcddata2,a
	mov	a,BCDTEMP_low
	and	a,@0x0f
	mov	bcddata3,a		
	RET                
;==================================================	I2C PROGRAM 
Read24c01:		; BACK I2CDATA_HIGH; I2CDATA_LO
	call	E_START
	MOV	A,@0XA0
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,@0x8
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	dly
	call	E_START
	MOV	A,@0XA1
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	BYTE_READ
	MOV	A,E_BUFFER
	MOV	i2cdata_high,A
	BS	port6,SDA
	BS	port6,SCL
	SDA_IN
 ;----------------------------------------
 	;nop
 	nop
	call	E_START
	MOV	A,@0XA0
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,@0x09
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	dly
	call	E_START
	MOV	A,@0XA1
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	BYTE_READ
	MOV	A,E_BUFFER
	MOV	i2cdata_low,A
	BS	port6,SDA
	NOP
	NOP
	BS	port6,SCL
	SDA_IN	
	;call	dly
	RET    
;-----------------------------write       
E_W:      
	call	E_START
	MOV	A,@0XA0
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,@0x08
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,i2cdata_high
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	E_STOP 
	BS	port6,SDA
	BS	port6,SCL
	SDA_IN
	call	DELAY10MS
;----------------------------------------
	call	E_START
	MOV	A,@0XA0
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,@0x09
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	MOV	A,i2cdata_low
	MOV	E_BUFFER,A
	call	BYTE_WRITE
	call	E_STOP 
	BS	port6,SDA
	BS	port6,SCL
	SDA_in
	nop
	RET       
;****************************
;I2C操作子程序(时序)集合
;****************************
BYTE_WRITE:
		SDA_OUT
	call	dly
	MOV	A,@0X08
	MOV	SLAVE,A           
WRITE_LOOP:
	BC	port6,SCL
	NOP	
	RLC	E_BUFFER
	JBC	status,C
	JMP	$+3
	BC	port6,sda
	JMP	$+2
	BS	port6,sda
	JMP	$+1
	BS	port6,scl
	call	dly
	;BC	port6,SCL
	DJZ	SLAVE
	JMP	WRITE_LOOP
WAIT_EP_ACK:
	BC	port6,SCL
	SDA_IN
	CALL	dly
	BS	port6,SCL
	CALL	dly
	JBC	port6,SDA
	JMP	WAIT_EP_ACK2
	BC	port6,SCL
	RET  
WAIT_EP_ACK2:
	BC	port6,SCL
	 SDA_IN
	 CALL	 dly
	 BS	port6,SDA
	 CALL	dly
	 JBC	port6,SDA
	 JMP	EER
	 BC	port6,SCL
	 RET
EER:
	RET                    
;-----------------------------------------------
BYTE_READ:
	SDA_IN
	BC	port6,SCL
	MOV	A,@0X08
	MOV	SLAVE,A
READ_LOOP:
	BS	port6,scl
	call	dly
	BC	E_BUFFER,0
	JBC	port6,sda
	BS	E_BUFFER,0
	MOV	A,SLAVE
	SUB	A,@0X01
	JBS	status,Z           
	RLC	E_BUFFER
READ_FINAL:     
	BC	port6,SCL 
	CALL	dly    
	DJZ	SLAVE
	JMP	READ_LOOP
	RET            
;-------------------------------------------
E_START:
	BS	port6,SDA
	BS	port6,SCL
	SDA_OUT
	call	dly
	BC	port6,SDA
	call	dly
	BC	port6,SCL
	RET            
E_STOP:
	SDA_OUT
	BC	port6,SDA
	BC	port6,SCL
	call	dly
	BS	port6,scl
	call	dly
	BS	port6,sda
	call	dly
	RET   
;****************************
;宏定义                      
;****************************
;=================           
;设置SCL,SDA为输出口         
;=================           
SDA_OUT    MACRO               
	mov	a,@00001110b
	iow	PROT_I2C	      
ENDM                         
;=================           
;设置SCL为输出口,SDA为输入口 
;=================           
SDA_IN    MACRO 
	mov	a,@01001110b
	iow	PROT_I2C	                 	
ENDM                                  
;=========================================================================
LCDDISPLAY:
 	CLR	LCD_MAP		 ;FIRST MAP ADD IS 0
 	BS	port5,CK 		;/WR=1
 	call	dly
 	BC	port5,CS 		;/CS=0
 	call	dly                              
 	BS	port5,DA 		;DATA=1  
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly
 	BS	port5,CK 		;/WR=1
 ;----------------------------------------------
 	call	dly
 	Bc	port5,DA 		;DATA=0         
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly
 	BS	port5,CK 		;/WR=1
 ;--------------------------------------------------------------------
 	call	dly
 	Bs	port5,DA 		;DATA=1  
 	call	dly 
 	BC	port5,CK 		;/WR=0
 	call	dly
 	BS	port5,CK 		;/WR=1
 ;-------------------------------;WRITE THE 		 
 	call	dly
 	bc	port5,DA  		; addr0  =0
 	call	dly  
 	BC	port5,CK 		;/WR=0
 	call	dly
 	BS	port5,CK 		;/WR=1
 	call	dly
 ;----------------------------------------; addr1 =1
 	bs	port5,DA 
 	call	dly		
 	BC	port5,CK 		;/WR=0	
 	call	dly
 	BS	port5,CK 		;/WR=1
 	call	dly
 ;--------------------------------------addr2 =1
 	bc	port5,DA 
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly		
 	BS	port5,CK 		;/WR=1
 	call	dly
 ;----------------------------------------addr3 =1
 	bs	port5,DA 
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly	
 	BS	port5,CK 		;/WR=1
 	call	dly
 ;---------------------------------------addr4 =1
 	bs	port5,DA 
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly		
 	BS	port5,CK 		;/WR=1
 	call	dly  
 ;--------------------------------------addr5 =1
 	bc	port5,DA 
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly	
 	BS	port5,CK 		;/WR=1
 ;---------------------------------------seg0
 	call	dly	
 	MOV	A,BCDDATA3 
 	CALL	dispdatatab
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;--------------------------------------SEG1
 	MOV	A,BCDDATA3 
 	CALL	dispdatatab_2 
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;----------------------------------;SEG2
 	MOV	A,BCDDATA2   
 	CALL	dispdatatab 
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;-------------------------------------------;SEG3
 	MOV	A,BCDDATA2  
 	CALL	dispdatatab_2
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;-----------------------------------------------;SEG4	
 	MOV	A,BCDDATA1 
 	CALL	dispdatatab  
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;-----------------------------------------;SEG5
 	nop
 	MOV	A,BCDDATA   
 	CALL	dispdatatab_1
 	MOV	LCDRAM,A 		
 	CALL	LCDDATA_W
 ;--------------------------------------------
 	MOV	A,BCDDATA1
 	CALL	dispdatatab_2
 	MOV	LCDRAM,A 		;SEG6
 	CALL	LCDDATA_W              
 	BS	port5,CS ;/CS=1
 	RET  
 ;-----------------------------------------------
 C_WRITE: 
 	MOV	A,@0X08
 	MOV	MOVE_TIME,A
 	BS	port5,CK 		 ;/WR=1
 	call	dly
 	BC	port5,CS 		 ;/CS=0
 	call	dly
 	BC	port5,CK		 ;/WR=0
 	call	dly
 	BS	port5,DA		 ;DATA=1
 	call	dly
 	BS	port5,CK		 ;/WR=1
 	call	dly
 	BC	port5,CK 		 ;/WR=0
 	call	dly
 	BC	port5,DA		 ;DATA=0
 	call	dly
 	BS	port5,CK		 ;/WR=1
 	call	dly
 	BC	port5,CK		 ;/WR=0
 	call	dly
 	BC	port5,DA 		;DATA=0
 	call	dly
 	BS	port5,CK		 ;/WR=1
 	call	dly
 	BC	port5,CK 		;/WR=0
 C8_C1_WRITE:
 	JBC	COMMAND,7	 ;COMMAND,7=0
 	JMP	SET_DATA_1
 	BC	port5,DA ;DATA=0
 	JMP NEXT_1
 SET_DATA_1: 
 	BS	port5,DA	 	;DATA=1
 NEXT_1:
 	RLC	COMMAND
 	BS	port5,CK 		;/WR=1
 	call	dly
 	BC	port5,CK 		;/WR=0
 	call	dly
 	DJZ	MOVE_TIME
 	JMP	C8_C1_WRITE
 	BC	port5,DA		 ;DATA=0
 	call	dly
 	BS	port5,CK 		;/WR=1
 	call	dly
 	BS 	port5,CS 		;/CS=1
 	call	dly
 	RET
 ;--------------------------------------
 LCDDATA_W: 
 	MOV	A,@0X04 	;RAM DATA WRITE
 	MOV	MOVE_TIME,A
 lDATA_W:
 	JBC	LCDRAM,0
 	JMP	RAM_SET
 	BC	port5,DA		 ;DATA=0
 	JMP	NEXT_3
 RAM_SET:
 	 BS	port5,DA ;DATA=1
 NEXT_3:
 	RrC	LCDRAM
 	Bc	port5,CK 		;/WR=1
 	call	dly
 	Bs	port5,CK		 ;/WR=0
 	call	dly
 	DJZ	MOVE_TIME
 	JMP	lDATA_W
 	RET
 ;----------------------------------------------------------
lcdinit:
 	BC	port5,cs		;RESET 1621 INTERFACE
 	call	dly
 	BS	port5,cs
 	call	dly
 	BC	port5,cs
 	call	dly
 	call	dly
 	MOV	A,@0B11100011	 ;COMMAND TNORMAL
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B10000000 	;COMMAND /IRQ DIS
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00011000 	;COMMAND on chip scs
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00101011 	;COMMAND BIAS1/3,4 COM
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00001000 	;COMMAND TONE OFF
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00000101 	;COMMAND WDT DIS
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00000100 	;COMMAND TIMER DIS
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00000001 	;COMMAND SYS_EN
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	MOV	A,@0B00000011 	;COMMAND LCD_ON
 	MOV	COMMAND,A
 	CALL	C_WRITE
 	ret
;--------------------------------------------------------------
INIT:
	wdtc
	clr	PORT5
	clr	PORT6
	mov	a,@0x0
	iow	IOC5	;0 out 1 in
	MOV	A,@00001110b	;P63->P65 IS inPUT,P67->P63 IS IoutPUT
	IOW	IOC6
	mov	a,0x00
	iow	iocc
	mov	a,@0x80
	iow	ioce
	mov	a,@0x0
	iow	IOCF	; dis all intertupt
	mov	a,@0xef
	contw
	MOV	A,@0X0
	IOW	IOCd		;port6 IS PULL HIGH
	MOV	A,@10011110b
	CONTW
;---------------------------------------------------------
	MOV 	A,@11H		;CLEAR 10H->3FH RAM ADDRESS
	MOV	0X04,A
	MOV	A,@1eH
	MOV	0X10,A
	CLR	0
	INC	0X04
	DJZ	0X10
	JMP	$-3			
	CLR	TCC		;CLEAR
	ret
;-------------------------------------
dly:
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	ret
INT_PRO:
	reti 	 	
;======================================================================
	END                                                                                                                 

⌨️ 快捷键说明

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