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

📄 t118.asm

📁 T118B小尺寸TFT屏显示驱动芯片代码。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		.PAGE0
m_bPanelClose		ds		1
m_cStandard			ds		1
m_cChroma			ds		1
m_cBuff				ds		5

		.CODE
PATTERN_CTRL		equ		$91

PSYNC_STR			equ		$10
IGNORE_VSYNC		equ		$02

DEINTERLACE			equ		$02

ENYPbPr				equ		$40

S_NTSC			equ			$02
S_PAL			equ			$04
S_SECAM			equ			$08
S_NTSC_4		equ			$10
S_PAL_M			equ			$20
S_PAL_CN		equ			$40
S_END			equ			$80

%Load_TV_P0			.MACRO		addr
		lda		addr
		sta		T2
		jsr		Get_P0_TVData
		lda		T1
		.endm

%Store_TV_P0		.MACRO		addr,data
		lda		addr
		sta		T2
		lda		data
		sta		T3
		jsr		Set_P0_TVData
		.endm

%Load_TV_P2			.MACRO		addr
		lda		addr
		sta		T2
		jsr		Get_P4_TVData
		lda		T1
		.endm

%Save_TV_P2			.MACRO		addr,dat
		lda		addr
		sta		T2
		lda		dat
		sta		T3
		jsr		Set_P4_TVData
		.endm

%Load_P0_Tbl		.MACRO		addr,data,cnt
		lda		#<addr
		sta		T5+0
		lda		#>addr
		sta		T5+1
		lda		#<data
		sta		T7+0
		lda		#>data
		sta		T7+1
		lda		#cnt
		jsr		LoadTbl_P0
		.endm

%Load_P1_Tbl		.MACRO		addr,data,cnt
		lda		#<addr
		sta		T5+0
		lda		#>addr
		sta		T5+1
		lda		#<data
		sta		T7+0
		lda		#>data
		sta		T7+1
		lda		#cnt
		jsr		LoadTbl_P1
		.endm

%Load_P2_Tbl		.MACRO		addr,data,cnt
		lda		#<addr
		sta		T5+0
		lda		#>addr
		sta		T5+1
		lda		#<data
		sta		T7+0
		lda		#>data
		sta		T7+1
		lda		#cnt
		jsr		LoadTbl_P2
		.endm

PwrDn_T118:
		%Store_TV_P0	#$0f,#$30
		%Store_TV_P0	#$ca,#$21
		%Store_TV_P0	#$e0,#$4e
		%Store_TV_P0	#$e3,#$ff
		%Store_TV_P0	#$e5,#$80		
		rts

Init_T118:
		lda		#S_NTSC
		sta		m_cStandard
		sta		m_cChroma

		jsr		InitT10x
		jsr		TconInit
		
		lda		#00
		sta		m_bPanelClose
		jsr		ClosePanel

		jsr		SourceSelect

		lda		#00
		sta		m_bPanelClose
		jsr		ClosePanel

		lda		#$C5
		sta		T2
		lda		#$00
		sta		T3
		jsr		Set_P0_TVData

		lda		#$C7
		sta		T2
		lda		#$04
		sta		T3
		jsr		Set_P0_TVData

		jsr		SetSignalStd
		jsr		SetOPTiming
		%DelayTimer		#10	
		jsr		DetectSignalStd
		jsr		OpenPanel
		rts

Dump_P0_P2_Ram:
		lda		#0
		sta		T5
		sta		T6

Dump_P0_Ram_Lp:
		%Load_TV_P0		T5
		ldx		T6
		sta		Dump_Ram,x
		inc		T5
		inc		T6
		inx
		cpx		#16
		bne		Dump_P0_Ram_Lp
		lda		#0
		sta		T6
		lda		T5
		bne		Dump_P0_Ram_Lp
		
		lda		#0
		sta		T5
		sta		T6
Dump_P2_Ram_Lp:
		%Load_TV_P2		T5
		ldx		T6
		sta		Dump_Ram,x
		inc		T5
		inc		T6
		inx
		cpx		#16
		bne		Dump_P2_Ram_Lp
		lda		#0
		sta		T6
		lda		T5
		bne		Dump_P2_Ram_Lp
		rts

AutoSwitch_NTSCPAL:
		%GetTimer		#0
		bne		AutoSwitch_NTSCPAL_End
		jsr		DetectSignalStd
;;		jsr		Dump_P0_P2_Ram
		%SetTimer		#100,#0
AutoSwitch_NTSCPAL_End:
		rts

NoDetectSignalStd:
		%Store_TV_P0	#$11,#$0e
DetectSignalStd_End:
		rts
DetectSignalStd:
		lda		m_cStandard
		sta		m_cBuff+0

		%Load_TV_P2		#$3A
		and		#$06
		cmp		#$06
		bne		NoDetectSignalStd

		%Load_TV_P2		#$7b
		cmp		#$10+1
		bcc		DetectSignalStd_2
		
		%Load_TV_P0		#$59
		cmp		#$d6+1
		bcc		DetectSignalStd_0_NTSC
