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

📄 at24c02.asm

📁 一个DVD组合机的MCU代码,FM,机芯出入仓,功放的控制及DVD数据通过通信来访问.
💻 ASM
字号:
;--TAB=8----------------------------------------------------------;
;*****************************************************************;
;*****************************************************************;
;**     at24c02.asm                                             **;
;**                                                             **;
;**     version 1.0                                             **;
;**                                                             **;
;**     update  2002/5/6                                        **;
;**                                                             **;
;**                                                             **;
;**                                                             **;
;*****************************************************************;
;*****************************************************************;
;-----------------------------------------------------------------;
AT24C_SCL	EQU	P1.4
AT24C_SDA	EQU	P1.5
CHIP_RD		EQU	10100001B
CHIP_WR		EQU	10100000B
CHIP_PT2257	EQU	10001000B
;-----------------------------------------------;
$..\SRC\dvd.H
extern _R
;-----------------------------------------------;
	RSEG	CODE                            ;
;-----------------------------------------------;
;Name: Lsb_AtReadPage                           ;
;In:     R0=BUF B=count R1=at24c address        ;
;out:    c=0:ok c=1:error                       ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_AtReadPage:
	;--(1) dummy byte write-----------------;
	CALL	Lsb_ShifStart  			;start
	JC	rp_4
	MOV	A,#CHIP_WR			;out device address or write
	CALL	Lsb_ShiftOut
	JC	rp_3
	MOV	A,R1                		;out data address
	CALL	Lsb_ShiftOut
	JC      rp_3

	;--(2)curent read data------------------;
	CALL	Lsb_ShifStart  			;start
	JC	rp_4
	MOV	A,#CHIP_RD			;out device address or read
	CALL	Lsb_ShiftOut
	JC	rp_3
	JNC 	rp_2

rp_1:   CALL	Lsb_ShiftACK 			;out ACK to next
rp_2:   CALL	Lsb_ShiftIn
	MOV	@R0,A
	INC	R0
	DJNZ	B,rp_1
	CALL	Lsb_ShiftNAK 			;end out NAK
	CLR	C

rp_3:   CALL	Lsb_ShifStop

rp_4:   RET

;-----------------------------------------------;
;Name: Lsb_AtWritePage                          ;
;In:     R0=BUF B=count R1=flash address        ;
;out:    c=0:ok c=1:error                       ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_AtWritePage:

	CALL  	Lsb_ShifStart 			;OUT START
	JC 	wp_2
	MOV	A,#CHIP_WR			;OUT device addr
	CALL	Lsb_ShiftOut
	JC 	wp_1
	MOV	A,R1 				;OUT DATA addr
	CALL    Lsb_ShiftOut
	JC      wp_1

wp_0:   MOV	A,@R0
	CALL    Lsb_ShiftOut
	JC	wp_1
	INC	R0
	DJNZ	B,wp_0
	CLR	C

wp_1:   CALL 	Lsb_ShifStop			;STOP

wp_2:   MOV	A,#12
	CALL	Lsb_Delay
	RET


;-----------------------------------------------;
;Name: Lsb_ShifStart                            ;
;In:     NO                                     ;
;out:    C=0:OK C=1:ERORR                       ;
;SCL:    LOW-->Low                              ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShifStart:
	SETB	AT24C_SDA

	SETB	AT24C_SCL
	JNB	AT24C_SDA,ss_1                        ;bus test
	JNB	AT24C_SCL,ss_1
	NOP
	NOP
	CLR	AT24C_SDA
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	AT24C_SCL

	CLR	C
	JMP     ss_2

ss_1:   SETB	C
ss_2:   RET


;-----------------------------------------------;
;Name: Lsb_ShifStop                             ;
;In:     no                                     ;
;out:    no                                     ;
;SCL:    LOW-->HI                               ;
;SDA:       -->HI                               ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShifStop:
	CLR	AT24C_SDA
	NOP
	NOP
	SETB	AT24C_SCL
	NOP
	NOP
	NOP
	NOP
	NOP
	SETB	AT24C_SDA
	RET

;-----------------------------------------------;
;Name: Lsb_ShiftNAK                             ;
;In:     no                                     ;
;out:    no                                     ;
;SCL:    Low-->Low                              ;
;update: 200/5/24                               ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShiftNAK:
	SETB	AT24C_SDA
	NOP
	NOP
	SETB	AT24C_SCL
	NOP
	NOP
	NOP
	NOP
	CLR	AT24C_SCL
	RET

;-----------------------------------------------;
;Name: Lsb_ShiftACK                             ;
;In:     NO                                     ;
;out:    NO                                     ;
;SCL:    Low-->Low                              ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShiftACK:
	CLR	AT24C_SDA
	NOP
	NOP
	SETB	AT24C_SCL
	NOP
	NOP
	NOP
	NOP
	CLR	AT24C_SCL
	RET


