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

📄 isp_serve.asm

📁 一个非常好的微处理器烧录EEPROM的C++ 原代码项目文件,直接可用,而且还是一拖八的, 成果奉献
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		MOV	R7,#08H
		MOV	R6,#01H
VFD_SendAga:
		CLR	Pin_Clk_VFD
		MOV	A,Vfd_Send_Buffer
		ANL	A,R6
		JZ	VFD_Send_Zero
		SETB	Pin_Data_VFD
		JMP	VFD_Send_Wait
VFD_Send_Zero:	
		CLR	Pin_Data_VFD
VFD_Send_Wait:
		SETB	Pin_Clk_VFD
		NOP
		MOV	A,R6
		RL	A
		MOV	R6,A
		DJNZ	R7,VFD_SendAga
		SETB	Pin_Data_VFD
ENDIF		
		RET
;------------------------------------------------------	
VFD_WriteAll:
IF  DISP_VFD_DRIVER==VFD_DRIVER_PT6318
		CLR	Pin_Stb_VFD
		MOV	Vfd_Send_Buffer,#40H
		CALL	VFD_SendByte
		SETB	Pin_Stb_VFD
		CALL	Delay10us
		MOV	R0,#0C0H
		MOV	R1,#Vfd_Mem_Addr_0L
VFD_Write_Aga:		
		CLR	Pin_Stb_VFD
		MOV	Vfd_Send_Buffer,R0
		CALL	VFD_SendByte
		MOV	A,@R1
		MOV	Vfd_Send_Buffer,A
		CALL	VFD_SendByte
		SETB	Pin_Stb_VFD
		CALL	Delay5us
		MOV	A,#02H
		ADD	A,R0
		ANL	A,#3FH
		MOV	B,#03H
		DIV	AB
		MOV	A,B
		CJNE	A,#00H,VFD_Write_1
		INC	R0
VFD_Write_1:
		CJNE	R0,#0DDH,VFD_Write_2;#0C0H+01DH=#0DDH
		JMP	VFD_Write_3
VFD_Write_2:
		INC	R0
		INC	R1
		JMP	VFD_Write_Aga
VFD_Write_3:
		CLR	Pin_Stb_VFD
		MOV	Vfd_Send_Buffer,#0BH
		CALL	VFD_SendByte
		SETB	Pin_Stb_VFD
		CALL	Delay10us
		CLR	Pin_Stb_VFD
		MOV	Vfd_Send_Buffer,#8EH
		CALL	VFD_SendByte
		SETB	Pin_Stb_VFD
ENDIF
		RET
;------------------------------------------------------	
VFD_Print:
IF  DISP_VFD_DRIVER==VFD_DRIVER_PT6318
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	R0,#Vfd_Mem_Addr_1L
		MOV	R1,#Vfd_Mem_9
		MOV	DPTR,#FONT_VFD
		MOV	R2,#09H
VFD_Print_Aga:
		MOV	A,@R1
		RL	A
		MOV	Temp,A
		MOVC	A,@A+DPTR
		XCH	A,Temp
		INC	A
		MOVC	A,@A+DPTR
		MOV	@R0,A
		INC	R0
		MOV	A,Temp
		MOV	@R0,A
		INC	R0
		DEC	R1
		DJNZ	R2,VFD_Print_Aga
		MOV	Vfd_Mem_Addr_0L,#00H
		MOV	Vfd_Mem_Addr_0H,#00H
		CALL	VFD_WriteAll
ENDIF	
ENDIF
		RET
ENDIF
;-------------------------------------------------------
IF  DISPLAY==DISP_DVD
;-------------------------------------------------------
SetDVD_Addr:
		MOV	DPTR,#0000H
		MOV	A,Xpos
		MOVX	@DPTR,A
		INC	DPL
		MOV	A,Ypos
		MOVX	@DPTR,A
		MOV	Iic_SubAddr_L,#DVD_CMD_SETADDR
		MOV	Iic_Number,#02H
		CALL	Write_DVD
		RET
;-------------------------------------------------------
SetDVD_Color:
		MOV	DPTR,#0000H
		MOV	A,Color
		MOVX	@DPTR,A
		MOV	Iic_SubAddr_L,#DVD_CMD_SETCOLOR
		MOV	Iic_Number,#01H
		CALL	Write_DVD
		RET
;-------------------------------------------------------		
SetDVD_Data:
		MOV	Iic_SubAddr_L,#DVD_CMD_SETDATA
		CALL	Write_DVD
		RET
;-------------------------------------------------------
SetDVD_ClrDisp:
		MOV	Iic_SubAddr_L,#DVD_CMD_CLRDISP
		CALL	Write_DVD
		RET
;-------------------------------------------------------
GetString:
		CLR	Iic_Number
		CLR	Temp
Getstr1:		
		CLR	A
		MOVC	A,@A+DPTR
		CJNE	A,#'\',Getstr2
		RET
