📄 isp_serve.asm
字号:
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 + -