;-----------------------------------------------;
;Name: Lsb_ShiftOut                             ;
;In:     A=byte                                 ;
;out:    c=ACK  C=0:OK C=1:ERROR                ;
;CLS:    Low-->Low                              ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShiftOut:

	PUSH	B

	MOV	B,#8
so_1:	RLC	A        			;out byte
	MOV	AT24C_SDA,C
	NOP
	NOP
	SETB	AT24C_SCL
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	AT24C_SCL
	DJNZ	B,so_1

	SETB	AT24C_SDA
	NOP
	NOP
	SETB	AT24C_SCL                             ;read ack
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV	C,AT24C_SDA
	CLR	AT24C_SCL

	POP	B
	RET


;-----------------------------------------------;
;Name: Lsb_ShiftIn                              ;
;In:     NO                                     ;
;out:    A=byte                                 ;
;SCL:    Low-->Low                              ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
;-----------------------------------------------;
Lsb_ShiftIn:
	PUSH	B       			;read byte

	MOV	B,#8
si_1:   SETB	AT24C_SDA
	NOP
	NOP
	SETB	AT24C_SCL
	NOP
	NOP
	NOP
	NOP
	MOV	C,AT24C_SDA
	RLC 	A
	CLR	AT24C_SCL
	DJNZ  	B,si_1

	POP	B
	RET


;-----------------------------------------------;
;Name: Lsb_WritePt2257                          ;
;In:     R0=BUF B=count                         ;
;out:    c=0:ok c=1:error                       ;
;update: 2002/5/24                              ;
;check:  ReadAt24c			        ;
public   Lsb_ReadAt24c                          ;
extern	 gRadioBuf                              ;
;-----------------------------------------------;
Lsb_ReadAt24c:
	PUSH	B
	PUSH	_R
	PUSH	_R+1

	MOV	R0,#gRadioBuf
	MOV	A,R6
	MOV	R1,A
	MOV	B,R7
	CALL	Lsb_AtReadPage

	POP	_R+1
	POP     _R
	POP	B
	RET


;-----------------------------------------------;
;Name: Lsb_WriteAt24c			  	;
;In:     R0=BUF B=count                         ;
;out:    c=0:ok c=1:error                       ;
;update: 2002/8/22                              ;
;check:  WriteAt24c_1				;
public   Lsb_WriteAt24c			  	;
;-----------------------------------------------;
Lsb_WriteAt24c:
	PUSH	B
	PUSH	_R
	PUSH	_R+1

	MOV	R0,#gRadioBuf
	MOV	A,R6
	MOV	R1,A
	MOV	B,R7
	CALL    Lsb_AtWritePage

	POP	_R+1
	POP     _R
	POP	B
	RET
;===========================================================================;
;===========================================================================;
;-----------------------------------------------;
;Name: Lsb_WritePt2257                          ;
;In:     R0=BUF B=count                         ;
;out:    c=0:ok c=1:error                       ;
;update: 2002/5/24                              ;
;check:  ycd_1                                  ;
extern gPt2257Buf                               ;
extern gPt2257Count                             ;
public Lsb_WritePt2257                          ;
;-----------------------------------------------;
Lsb_WritePt2257:
	PUSH	B
	PUSH	_R

	MOV	R0,#gPt2257Count
	MOV	B,@R0
	MOV	R0,#gPt2257Buf

	;-(1) OUT START-----;
	CALL  	Lsb_ShifStart
	JC 	wpt_2

	;-(2) OUT device addr-;
	MOV	A,#CHIP_PT2257
	CALL	Lsb_ShiftOut
	JC 	wpt_1

	;-(3) data--;
wpt_0:	MOV	A,@R0
	CALL    Lsb_ShiftOut
	JC	wpt_1
	INC	R0
	DJNZ	B,wpt_0
	CLR	C

	;-(4) STOP---------;
wpt_1:  CALL 	Lsb_ShifStop


wpt_2:  POP	_R
	POP	B
	RET

;-----------------------------------------------;
;Name:Lsb_Delay                                 ;
;Function:  delay number ms                     ;
;In:  A=number	  1-256			   	;
;out:                                           ;
;update:                                        ;
;check: 2                                       ;
public  Lsb_Delay                               ;
;-----------------------------------------------;
Lsb_Delay:
	PUSH	B
	PUSH	Direct_R2

	MOV	R2,A
dly_1:  MOV	B,#250
dly_2:  NOP
	NOP
	DJNZ	B,dly_2
	DJNZ	R2,dly_1

	POP     Direct_R2
	POP	B
	RET

;-----------------------------------------------;
;Name:Lst_ResetDelay 				;
;Function:  delay number ms                     ;
;In:  A=number	  1-256			   	;
;out:                                           ;
;update:                                        ;
;check: 2                                       ;
public  Lst_ResetDelay  			;
;-----------------------------------------------;
Lst_ResetDelay:
	MOV	A,#10
	CALL	Lsb_Delay
	RET
;===========================================================================;
;===========================================================================;
;---------------------------------------------------------------------------;
	END

⌨️ 快捷键说明

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