DetectSignalStd_0_PAL:
		lda		#S_PAL
		Jmp		DetectSignalStd_0
DetectSignalStd_0_NTSC:
		lda		#S_NTSC
DetectSignalStd_0:
		sta		m_cBuff+0
		
		cmp		m_cStandard
		bne		DetectSignalStd_1
		lda		m_bPanelClose
		beq		DetectSignalStd_End
DetectSignalStd_1:
		lda		m_cBuff+0
		sta		m_cStandard
		sta		m_cChroma
		jsr		SetOPTiming
		jsr		SetSignalStd
		%DelayTimer		#05
		jsr		OpenPanel
		%DelayTimer		#05
		jmp		DetectSignalStd_End

DetectSignalStd_2:
		%Load_TV_P0		#$59
		cmp		#$d6+1
		bcc		DetectSignalStd_2_NTSC
DetectSignalStd_2_PAL:
		lda		#S_PAL
		Jmp		DetectSignalStd_3
DetectSignalStd_2_NTSC:
		lda		#S_NTSC
DetectSignalStd_3:
		sta		m_cBuff+0
		cmp		m_cStandard
		beq		DetectSignalStd_4
		jsr		ClosePanel
		%DelayTimer		#03
		lda		m_cBuff+0
		sta		m_cStandard
		jsr		SetOPTiming		
DetectSignalStd_4:		

		lda		m_cChroma
		sta		m_cBuff+4
		%DelayTimer		#03
		
		%Load_TV_P0		#$59
		cmp		#$d6+1
		bcc		DetectSignalStd_4_NTSC
DetectSignalStd_4_PAL:
		%Save_TV_P2		#$83,#$39
		Jmp		DetectSignalStd_5
DetectSignalStd_4_NTSC:
		%Save_TV_P2		#$83,#$37
DetectSignalStd_5:
		%DelayTimer		#03

		%Load_TV_P0		#$59
		cmp		#$d6+1
		bcc		DetectSignalStd_5_NTSC
DetectSignalStd_5_PAL:
		lda		#0
		sta		m_cBuff+2
		lda		m_cChroma
		sta		m_cBuff+1

		%DelayTimer		#03
DetectSignalStd_5_PAL_Lp:

		lda		m_cChroma
		cmp		#S_PAL
		bne		DetectSignalStd_5_PAL_Lp_1
		%Load_TV_P2		#$3a
		and		#$08
		beq		DetectSignalStd_5_PAL_Lp_1
		%Load_TV_P2		#$3c
		and		#$01
		bne		DetectSignalStd_6
DetectSignalStd_5_PAL_Lp_1:

		lda		#S_PAL
		sta		m_cChroma

		jsr		ClosePanel
		%DelayTimer		#03

		jsr		SetSignalStd
		%DelayTimer		#03
		
		inc		m_cBuff+2
		lda		m_cBuff+2
		cmp		#04
		bcc		DetectSignalStd_5_PAL_Lp
		jmp		DetectSignalStd_6
DetectSignalStd_5_NTSC:
		lda		#0
		sta		m_cBuff+2
		lda		m_cChroma
		sta		m_cBuff+1

		%DelayTimer		#03
DetectSignalStd_5_NTSC_Lp:

;;S_NTSC			equ			$02
;;S_PAL			equ			$04
;;S_SECAM			equ			$08
;;S_NTSC_4		equ			$10
;;S_PAL_M			equ			$20
;;S_PAL_CN		equ			$40
;;S_END			equ			$80
;;
;;
;;
;;
;;		lda		m_cChroma
;;		cmp		#S_NTSC_4
;;		bne		DetectSignalStd_5_NTSC_Lp_1
;;		%Load_TV_P2		#$3a
;;		and		#$08
;;		bne		DetectSignalStd_6
;;DetectSignalStd_5_NTSC_Lp_1:

		lda		m_cChroma
		cmp		#S_NTSC
		bne		DetectSignalStd_5_NTSC_Lp_1
		%Load_TV_P2		#$3a
		and		#$08
		bne		DetectSignalStd_6
DetectSignalStd_5_NTSC_Lp_1:

		lda		#S_NTSC
		sta		m_cChroma

		jsr		ClosePanel
		%DelayTimer		#03

		jsr		SetSignalStd
		%DelayTimer		#03
		
		inc		m_cBuff+2
		lda		m_cBuff+2
		cmp		#04
		bcc		DetectSignalStd_5_NTSC_Lp

DetectSignalStd_6:
		lda		m_cBuff+1
		cmp		m_cChroma
		beq		DetectSignalStd_7
		%Load_TV_P2		#$3a
		and		#$08
		beq		DetectSignalStd_6_1
		lda		m_cChroma
		sta		m_cBuff+4
DetectSignalStd_6_1:
		lda		m_cBuff+1
		sta		m_cChroma

DetectSignalStd_7:
		lda		m_cBuff+4
		cmp		m_cChroma
		beq		DetectSignalStd_8
		sta		m_cChroma
		lda		m_cStandard
		sta		m_cBuff+0
		%Load_TV_P0		#$59
		cmp		#$d6+1
		bcc		DetectSignalStd_7_NTSC
DetectSignalStd_7_PAL:
		lda		#S_PAL
		Jmp		DetectSignalStd_7_1
DetectSignalStd_7_NTSC:
		lda		#S_NTSC
DetectSignalStd_7_1:
		sta		m_cBuff+0
		cmp		m_cStandard
		beq		DetectSignalStd_7_2
		sta		m_cStandard
		jsr		SetOPTiming
DetectSignalStd_7_2:
;;		jsr		OpenPanel
DetectSignalStd_8:
		jsr		OpenPanel
		%Store_TV_P0	#$11,#$0c
		Jmp		DetectSignalStd_End


InitT10x:

		ldy		#0
InitT10x_0_Lp:
		lda		stInitT10xP0_Adr,y
		sta		T2
		cmp		#$30
		bne		InitT10x_0_Lp_1
InitT10x_0_Lp_0:
		jsr		Get_P0_TVData
		lda		T1
		ora		#$01
		sta		T3
		jsr		Set_P0_TVData
		jsr		Get_P0_TVData
		lda		T1
		and		#~$02
		ora		#DEINTERLACE
		sta		T3
		jsr		Set_P0_TVData
		jmp		InitT10x_0_Lp_2
InitT10x_0_Lp_1:
		lda		stInitT10xP0_Dat,y
		sta		T3
		jsr		Set_P0_TVData
InitT10x_0_Lp_2:
		iny
		cpy		#(stInitT10xP0_Adr_End-stInitT10xP0_Adr)
		bne		InitT10x_0_Lp

		ldy		#0
InitT10x_2_Lp:
		lda		stInitT10xP2_Adr,y
		sta		T2
		cmp		#$01
		bne		InitT10x_2_Lp_1
InitT10x_2_Lp_0:
		jsr		Get_P4_TVData
		lda		T1
		ora		#$01
		sta		T3
		jsr		Set_P4_TVData
		jmp		InitT10x_2_Lp_2
InitT10x_2_Lp_1:
		lda		stInitT10xP2_Dat,y
		sta		T3
		jsr		Set_P4_TVData
InitT10x_2_Lp_2:
		iny
		cpy		#(stInitT10xP2_Adr_End-stInitT10xP2_Adr)
		bne		InitT10x_2_Lp

		%Load_P0_Tbl	ucaPanelSpecAdrP0,ucaPanelSpecDataP0,(ucaPanelSpecAdrP0_End-ucaPanelSpecAdrP0)
		%Load_P2_Tbl	ucaPanelSpecAdrP2,ucaPanelSpecDataP2,(ucaPanelSpecAdrP2_End-ucaPanelSpecAdrP2)
		rts

SetOPTiming:
		lda		m_cStandard
		cmp		#S_NTSC
		bne		SetPAL_OPTiming
SetNTSC_OPTiming:
		%Load_P0_Tbl	ucaZoomAdrP0,ucaZoomDataP0_NTSC,(ucaZoomAdrP0_End-ucaZoomAdrP0)
		%Load_P2_Tbl	ucaZoomAdrP2,ucaZoomDataP2_NTSC,(ucaZoomAdrP2_End-ucaZoomAdrP2)
		jmp		SetOPTiming_End
SetPAL_OPTiming:
		%Load_P0_Tbl	ucaZoomAdrP0,ucaZoomDataP0_PAL,(ucaZoomAdrP0_End-ucaZoomAdrP0)
		%Load_P2_Tbl	ucaZoomAdrP2,ucaZoomDataP2_PAL,(ucaZoomAdrP2_End-ucaZoomAdrP2)
SetOPTiming_End:
		%TW101_I2CWrite		#$e2,#$11
		rts

SetSignalStd:
		lda		#$3f
		sta		T2
		lda		#$01
		sta		T3
		jsr		Set_P4_TVData
		
		lda		m_cChroma
		cmp		#S_NTSC
		bne		SetPAL_SignalStd
SetNTSC_SignalStd:
		%Load_P2_Tbl	ucaSignalStdRegP2,ucaSignalStdValP2_NTSC,(ucaSignalStdReg_End-ucaSignalStdRegP2)
		jmp		SetSignalStd_2

SetPAL_SignalStd:
		%Load_P2_Tbl	ucaSignalStdRegP2,ucaSignalStdValP2_PAL,(ucaSignalStdReg_End-ucaSignalStdRegP2)

SetSignalStd_2:

⌨️ 快捷键说明

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