Getstr2:	MOV	Temp1,DPL
		MOV	Temp2,DPH
		MOV	DPTR,#0000H
		MOV	DPL,Temp
		MOVX	@DPTR,A
		MOV	DPL,Temp1
		MOV	DPH,Temp2
		INC	DPTR
		INC	Iic_Number
		INC	Temp
		JMP	Getstr1
;-------------------------------------------------------
ENDIF
;-------------------------------------------------------
;Display driver to here is over
;-------------------------------------------------------
IF  DISPLAY==DISP_DVD
Disp_Title:
		MOV	Xpos,#03H
		MOV	Ypos,#01H
		CALL	SetDVD_Addr
		MOV	Color,YELLOW
		CALL	SetDVD_Color
		MOV	DPTR,#STRING_TITLE
		CALL	GetString
		CALL	SetDVD_Data
		MOV	Xpos,#04H
		MOV	Ypos,#012H
		CALL	SetDVD_Addr
		MOV	Color,YELLOW
		CALL	SetDVD_Color
		MOV	DPTR,#STRING_AUTHOR
		CALL	GetString
		CALL	SetDVD_Data
		RET

Error_Set:		
		CALL	SetDVD_ClrDisp
		CALL	Disp_Title
		MOV	Xpos,#06H
		MOV	Ypos,#05H
		CALL	SetDVD_Addr
		MOV	Color,RED
		CALL	SetDVD_Color
		RET

Normal_Set:
		MOV	Ypos,#05H
		CALL	SetDVD_Addr
		MOV	Color,WHITE
		CALL	SetDVD_Color
		RET
