📄 tft_drv_4805.asm
字号:
; mov r_cmddata,a
; call f_auopanelcmd
; JMP L_MODE_JMP
; ;
;L_CCIR656:
; MOV A,0FH
; ANDM A,R_FLIP
; MOV A,70H
; ORM A,R_FLIP
;
; mov a,4
; mov r_cmdaddr,a
; mov a,R_FLIP
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,6
; mov r_cmdaddr,a
; mov a,016H
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,3 ;3 ;BRIGHT
; mov r_cmdaddr,a
; mov a,2eh ;R_BRIGHT
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,13 ;CONSTAST
; mov r_cmdaddr,a
; mov a,4bh
; mov r_cmddata,a
;
;
;
; JMP L_MODE_COM
;;
;L_UPS051:
; MOV A,0FH
; ANDM A,R_FLIP
; ;MOV A,70H
; ;ORM A,R_FLIP
;
; mov a,4
; mov r_cmdaddr,a
; mov a,R_FLIP
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,7
; mov r_cmdaddr,a
; mov a,0F1H
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; JMP L_MODE_COM
;;
;L_UPS052:
; MOV A,0FH
; ANDM A,R_FLIP
; MOV A,10H
; ORM A,R_FLIP
;
; mov a,4
; mov r_cmdaddr,a
; mov a,R_FLIP
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; ;
; JMP L_MODE_COM
;;
;
;
;;
;
;L_MODE_COM:
; ;
; mov a,8
; mov r_cmdaddr,a
; mov a,0C0H
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,5
; mov r_cmdaddr,a
; mov a,47H
; mov r_cmddata,a
; call f_auopanelcmd
; ;
; mov a,12 ;CONSTAST
; mov r_cmdaddr,a
; mov a,00100110b
; mov r_cmddata,a
; call f_auopanelcmd
;
;
; ;
;L_MODE_COM1:
; ;mov a,14 ;CONSTAST
; ;mov r_cmdaddr,a
; ;mov a,R_CONSTAST_R
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;;
; ;mov a,15 ;CONSTAST
; ;mov r_cmdaddr,a
; ;mov a,R_BRIGHT_R
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;;
; ;mov a,16 ;CONSTAST
; ;mov r_cmdaddr,a
; ;mov a,R_CONSTAST_B
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;;
; ;mov a,17 ;CONSTAST
; ;mov r_cmdaddr,a
; ;mov a,R_BRIGHT_B
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;
; ;mov a,3 ;3 ;BRIGHT
; ;mov r_cmdaddr,a
; ;mov a,R_BRIGHT ;R_BRIGHT
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;;
; ;mov a,13 ;CONSTAST
; ;mov r_cmdaddr,a
; ;mov a,R_CONSTAST
; ;mov r_cmddata,a
; ;call f_auopanelcmd
; ;
;
;
;
; ;set b_first
;
; JMP L_CHKKEY_LOOP
; ;
;****************************
;IMAGE FLIP SHIFT
;****************************
L_FLIP:
CLR R_PRESS_SEL
CLR R_PRESS_DELAY
MOV A,00000011B
AND A,R_FLIP
XOR A,00000011B
SNZ z
JMP L_FLIP1
MOV A,11111100B
ANDM A,R_FLIP
JMP L_FLIP2
;
L_FLIP1:
INC R_FLIP
L_FLIP2:
mov a,4
mov r_cmdaddr,a
mov a,R_FLIP
mov r_cmddata,a
call f_auopanelcmd
JMP L_CHKKEY_LOOP
;
;*****************************************************************************************************
f_Tvp5150Cmd:
MOV A,2
MOV R_TIMES,A
f_Tvp5150Cmd_LOOP:
CLR WDT
call f_iicStart
mov a,TVP5150WrAddr
call f_iicTxByte
mov a,r_CmdAddr
call f_iicTxByte
mov a,r_CmdData
call f_iicTxByte
set pTvpSclC
jmp $+1
snz pTvpScl
jmp $-1
set pTvpScl
clr pTvpSclC
call f_iicStop
mov a,1
call f_delay1ms
SDZ R_TIMES
JMP f_Tvp5150Cmd_LOOP
ret
f_AuoPanelCmd:
mov a,2
mov r_times,a
;
;snz b_first
;jmp l_panelcmd_loop
;clr wdt
;sz b_vsync
;jmp $-2
;;
;mov a,1
;call f_delay1msa
;nop
;clr wdt
;snz b_vsync
;jmp $-2
l_panelcmd_loop:
clr wdt
clr pTftCS
jmp $+1
mov a,r_CmdAddr
call f_PanelCmdByte
mov a,r_CmdData
call f_PanelCmdByte
jmp $+1
set pTftCS
;mov a,1
;call f_delay1ms
;jmp $+1
;jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
sdz r_times
jmp l_panelcmd_loop
;clr wdt
;sz b_vsync
;jmp $-2
;set pTftCS
ret
f_iicMnack:
clr pTvpSdaC
set pTvpSda
jmp $+1
set pTvpScl
jmp $+1
jmp $+1
jmp $+1
jmp $+1
clr pTvpSCL
jmp $+1
jmp $+1
jmp $+1
jmp $+1
ret
;读8位数据存入A中
f_iicRxbyte:
mov a,08h
mov r_Temp,a
set pTvpSdaC
clr acc
l_in_byte_loop:
set pTvpScl
jmp $+1
sz pTvpSda
set acc.0
rl acc
jmp $+1
jmp $+1
jmp $+1
jmp $+1
clr pTvpScl
jmp $+1
jmp $+1
jmp $+1
jmp $+1
sdz r_Temp
jmp l_in_byte_loop
ret
;待写数据在A中
f_iicTxByte:
clr r_Temp
set r_Temp.3
clr pTvpSdaC
l_out_byte_loop:
clr pTvpScl
sz acc.7 ;2
set pTvpSda
snz acc.7 ;2
clr pTvpSda
rl acc ;1
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
set pTvpScl ;1
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
sdz r_Temp ;2
jmp l_out_byte_loop
clr pTvpScl
jmp $+1 ;2
set pTvpSdaC
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
set pTvpScl
l_out_byte_ack:
IFNDEF __DEBUG__
sz pTvpSda
jmp l_out_byte_ack
ENDIF
jmp $+1 ;2
jmp $+1 ;2
jmp $+1 ;2
clr pTvpScl
clr pTvpSdaC
ret
;====================================================================
;iic start condition
;====================================================================
f_iicStart:
clr pTvpScl
clr pTvpSclC
set pTvpSda
clr pTvpSdaC
jmp $+1
jmp $+1
jmp $+1
set pTvpScl
jmp $+1
jmp $+1
jmp $+1
jmp $+1
clr pTvpSda
jmp $+1
jmp $+1
jmp $+1
jmp $+1
clr pTvpScl
ret
;====================================================================
;iic stop condition
;====================================================================
f_iicStop:
clr pTvpSda
clr pTvpSdaC
jmp $+1
jmp $+1
jmp $+1
set pTvpScl
jmp $+1
jmp $+1
jmp $+1
jmp $+1
set pTvpSda
jmp $+1
jmp $+1
jmp $+1
jmp $+1
clr pTvpScl
jmp $+1
ret
;********************************************************************
;AUO TFT panel command
;********************************************************************
f_PanelCmdByte:
clr r_temp
set r_temp.3
l_PanelCmdLoop:
clr pTftSCL
sz acc.7
set pTftSDA ;1
snz acc.7 ;2
clr pTftSDA
jmp $+1
jmp $+1
jmp $+1
jmp $+1
set pTftSCL ;1
rl acc
jmp $+1
jmp $+1
jmp $+1
jmp $+1
sdz r_temp
jmp l_PanelCmdLoop
ret
;;****************************************************
;Delay 0.5ms*acc
;data=[(1ms*3.579mhz/4)/7]+256
;****************************************************
f_Delay1ms:
mov r_DelayTime,a
l_OuterLoop1:
mov a,07Fh ;FA
mov r_Counter0,a
mov a,001h ;high level 1
mov r_Counter1,a
;
l_Loop1:
clr wdt
;clr wdt2
nop
dec r_Counter0
sz z
sdz r_Counter1
jmp l_Loop1
sdz r_DelayTime
jmp l_OuterLoop1
nop
ret
;;
;;;****************************************************
;;Delay 0.5ms*acc
;;data=[(1ms*3.579mhz/4)/7]+256
;;****************************************************
;f_Delay1msa:
; mov r_DelayTime,a
;l_OuterLoop1a:
; mov a,07Fh ;FA
; mov r_Counter0,a
; mov a,001h ;high level 1
; mov r_Counter1,a
; ;
;l_Loop1a:
; clr wdt
; snz b_vsync
; jmp l_OuterLoop1a
; nop
; dec r_Counter0
; sz z
; sdz r_Counter1
; jmp l_Loop1a
; sdz r_DelayTime
; jmp l_OuterLoop1a
; nop
; ret
;;
;****************************
;Scan PortA to get key code
;2 output(GND~pa7) 3 input(pB0~pB2)
;out:r_keycode(1~127),=0 no key,r_keycode.7=1 release r_keycode.7=0 press down
;****************************
F_GETKEY:
CLR WDT
;CLR WDT2
SET R_KEYCODE
SNZ B_DEBOUNCE
JMP L_SCAN_SCANKEY
SZ R_DEBOUNCETIME
RET
JMP L_SCAN_SCANKEY
L_SCAN_SCANKEY:
;MOV A,0FFH
;MOV PB,A ;INPUT
;clr bp
MOV A,D_SCAN_KEYBUFFER
MOV MP0,A
CLR R_KEYCODE
;MOV A,R_PABUF ;SET PA7
;OR A,10000000B
;MOV R_PABUF,A
;MOV PA,A
SET PB0
SET PB1
;SET PB2
CALL L_CONTINUEWAIT
MOV A,R_PORT_TEMP
XOR A,R0
SNZ Z
JMP L_SCAN_DECODE
;
SZ R0
JMP L_Scan_NoKeyEvent
;
INC MP0 ;SCAN PB0
MOV A,3
ADDM A,R_KEYCODE
;*********************
set t_Scan_Temp1
clr t_Scan_Temp1.0
l_Scan_GetKeyLoop:
MOV A,11111100B
ANDM A,PB
MOV A,00000011B
AND a,t_Scan_Temp1
ORM A,PB
rl t_Scan_Temp1
;*************
CALL L_CONTINUEWAIT
;
;SET PB0
;
MOV A,R_PORT_TEMP
XOR A,R0
SNZ Z
JMP L_SCAN_DECODE
;
inc mp0
mov a,3
addm a,r_KeyCode
sz t_Scan_Temp1.2
jmp l_Scan_GetKeyLoop
L_Scan_NoKeyEvent:
SET r_keycode
L_SCANKEYFIN:
SET PB0
SET PB1
;SET PB2
;MOV A,0FFH
;MOV PB,A ;INPUT
clr wdt
;CLR WDT2
ret
L_SCAN_DECODE:
;MOV A,R_PABUF
;OR A,10000000B
;MOV R_PABUF,A
;MOV PA,A ;SET PA7
L_SCAN_INDEBOUNCEING:
CLR T_SCAN_TEMP1
SET T_SCAN_TEMP1.0
L_SCAN_NEXTBIT:
CLR WDT
SZ ACC.0
JMP L_SCAN_DEBOUNCEEND
RR ACC
INC R_KEYCODE
RL T_SCAN_TEMP1
SNZ T_SCAN_TEMP1.3
JMP L_SCAN_NEXTBIT
JMP L_SCAN_NOKEYEVENT
;
L_SCAN_DEBOUNCEEND:
SZ B_DEBOUNCE
JMP L_SCAN_DEBOUNCEEND2
L_SCAN_INTODEBOUNCE:
MOV A,R_KEYCODE
MOV R_KEYCODEBK,A
MOV A,D_DEBOUNCETIME
MOV R_DEBOUNCETIME,A
SET B_DEBOUNCE
JMP L_Scan_NoKeyEvent
L_SCAN_DEBOUNCEEND2:
CLR B_DEBOUNCE
MOV A,R_KEYCODE
XOR A,R_KEYCODEBK
SNZ Z
JMP L_SCAN_NOKEYEVENT
L_SCAN_GETKEYCODE:
;INC R_KEYCODE
L_SCAN_GETKEYCODE6:
MOV A,R_KEYCODE
SUB A,12
SZ C
JMP L_SCAN_NOKEYEVENT
;
;MOV A,R_KEYCODE
;ADD A,LOW(T_KEYTAB)
;CALL L_READTAB
;MOV R_KEYCODE,A
;
MOV A,T_SCAN_TEMP1
AND A,R0
SZ ACC
SET R_KEYCODE.7 ;KEY RELEASE
MOV A,T_SCAN_TEMP1
XORM A,R0
;
SNZ R_KEYCODE.7
JMP L_SCANKEYFIN
CLR R_PRESS_SEL
CLR R_PRESS_DELAY
JMP L_SCAN_NOKEYEVENT
;JMP L_SCANKEYFIN
L_CONTINUEWAIT:
CLR WDT
;CLR WDT2
;MOV A,0FFH
;MOV PB,A ;INPUT
MOV A,PA
CPL ACC
MOV R_PORT_TEMP,A
MOV A,00000111B
ANDM A,R_PORT_TEMP
MOV A,5
NOP
SDZ ACC
JMP $-2
;MOV A,0FFH
;MOV PB,A ;INPUT
MOV A,PA
MOV R_TEMP,A
MOV A,11111000B
OR A,R_TEMP
CPL ACC
XOR A,R_PORT_TEMP
SNZ Z
JMP L_CONTINUEWAIT
RET
;
ORG 300H
;
;reg address in r_CmdAddr
;f_ReadTvpReg:
; call f_iicStart
; mov a,TVP5150WrAddr
; call f_iicTxByte
; mov a,r_CmdAddr ;status register #5
; call f_iicTxByte
; call f_iicStop
; mov a,1
; call f_delay1ms
; call f_iicStart
; mov a,TVP5150RdAddr
; call f_iicTxByte
; call f_iicRxByte
; call f_iicMnack
; jmp f_iicStop
;tab_page .section page 'code'
f_GetPageData:
tabrdc acc
ret
;T_PanelParam: ;high byte only 6 bit valid when using ht48r05!!
;T_Saturation:
;T_Contrast:
; dw 48+13*00+100h*0
; dw 48+13*01+100h*1 ;0001(M) NTSC ITU-R BT.601
; dw 48+13*02+100h*0
; dw 48+13*03+100h*0 ;0011(B, G, H, I, N) PAL ITU-R BT.601
; dw 48+13*04+100h*0
; dw 48+13*05+100h*0 ;0101(M) PAL ITU-R BT.601
; dw 48+13*06+100h*0
; dw 48+13*07+100h*0 ;0111 PAL-N ITU-R BT.601
; dw 48+13*08+100h*0
; dw 48+13*09+100h*1 ;1001 NTSC 4.43 ITU-R BT.601
; dw 48+13*10+100h*0
; dw 48+13*11+100h*0 ;1011 SECAM ITU-R BT.601
; dw 48+13*12+100h*0
; dw 48+13*13+100h*0
; dw 48+13*14+100h*0
; dw 48+13*15+100h*0
T_Tvp5150Cmd: ;addr,cmd
dw 005h,001h ;RESET TVP5051
dw 000h,000h
dw 00fh,00ah
dw 015h,015h
dw 003h,06fh
dw 0c3h,00ch
;dw 00ch,0b0h ;contrast
;dw 00ah,0b0h ;Color saturation
;dw 009h,0a5h ;brightness
;2005-11-28 15:09 comment by John
;dw 00ch,08bh ;contrast
;dw 00ah,0b0h ;Color saturation
;dw 009h,0a5h ;brightness
;2005-11-28 15:09 add by John
;dw 00ch,87 ;contrast
;dw 00ah,0b0h ;Color saturation
;dw 009h,113 ;brightness
;dw 0dh,00000111b
dw 005h,000h ;TVP5051
T_Tvp5150CmdEnd:
T_AuoPanelCmd: ;address+command
dw 5,16h
dw 4,7Bh ;7b
dw 6,16h
dw 3,2eh
dw 13,4bh
dw 8,0c0h
dw 5,47h
DW 12,11100110b
T_AuoPanleCmdEnd:
;;
;
;
; ;dw 5,16h
; ;dw 4,0ah ;
;T_UPS051:
; dw 7,0F1h
; dw 8,0C0h
; dw 5,47h
;T_UPS051end:
;;
;
; ;dw 5,16h
; ;dw 4,1ah ;
;T_UPS052:
; dw 8,0C0h
; dw 5,47h
;T_UPS052end:
;if 0
;dw
;endif
l_keyMap:
mov a,r_keyCode
and a,0fh
addm a,pcl
JMP L_ADJBRIGHTNESS_DEC
jmp l_AdjBrightness_ADD
jmp l_AdjConStast_DEC
JMP L_ADJCONSTAST_ADD
;JMP L_MODE
JMP L_FLIP
;JMP L_ADJBRIGHT_R
;JMP L_ADJBRIGHT_B
JMP L_ADJCOLOR_DEC
JMP L_ADJCOLOR_ADD
JMP L_ADJHUE_DEC
JMP L_ADJHUE_ADD
;JMP L_ADJCONSTAST_R
;JMP L_ADJCONSTAST_B
;NOP
;NOP
;JMP 00H
;
;L_MODE_JMP:
; MOV A,R_MODE
; ADDM A,PCL
; JMP L_CCIR656
; JMP L_UPS051
; JMP L_UPS052
;
;NOP
;JMP 00H
L_PRESS_JMP:
DECA R_PRESS_SEL
ADDM A,PCL
JMP L_ADJBRIGHTNESS_DEC1
JMP L_ADJBRIGHTNESS_ADD1
JMP L_ADJCONSTAST_DEC1
JMP L_ADJCONSTAST_ADD1
JMP L_ADJCOLOR_DEC1
JMP L_ADJCOLOR_ADD1
JMP L_ADJHUE_DEC1
JMP L_ADJHUE_ADD1
;JMP L_ADJCONSTAST_R1
;JMP L_ADJCONSTAST_B1
;NOP
;JMP 00H
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -