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

📄 function.asm

📁 FLASH烧录 麻将机。。。。 FLASH烧录 麻将机
💻 ASM
字号:
                .PW             128
                .CHIP           W65C02S
                .GLOBALS	ON
                .INCLUDE        SYSTEM.CFG
                
                
                
;***************************************************************************
;* global label definition
;*
;***************************************************************************
.PUBLIC Write_EPP128
.PUBLIC	Verify_EPP128
;PUBLIC	DelayTime


;***************************************************************************
.XDEF		PC
.XDEF		PCC
;***************************************************************************
;SYSRAM                  .SECTION                REF_ONLY
;***************************************************************************
SDBuff		.DS		1
RDBuff		.DS		1
EPPAddH		.DS		1
EPPAddL		.DS		1
WriteBuff	.DS		1
;***************************************************************************
;* Description: Section PS0
;*
;***************************************************************************
;PS0     .SECTION
;***************************************************************************
;======================================================
;Function: write 24CL128 
;Input: EppAdd,
;PC0->SDA,PC1->SCL,PC2->WP
;======================================================
Write_EPP128:



			RTS
			
			
;======================================================
;Function: Verify 24CL128 
;Input: EppAdd,
;PC0->SDA,PC1->SCL,PC2->WP;
;======================================================
Verify_EPP128:



			RTS
			
			
			
;======================================================
;Function: Read a byte from EPPROM
;
;PC0->SDA,PC1->SCL,PC2->WP
;======================================================
ReadByteEpp128:
			JSR		StartEpp
			LDA		#10100000B
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		ReadByteError
			
			LDA		EPPAddH
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		ReadByteError
			
			LDA		EPPAddL
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		ReadByteError
			
			SMB0		<PC
			SMB1		<PC
			
			JSR		StartEpp
			
			LDA		#10100001B
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		ReadByteError
			
			LDA		#11111110H		;PC0 as input
			STA		PCC
			SMB0		<PC			;enable PC0 pull high
			NOP
			NOP
			NOP			
				
			JSR		InceptData
			
			LDA		#FFH
			STA		PCC
			RMB0		<PC
			JSR		DelayTime
ReadByteError:
			JSR		StopEpp
			RTS
;======================================================
;Function: Write a byte from EPPROM
;
;PC0->SDA,PC1->SCL,PC2->WP
;======================================================
WriteByteEpp128:
			JSR		StartEpp
			
			LDA		#10100000B
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		WriteByteError
			
			LDA		EPPAddH
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		WriteByteError
			
			LDA		EPPAddL
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		WriteByteError
			
			LDA		WriteBuff
			STA		SDBuff
			JSR		SendData
			
			JSR		CheckAck
			CMP		#0
			BEQ		WriteByteError
			LDA		#1
WriteByteError:
			JSR		StopEpp
			RTS
;======================================================
;all subroutine for control the EEPROM 24C128	      ||
;PC0->SDA,PC1->SCL,PC2->WP			      ||
;======================================================
SendData:
			PHA
			PHX
			LDX		#8	
SendDataLP:			
			ASL		SDBuff
			BCC		SendData1
			JSR		SendHigh
			BRA		SendData2
SendData1:
			JSR		SendLow
SendData2:
			DEX
			CPX		#0
			BNE		SendDataLP
			PLX
			PLA
			RTS							
;======================================================			
InceptData:
			PHA
			PHX
			LDX		#8
InceptLP:			
			SMB1		<PC
			NOP
			NOP
			NOP
			NOP
			BBR0		<PC,StoreLow
;--- store hight bit ----
			SEC
			ROL		RDBuff
			BRA		InceptD1
StoreLow:			
			CLC
			ROL		RDBuff
InceptD1:
			RMB1		<PC
			JSR		DelayTime
			DEX					
			CPX		#0
			BNE		InceptLP
			PLX
			PLA
			RTS
;======================================================
StartEpp:
			RMB0		<PC		;SDA->LOW
			JSR		DelayTime
			RMB1		<PC		;SCL->LOW
			JSR		DelayTime
			RTS	
;======================================================
EnableCEpp:
			RMB2		<PC		;WP ->LOW
			JSR		DelayTime
			RTS
;======================================================
StopEpp:
			SMB1		<PC		;SCL->HIGH
			JSR		DelayTime
			SMB0		<PC		;SDA->HIGH
			JSR		DelayTime
			RTS
;======================================================
DisableCEpp:
			SMB2		<PC
			RTS
;======================================================
SendHigh:
			SMB0		<PC		;SDA->HIGH
			JSR		DelayTime
			SMB1		<PC		;SCL->HIGH
			JSR		DelayTime
			RMB1		<PC
			RMB0		<PC
			RTS
;======================================================
SendLow:
			RMB0		<PC		;SDA->HIGH
			JSR		DelayTime
			SMB1		<PC		;SCL->HIGH
			JSR		DelayTime
			RMB1		<PC
			RMB0		<PC
			RTS
;======================================================
DelayTime:
			LDA		#0
			DEC
			NOP
			BNE		$-2
			RTS

;======================================================
;;   If A=0 then ACK error 
;;   If A>0 then ACK right
;======================================================
CheckAck:
			LDA		#11111110H		;PC0 as input
			STA		PCC
			SMB0		<PC			;enable PC0 pull high
			NOP
			NOP
			NOP
			
			LDA		#255
			SMB1		<PC			;SCL High
			NOP
			NOP
			NOP
CheckAckLp:			
			BBR0		<PC,CheckAckNext
			NOP
			NOP
			DEC
			CMP		#0
			BNE		CheckAckLp
CheckAckNext:
						
			LDA		#FFH
			STA		PCC
			RMB1		<PC
			RMB0		<PC
			JSR		DelayTime
			RTS
;======================================================

			

⌨️ 快捷键说明

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