ENDIF
;-------------------------------------------------------
;Display string:
;Note: Iic Error(don`t find at24c512)
OUT_Insert_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_I
		MOV	Vfd_Mem_2,#CH_N
		MOV	Vfd_Mem_3,#CH_S
		MOV	Vfd_Mem_4,#CH_E
		MOV	Vfd_Mem_5,#CH_R
		MOV	Vfd_Mem_6,#CH_T
		MOV	Vfd_Mem_7,#CH_NULL
		MOV	Vfd_Mem_8,#CH_I
		MOV	Vfd_Mem_9,#CH_C	
		CALL	VFD_Print
ENDIF
ENDIF		

IF  DISPLAY==DISP_DVD
		CALL	Error_Set
		MOV	DPTR,#STRING_INSERT
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Model Type Error
OUT_Type_Error:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_T
		MOV	Vfd_Mem_2,#CH_Y
		MOV	Vfd_Mem_3,#CH_P
		MOV	Vfd_Mem_4,#CH_E
		MOV	Vfd_Mem_5,#CH_LINE
		MOV	Vfd_Mem_6,#CH_E
		MOV	Vfd_Mem_7,#CH_R
		MOV	Vfd_Mem_8,#CH_R
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		CALL	Error_Set
		MOV	DPTR,#STRING_TYPE
		CALL	GetString
		CALL	SetDVD_Data
		MOV	DPTR,#STRING_ERROR
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET	
;------------------------------------------------------	
;Note:Move IC-AT24C512
OUT_Move_IC:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_M
		MOV	Vfd_Mem_2,#CH_O
		MOV	Vfd_Mem_3,#CH_V
		MOV	Vfd_Mem_4,#CH_E
		MOV	Vfd_Mem_5,#CH_NULL
		MOV	Vfd_Mem_6,#CH_I
		MOV	Vfd_Mem_7,#CH_C
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#0BH
		CALL	Normal_Set
		MOV	DPTR,#STRING_REMOVEIC
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Erase String
OUT_Erase_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_E
		MOV	Vfd_Mem_2,#CH_R
		MOV	Vfd_Mem_3,#CH_A
		MOV	Vfd_Mem_4,#CH_S
		MOV	Vfd_Mem_5,#CH_E
		MOV	Vfd_Mem_6,#CH_NULL
		MOV	Vfd_Mem_7,#CH_NULL
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#06H
		CALL	Normal_Set
		MOV	DPTR,#STRING_ERASE
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Work Percent
OUT_Percent:
		MOV	A,Percent
		MOV	B,#0AH
		DIV	AB
IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_9,B
		JZ	OUT_Per_1
		MOV	Vfd_Mem_8,A
		JMP	OUT_Per_2
OUT_Per_1:
		MOV	Vfd_Mem_8,#CH_NULL
OUT_Per_2:		
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Ypos,#14H
		CALL	SetDVD_Addr
		MOV	Color,WHITE
		CALL	SetDVD_Color
		MOV	DPTR,#0000H
		ADD	A,#'0'
		MOVX	@DPTR,A
		INC	DPL
		MOV	A,B
		ADD	A,#'0'
		MOVX	@DPTR,A
		INC	DPL
		MOV	A,#'%'
		MOVX	@DPTR,A
		MOV	Iic_Number,#03H
		CALL	SetDVD_Data
ENDIF
		RET		
;------------------------------------------------------	
;Note: Program String
OUT_Program_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_P
		MOV	Vfd_Mem_2,#CH_R
		MOV	Vfd_Mem_3,#CH_O
		MOV	Vfd_Mem_4,#CH_G
		MOV	Vfd_Mem_5,#CH_R
		MOV	Vfd_Mem_6,#CH_A
		MOV	Vfd_Mem_7,#CH_M
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#07H
		CALL	Normal_Set
		MOV	DPTR,#STRING_WRITE
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Verify String
OUT_Verify_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_V
		MOV	Vfd_Mem_2,#CH_E
		MOV	Vfd_Mem_3,#CH_R
		MOV	Vfd_Mem_4,#CH_I
		MOV	Vfd_Mem_5,#CH_F
		MOV	Vfd_Mem_6,#CH_Y
		MOV	Vfd_Mem_7,#CH_NULL
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#08H
		CALL	Normal_Set
		MOV	DPTR,#STRING_VERIFY
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------
;Note: Verify Error
OUT_Verify_Error:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_V
		MOV	Vfd_Mem_2,#CH_E
		MOV	Vfd_Mem_3,#CH_R
		MOV	Vfd_Mem_4,#CH_I
		MOV	Vfd_Mem_5,#CH_F
		MOV	Vfd_Mem_6,#CH_Y
		MOV	Vfd_Mem_7,#CH_NULL
		MOV	Vfd_Mem_8,#CH_E
		MOV	Vfd_Mem_9,#CH_R
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Ypos,#14H
		CALL	SetDVD_Addr
		MOV	Color,RED
		CALL	SetDVD_Color
		MOV	DPTR,#STRING_ERROR
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET		
;------------------------------------------------------	
;Note: Protect String
OUT_Protect_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_P
		MOV	Vfd_Mem_2,#CH_R
		MOV	Vfd_Mem_3,#CH_O
		MOV	Vfd_Mem_4,#CH_T
		MOV	Vfd_Mem_5,#CH_E
		MOV	Vfd_Mem_6,#CH_C
		MOV	Vfd_Mem_7,#CH_T
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#09H
		CALL	Normal_Set
		MOV	DPTR,#STRING_PROTECT
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Restart(reset) String
OUT_Restart_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_R
		MOV	Vfd_Mem_2,#CH_E
		MOV	Vfd_Mem_3,#CH_S
		MOV	Vfd_Mem_4,#CH_T
		MOV	Vfd_Mem_5,#CH_A
		MOV	Vfd_Mem_6,#CH_R
		MOV	Vfd_Mem_7,#CH_T
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#0CH
		CALL	Normal_Set
		MOV	DPTR,#STRING_RESTART
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------	
;Note: Isp String
OUT_Isp_Str:	

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_I
		MOV	Vfd_Mem_2,#CH_S
		MOV	Vfd_Mem_3,#CH_P
		MOV	Vfd_Mem_4,#CH_SUB
		MOV	Vfd_Mem_5,#CH_SUB
		MOV	Vfd_Mem_6,#CH_SUB
		MOV	Vfd_Mem_7,#CH_SUB
		MOV	Vfd_Mem_8,#CH_SUB
		MOV	Vfd_Mem_9,#CH_SUB
		CALL	VFD_Print
ENDIF
ENDIF
		RET
;------------------------------------------------------	
;Note: -------Ok String
OUT_Ok_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_8,#CH_O
		MOV	Vfd_Mem_9,#CH_K
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Ypos,#14H
		CALL	SetDVD_Addr
		MOV	Color,WHITE
		CALL	SetDVD_Color
		MOV	DPTR,#STRING_OK
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;------------------------------------------------------			
OUT_Read_Str:

IF  DISPLAY==DISP_VFD
IF  DISP_VFD_SCREEN==VFD_SCREEN_GTD_1007A
		MOV	Vfd_Mem_1,#CH_R
		MOV	Vfd_Mem_2,#CH_E
		MOV	Vfd_Mem_3,#CH_A
		MOV	Vfd_Mem_4,#CH_D
		MOV	Vfd_Mem_5,#CH_NULL
		MOV	Vfd_Mem_6,#CH_NULL
		MOV	Vfd_Mem_7,#CH_NULL
		MOV	Vfd_Mem_8,#CH_NULL
		MOV	Vfd_Mem_9,#CH_NULL
		CALL	VFD_Print
ENDIF
ENDIF

IF  DISPLAY==DISP_DVD
		MOV	Xpos,#07H
		CALL	Normal_Set
		MOV	DPTR,#STRING_READ
		CALL	GetString
		CALL	SetDVD_Data
ENDIF
		RET
;Display driver to here is over		
;-------------------------------------------------------	
;  	  DISPLAY  PROGRAM TO HERE IS OVER
;-------------------------------------------------------

;-------------------------------------------------------	
;		EEPROM ISP PROGRAM
;-------------------------------------------------------	
;---------------Chek_Model PROGRAM---------------------
GetMem:
		MOV	DPL,Iic_Buffer
		MOV	DPH,#00H
		MOVX	A,@DPTR
		RET
		
Chek_Model:
		CLR	Eeprom_Type

⌨️ 快捷键说明

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