📄 r08cnvlcdclk.ms
字号:
;
GetKey_On:
; for testing
.stabn 2005, LineInfo
LD X,(1)
.stabn 2006, LineInfo
FAN MX,(1)
.stabn 2007, LineInfo
JP nz,ProgStartLp ; still key hold
.stabn 2008, LineInfo
AND MX,0x0f-(2) ; process the key & clr the flag
.stabn 2010, LineInfo
ld x,(0x31)
.stabn 2011, LineInfo
fan mx,0x0f
.stabn 2012, LineInfo
jp nz,GetK0 ; jmp if not clock mode
.stabn 2014, LineInfo
ld y,(0x0EB) ; set D_Out Hi after sending
.stabn 2015, LineInfo
or my,0b0011 ; turn on power to samsung clk_in default high
.stabn 2016, LineInfo
add mx,1
.stabn 2017, LineInfo
CALl LCDClr
.stabn 2018, LineInfo
LD X,(0x16)
.stabn 2019, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
.stabn 2020, LineInfo
call Dly125ms
.stabn 2021, LineInfo
call Dly125ms
.stabn 2022, LineInfo
call ReloadCommVar
.stabn 2023, LineInfo
ld x,(0x30)
.stabn 2024, LineInfo
ld mx,0x0d
.stabn 2025, LineInfo
ld x,(0x1d)
.stabn 2026, LineInfo
ld mx,0
.stabn 2027, LineInfo
jp ProgStart ; to show Clock
GetK0:
.stabn 2030, LineInfo
LD (M4),B ;
.stabn 2031, LineInfo
LD X,(0x16)
.stabn 2032, LineInfo
OR MX,(4)
.stabn 2033, LineInfo
jp ProgStartLp
GetKey_ml:
.stabn 2038, LineInfo
LD X,(1)
.stabn 2039, LineInfo
FAN MX,(1)
.stabn 2040, LineInfo
JP nz,ProgStartLp ; still key hold
.stabn 2041, LineInfo
AND MX,0x0f-(2) ; process the key & clr the flag
;
; process the ml key here after
; LD SendData,B ;
; LD X,AppFlags
; OR MX,ReqToSendFlag
; JP ProgStartLp
.stabn 2050, LineInfo
jp GetK0
;
; process the Off key here after
GetKey_Off:
; LD SendData,B ;
; LD X,AppFlags
; OR MX,ReqToSendFlag
.stabn 2058, LineInfo
ld x,(0x31)
.stabn 2059, LineInfo
cp mx,(0)
.stabn 2060, LineInfo
jp z,ProgStartLp
TurnOffPwr:
.stabn 2062, LineInfo
ld a,0
.stabn 2063, LineInfo
ld (M3),a
.stabn 2064, LineInfo
ld x,(0x31)
.stabn 2065, LineInfo
ld mx,(0) ; Reset modeOpt if not valid
.stabn 2066, LineInfo
CALl LCDClr
.stabn 2067, LineInfo
ld y,(0x0EB) ; set D_Out Hi after sending
.stabn 2068, LineInfo
and my,0b0010 ; turn off POWER_CONTROL
.stabn 2069, LineInfo
jp ProgStart
;
GetKey_Kg:
.stabn 2073, LineInfo
LD Y,(0x31)
.stabn 2074, LineInfo
CP MY,(0)
; JP nz,WeigthKey_Kg ; br if not clock mode
.stabn 2076, LineInfo
jp nz,GetKey_ml ; br if not clock mode
.stabn 2078, LineInfo
ld X,(1)
.stabn 2079, LineInfo
fan MX,(1)
.stabn 2080, LineInfo
jp nz,GetKey_Kg0 ; br to check the hold time
.stabn 2082, LineInfo
AND MX,0x0f-(2) ; ignor the key
.stabn 2083, LineInfo
LD a,0
.stabn 2084, LineInfo
ld (M0),a ; reset timer
.stabn 2085, LineInfo
jp ProgStartLp
;
; starting from here if the key hold time > 2 seconds
;
GetKey_Kg0:
.stabn 2090, LineInfo
ld a,(M0)
.stabn 2091, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2092, LineInfo
jp nz,ProgStartLp ; br if Hold time < 2 seconds
.stabn 2093, LineInfo
ld x,(1)
.stabn 2094, LineInfo
and mx,0x0f-(2) ; clear the flag
;
; Time setting mode from here on
.stabn 2098, LineInfo
ld a,(0)
.stabn 2099, LineInfo
ld (M3),a ; clr key code
.stabn 2100, LineInfo
ld X,(1)
.stabn 2101, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 2102, LineInfo
ld x,(0x12)
.stabn 2103, LineInfo
ld y,(0x18)
.stabn 2104, LineInfo
call Copy2Byte
.stabn 2105, LineInfo
calz DspColonOn
TimeSet:
.stabn 2107, LineInfo
ld X,(1)
.stabn 2108, LineInfo
FAN MX,(4)
.stabn 2109, LineInfo
jp nz,TimeSett0
.stabn 2110, LineInfo
ld y,(0x1a)
.stabn 2111, LineInfo
calz FlashHour
TimeSett0:
.stabn 2113, LineInfo
call ChkTimer
.stabn 2115, LineInfo
LD A,(M3)
.stabn 2116, LineInfo
CP A,(0b1101)
.stabn 2117, LineInfo
JP z,UTimeSet0 ;; jmp to setting minute
.stabn 2118, LineInfo
CP A,(0b1011)
.stabn 2119, LineInfo
jp z,TimeSet1 ; jmp to setting increase hour
.stabn 2120, LineInfo
jp TimeSet
TimeSet1:
.stabn 2123, LineInfo
ld X,(1)
; OR MX,DisFlashFlag
.stabn 2125, LineInfo
fan MX,(1)
.stabn 2126, LineInfo
jp nz,TimeSet2 ; br to check the hold time
.stabn 2128, LineInfo
AND MX,0x0f-(2) ; clr the key
; remark by hcy 03-11-29 11:44
; AND MX,0fh-DisFlashFlag ; clr the key
.stabn 2131, LineInfo
LD a,0
.stabn 2132, LineInfo
ld (M0),a ; reset timer
.stabn 2133, LineInfo
ld (M3),a ; clr the key code
HTimeSet:
.stabn 2135, LineInfo
call IncSetHour
; add by hcy 03-11-29 11:33
.stabn 2137, LineInfo
call SetTmr1s
.stabn 2138, LineInfo
jp TimeSet
TimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2143, LineInfo
OR MX,(4)
.stabn 2144, LineInfo
ld a,(M0)
.stabn 2145, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2146, LineInfo
jp nz,TimeSet ; br if Hold time < 2 seconds
.stabn 2147, LineInfo
ld a,0x0d
.stabn 2148, LineInfo
ld (M0),a ;
.stabn 2149, LineInfo
jp HTimeSet
; call IncSetHour ;
; jp TimeSet
UTimeSet0:
.stabn 2153, LineInfo
ld X,(1)
.stabn 2154, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 2155, LineInfo
ld a,(0)
.stabn 2156, LineInfo
ld (M3),a ; clr key code
.stabn 2157, LineInfo
ld y,(0x1a)
.stabn 2158, LineInfo
calz DspHour
.stabn 2159, LineInfo
calz DspColonOn
TimeSet0:
; ld y,TmpRTCHourL
; calz DspHour
; calz DspColonOn
.stabn 2164, LineInfo
ld X,(1)
.stabn 2165, LineInfo
FAN MX,(4)
.stabn 2166, LineInfo
jp nz,MTime0
.stabn 2168, LineInfo
ld y,(0x18)
.stabn 2169, LineInfo
calz FlashMinute
MTime0:
.stabn 2171, LineInfo
call ChkTimer
.stabn 2173, LineInfo
LD A,(M3)
.stabn 2174, LineInfo
CP A,(0b1101)
.stabn 2175, LineInfo
JP z,MTimeSet0 ;; jmp to setting minute
.stabn 2176, LineInfo
CP A,(0b1011)
.stabn 2177, LineInfo
jp z,MTimeSet1 ; jmp to setting increase hour
.stabn 2178, LineInfo
jp TimeSet0
MTimeSet1:
.stabn 2181, LineInfo
ld X,(1)
; OR MX,DisFlashFlag
.stabn 2183, LineInfo
fan MX,(1)
.stabn 2184, LineInfo
jp nz,MTimeSet2 ; br to check the hold time
.stabn 2186, LineInfo
AND MX,0x0f-(2) ; clr the key
; remark by hcy 03-11-29 11:44
; AND MX,0fh-DisFlashFlag ; clr the key
.stabn 2189, LineInfo
LD a,0
.stabn 2190, LineInfo
ld (M0),a ; reset timer
.stabn 2191, LineInfo
ld (M3),a ; clr the key code
HTimeSet0:
.stabn 2193, LineInfo
call IncSetMinute
; add by hcy 03-11-29 11:40
.stabn 2195, LineInfo
call SetTmr1s
.stabn 2196, LineInfo
jp TimeSet0
MTimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2202, LineInfo
OR MX,(4)
.stabn 2203, LineInfo
ld a,(M0)
.stabn 2204, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2205, LineInfo
jp nz,TimeSet0 ; br if Hold time < 2 seconds
.stabn 2206, LineInfo
ld a,0x0d
.stabn 2207, LineInfo
ld (M0),a ;
.stabn 2208, LineInfo
jp HTimeSet0
; call IncSetMinute ;
; jp TimeSet0
MTimeSet0:
; ld X,RegKeyFlags
; and mx,0fh-TimeFormatFlag ; default is 12 hour
.stabn 2218, LineInfo
ld a,(0)
.stabn 2219, LineInfo
ld (M3),a ; clr key code
.org 0x300
TimeSet4:
.stabn 2228, LineInfo
calz FlashTimeFormat
.stabn 2229, LineInfo
call ChkTimer
.stabn 2231, LineInfo
LD A,(M3)
.stabn 2232, LineInfo
CP A,(0b1101)
.stabn 2233, LineInfo
JP z,TTimeSet0 ;; jmp to exit setting
.stabn 2234, LineInfo
CP A,(0b1011)
.stabn 2235, LineInfo
jp z,TTimeSet1 ; jmp to toggle time format
.stabn 2236, LineInfo
jp TimeSet4
TTimeSet1:
.stabn 2239, LineInfo
ld X,(1)
.stabn 2240, LineInfo
fan MX,(1)
.stabn 2241, LineInfo
jp nz,TimeSet4 ; br to check the hold time
.stabn 2243, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 2244, LineInfo
ld a,0
.stabn 2245, LineInfo
ld (M3),a
.stabn 2246, LineInfo
ld x,(1)
.stabn 2247, LineInfo
xor mx,(8)
.stabn 2248, LineInfo
calz DspTimeFormat
.stabn 2249, LineInfo
jp TimeSet4
; ORG 320H
TTimeSet0:
.stabn 2255, LineInfo
ld x,(0x18)
.stabn 2256, LineInfo
ld y,(0x12)
.stabn 2257, LineInfo
call Copy2Byte ;
.stabn 2258, LineInfo
ld x,(0x10)
.stabn 2259, LineInfo
call ClrByte
.stabn 2260, LineInfo
ld y,(0x14)
.stabn 2261, LineInfo
calz DspHour
.stabn 2262, LineInfo
ld y,(0x12)
.stabn 2263, LineInfo
calz DspMinute
.stabn 2264, LineInfo
ld a,0
.stabn 2265, LineInfo
ld (M0),a
.stabn 2266, LineInfo
ld X,(1)
.stabn 2267, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 2268, LineInfo
jp ProgStartLp
;
; ORG 300h
;WeigthKey_Kg:
; LD X,RegKeyFlags
; FAN MX,KeyHoldFlag
; JP nz,ProgStartLp ; still key hold
; AND MX,0fh-NewKeyFlag ; process the key & clr the flag
;;
;; process the Kg key here after
; LD SendData,B ;
; LD X,AppFlags
; OR MX,ReqToSendFlag
; JP ProgStartLp
; org 340h
;
;-------------------------------------
; Cate : Communication
; By : Kwan
; Func : SendKey
; Desc : Send the key code to Samsung
; I/P :
; O/P :
; Destroy:
; Note : 1. Wait for the D_Clk=low to place the
; data bit to D_Out
; 2. Wait for the D_Clk = hi again
; 3. Wait the D_Clk=low to place the data
; to D_Out until all 4 bit send
; 4. the sync nibble (0AH) will be sent
; first and followed by the keycode
; 5. syn-nibble (=A) will be sent first and
; followed by a 4 bit data --> total 8 bits
;SendKey:
;; call SendSynBit
; LD A,0ah
; CALL Send4Bit
;; Check the time out if neccessary
; LD X,RegKeyCode
; LD A,MX
; CALL Send4Bit
;;
; ld y,RPort ; set D_Out Hi after sending
; or my,0011b
;; Check the time out if neccessary
; RET
;
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : send 4 data bits (LSB first)
; Desc : Send4Bit
; I/P :
; O/P :
; Destroy:
; Note :
Send4Bit:
.stabn 2326, LineInfo
LD X,(0x17)
.stabn 2327, LineInfo
LD MX,4 ; 4 bits
Send4BitLp1:
.stabn 2329, LineInfo
LD Y,(0x0E3)
Send4BitLp0:
.stabn 2331, LineInfo
FAN MY,0b0100 ; wait for D_Clk Hi
.stabn 2332, LineInfo
JP z,Send4BitLp0
;
.stabn 2334, LineInfo
ld y,(0x0EB)
.stabn 2335, LineInfo
RRC A
.stabn 2336, LineInfo
JP C,Send4BitHi
.stabn 2337, LineInfo
and my,0b0001
.stabn 2338, LineInfo
jp Send4Bit0
Send4BitHi:
; OR my,0010b
.stabn 2341, LineInfo
or my,0b0011
Send4Bit0:
.stabn 2344, LineInfo
LD Y,(0x0E3)
Send4BitLp2:
.stabn 2346, LineInfo
FAN MY,0b0100 ; wait for D_Clk Lo
.stabn 2347, LineInfo
JP nz,Send4BitLp2
.stabn 2349, LineInfo
Add mx,0x0f ; dec commcount
.stabn 2350, LineInfo
JP nz,Send4BitLp1
;
xSend4Bit:
.stabn 2353, LineInfo
ret
;-------------------------------------
; Cate : Delay
; By : Hcy
; Func : delay 20 ms
; Desc : Dly20ms
; I/P : 32*17*0.03125 = 17ms
; O/P : --
; Destroy: y
; Note :
;Dly17ms:
; ld y,0
;Dlym1:
; inc y
; cp yh,02h
; jp nz,Dlym1
; ret
;;-------------------------------------
; Cate : KeyBoard
; By : Kwan
; Func : Key board scan, set NewKey flag if new key found
; set keyhold flag if the new key is still in-held
; Desc :
; I/P :
; O/P :
; Destroy:
; Note : After calling subr, the newkey flag should be
; checked.
; For MaB key, the Keyholdkey should be cleared before
; activating the corresponding function
; For MbB key, no need to check the KeyHoldFlag before
; activating the corr. function
; For MaH, the hold time must be checked to be 255 before
; activating the corr. function.
;
KeyScan:
.stabn 2391, LineInfo
ld b,(0b0111)
.stabn 2392, LineInfo
ld x,(0x0E3)
.stabn 2393, LineInfo
fan mx,(1)
.stabn 2394, LineInfo
jp z,KeyFound0 ; br if Key_on is preseed (=1)
.stabn 2395, LineInfo
call Dly17ms
.stabn 2396, LineInfo
fan mx,(1)
.stabn 2397, LineInfo
jp nz,KeyFound
KeyFound0:
.stabn 2399, LineInfo
ld b,(0b1110)
.stabn 2400, LineInfo
fan mx,(2)
.stabn 2401, LineInfo
jp z,KeyFound1 ; br if Key_off is preseed
.stabn 2402, LineInfo
call Dly17ms
.stabn 2403, LineInfo
fan mx,(2)
.stabn 2404, LineInfo
jp nz,KeyFound
;
KeyFound1:
.stabn 2407, LineInfo
ld b,(0b1101)
.stabn 2408, LineInfo
ld x,(0x0ED)
.stabn 2409, LineInfo
fan mx,(1)
.stabn 2410, LineInfo
jp z,KeyFound2 ; br if Key_Kg is preseed
.stabn 2411, LineInfo
call Dly17ms
.stabn 2412, LineInfo
fan mx,(1)
.stabn 2413, LineInfo
jp nz,KeyFound
;
KeyFound2:
.stabn 2416, LineInfo
ld b,(0b1011)
.stabn 2417, LineInfo
fan mx,(2)
.stabn 2418, LineInfo
jp z,KeyFound3 ; br if Key_ml is preseed
.stabn 2419, LineInfo
call Dly17ms
.stabn 2420, LineInfo
fan mx,(2)
.stabn 2421, LineInfo
jp nz,KeyFound
;
KeyFound3:
.stabn 2424, LineInfo
LD X,(1)
.stabn 2425, LineInfo
AND MX, 0x0f-(1)
NotNewKey:
.stabn 2427, LineInfo
RZF ; return with Z=0
.stabn 2428, LineInfo
RET
KeyFound:
.stabn 2430, LineInfo
LD X,(1)
.stabn 2431, LineInfo
FAN MX,(1)
.stabn 2432, LineInfo
JP nz,NotNewKey ; br if not new Key
.stabn 2433, LineInf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -