📄 kclock.ms
字号:
ld x,(0x33)
.stabn 1819, LineInfo
cp mx,(0)
.stabn 1820, LineInfo
jp z,ProgStartLp
TurnOffPwr:
.stabn 1822, LineInfo
ld a,0
.stabn 1823, LineInfo
ld (M3),a
.stabn 1824, LineInfo
ld x,(0x33)
.stabn 1825, LineInfo
ld mx,(0) ; Reset modeOpt if not valid
.stabn 1826, LineInfo
CALl LCDClr
.stabn 1827, LineInfo
ld y,(0x0F3) ; set D_Out Hi after sending
.stabn 1828, LineInfo
and my,0b0010 ; turn off POWER_CONTROL
.stabn 1829, LineInfo
jp ProgStart
;
GetKey_Kg:
.stabn 1833, LineInfo
LD Y,(0x33)
.stabn 1834, LineInfo
CP MY,(0)
; JP nz,WeigthKey_Kg ; br if not clock mode
.stabn 1836, LineInfo
jp nz,GetKey_ml ; br if not clock mode
.stabn 1838, LineInfo
ld X,(1)
.stabn 1839, LineInfo
fan MX,(1)
.stabn 1840, LineInfo
jp nz,GetKey_Kg0 ; br to check the hold time
.stabn 1842, LineInfo
AND MX,0x0f-(2) ; ignor the key
.stabn 1843, LineInfo
LD a,0
.stabn 1844, LineInfo
ld (M0),a ; reset timer
.stabn 1845, LineInfo
jp ProgStartLp
;
; starting from here if the key hold time > 2 seconds
;
GetKey_Kg0:
.stabn 1850, LineInfo
ld a,(M0)
.stabn 1851, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 1852, LineInfo
jp nz,ProgStartLp ; br if Hold time < 2 seconds
.stabn 1853, LineInfo
ld x,(1)
.stabn 1854, LineInfo
and mx,0x0f-(2) ; clear the flag
;
; Time setting mode from here on
.stabn 1858, LineInfo
ld a,(0)
.stabn 1859, LineInfo
ld (M3),a ; clr key code
.stabn 1860, LineInfo
ld X,(1)
.stabn 1861, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 1862, LineInfo
ld x,(0x12)
.stabn 1863, LineInfo
ld y,(0x18)
.stabn 1864, LineInfo
call Copy2Byte
.stabn 1865, LineInfo
calz DspColonOn
TimeSet:
.stabn 1868, LineInfo
ld X,(1)
.stabn 1869, LineInfo
FAN MX,(4)
.stabn 1870, LineInfo
jp nz,TimeSett0
.stabn 1871, LineInfo
ld y,(0x1a)
.stabn 1872, LineInfo
calz FlashHour
TimeSett0:
.stabn 1874, LineInfo
call ChkTimer
.stabn 1876, LineInfo
LD A,(M3)
.stabn 1877, LineInfo
CP A,(0b1101)
.stabn 1878, LineInfo
JP z,UTimeSet0 ;; jmp to setting minute
.stabn 1879, LineInfo
CP A,(0b1011)
.stabn 1880, LineInfo
jp z,TimeSet1 ; jmp to setting increase hour
.stabn 1881, LineInfo
jp TimeSet
TimeSet1:
.stabn 1884, LineInfo
ld X,(1)
; OR MX,DisFlashFlag
.stabn 1886, LineInfo
fan MX,(1)
.stabn 1887, LineInfo
jp nz,TimeSet2 ; br to check the hold time
.stabn 1889, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 1890, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 1891, LineInfo
LD a,0
.stabn 1892, LineInfo
ld (M0),a ; reset timer
.stabn 1893, LineInfo
ld (M3),a ; clr the key code
HTimeSet:
.stabn 1895, LineInfo
call IncSetHour
.stabn 1896, LineInfo
jp TimeSet
TimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 1901, LineInfo
OR MX,(4)
.stabn 1902, LineInfo
ld a,(M0)
.stabn 1903, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 1904, LineInfo
jp nz,TimeSet ; br if Hold time < 2 seconds
.stabn 1905, LineInfo
ld a,0x0d
.stabn 1906, LineInfo
ld (M0),a ;
.stabn 1907, LineInfo
jp HTimeSet
; call IncSetHour ;
; jp TimeSet
UTimeSet0:
.stabn 1911, LineInfo
ld X,(1)
.stabn 1912, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 1913, LineInfo
ld a,(0)
.stabn 1914, LineInfo
ld (M3),a ; clr key code
TimeSet0:
.stabn 1916, LineInfo
ld y,(0x1a)
.stabn 1917, LineInfo
calz DspHour
.stabn 1918, LineInfo
calz DspColonOn
.stabn 1919, LineInfo
ld X,(1)
.stabn 1920, LineInfo
FAN MX,(4)
.stabn 1921, LineInfo
jp nz,MTime0
.stabn 1923, LineInfo
ld y,(0x18)
.stabn 1924, LineInfo
calz FlashMinute
MTime0:
.stabn 1926, LineInfo
call ChkTimer
.stabn 1928, LineInfo
LD A,(M3)
.stabn 1929, LineInfo
CP A,(0b1101)
.stabn 1930, LineInfo
JP z,MTimeSet0 ;; jmp to setting minute
.stabn 1931, LineInfo
CP A,(0b1011)
.stabn 1932, LineInfo
jp z,MTimeSet1 ; jmp to setting increase hour
.stabn 1933, LineInfo
jp TimeSet0
MTimeSet1:
.stabn 1936, LineInfo
ld X,(1)
; OR MX,DisFlashFlag
.stabn 1938, LineInfo
fan MX,(1)
.stabn 1939, LineInfo
jp nz,MTimeSet2 ; br to check the hold time
.stabn 1941, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 1942, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 1943, LineInfo
LD a,0
.stabn 1944, LineInfo
ld (M0),a ; reset timer
.stabn 1945, LineInfo
ld (M3),a ; clr the key code
HTimeSet0:
.stabn 1947, LineInfo
call IncSetMinute
.stabn 1948, LineInfo
jp TimeSet0
MTimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 1954, LineInfo
OR MX,(4)
.stabn 1955, LineInfo
ld a,(M0)
.stabn 1956, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 1957, LineInfo
jp nz,TimeSet0 ; br if Hold time < 2 seconds
.stabn 1958, LineInfo
ld a,0x0d
.stabn 1959, LineInfo
ld (M0),a ;
.stabn 1960, LineInfo
jp HTimeSet0
; call IncSetMinute ;
; jp TimeSet0
MTimeSet0:
; ld X,RegKeyFlags
; and mx,0fh-TimeFormatFlag ; default is 12 hour
.stabn 1966, LineInfo
ld a,(0)
.stabn 1967, LineInfo
ld (M3),a ; clr key code
.org 0x300
TimeSet4:
.stabn 1973, LineInfo
calz FlashTimeFormat
.stabn 1974, LineInfo
call ChkTimer
.stabn 1976, LineInfo
LD A,(M3)
.stabn 1977, LineInfo
CP A,(0b1101)
.stabn 1978, LineInfo
JP z,TTimeSet0 ;; jmp to exit setting
.stabn 1979, LineInfo
CP A,(0b1011)
.stabn 1980, LineInfo
jp z,TTimeSet1 ; jmp to toggle time format
.stabn 1981, LineInfo
jp TimeSet4
TTimeSet1:
.stabn 1984, LineInfo
ld X,(1)
.stabn 1985, LineInfo
fan MX,(1)
.stabn 1986, LineInfo
jp nz,TimeSet4 ; br to check the hold time
.stabn 1988, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 1989, LineInfo
ld a,0
.stabn 1990, LineInfo
ld (M3),a
.stabn 1991, LineInfo
ld x,(1)
.stabn 1992, LineInfo
xor mx,(8)
.stabn 1993, LineInfo
calz DspTimeFormat
.stabn 1994, LineInfo
jp TimeSet4
.org 0x350
TTimeSet0:
.stabn 2000, LineInfo
ld x,(0x18)
.stabn 2001, LineInfo
ld y,(0x12)
.stabn 2002, LineInfo
call Copy2Byte ;
.stabn 2003, LineInfo
ld x,(0x10)
.stabn 2004, LineInfo
call ClrByte
.stabn 2005, LineInfo
ld y,(0x14)
.stabn 2006, LineInfo
calz DspHour
.stabn 2007, LineInfo
ld y,(0x12)
.stabn 2008, LineInfo
calz DspMinute
.stabn 2009, LineInfo
ld a,0
.stabn 2010, LineInfo
ld (M0),a
.stabn 2011, LineInfo
ld X,(1)
.stabn 2012, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 2013, 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 0x370
;
;-------------------------------------
; 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
.stabn 2049, LineInfo
LD A,0x0a
.stabn 2050, LineInfo
CALL Send4Bit
; Check the time out if neccessary
.stabn 2052, LineInfo
LD X,(3)
.stabn 2053, LineInfo
LD A,MX
.stabn 2054, LineInfo
CALL Send4Bit
;
.stabn 2056, LineInfo
ld y,(0x0F3) ; set D_Out Hi after sending
; or my,0010b
.stabn 2058, LineInfo
or my,0b0011
; Check the time out if neccessary
.stabn 2060, LineInfo
RET
;
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : send 4 data bits (LSB first)
; Desc : Send4Bit
; I/P :
; O/P :
; Destroy:
; Note :
Send4Bit:
.stabn 2072, LineInfo
LD X,(0x17)
.stabn 2073, LineInfo
LD MX,4 ; 4 bits
Send4BitLp1:
.stabn 2075, LineInfo
LD Y,(0x0E0)
Send4BitLp0:
.stabn 2077, LineInfo
FAN MY,0b0100 ; wait for D_Clk Hi
.stabn 2078, LineInfo
JP z,Send4BitLp0
;
.stabn 2080, LineInfo
ld y,(0x0F3)
.stabn 2081, LineInfo
RRC A
.stabn 2082, LineInfo
JP C,Send4BitHi
.stabn 2083, LineInfo
and my,0b0001
.stabn 2084, LineInfo
jp Send4Bit0
Send4BitHi:
; OR my,0010b
.stabn 2087, LineInfo
or my,0b0011
Send4Bit0:
.stabn 2090, LineInfo
LD Y,(0x0E0)
Send4BitLp2:
.stabn 2092, LineInfo
FAN MY,0b0100 ; wait for D_Clk Lo
.stabn 2093, LineInfo
JP nz,Send4BitLp2
.stabn 2095, LineInfo
Add mx,0x0f ; dec commcount
.stabn 2096, LineInfo
JP nz,Send4BitLp1
;
xSend4Bit:
.stabn 2099, 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:
.stabn 2111, LineInfo
ld y,0
Dlym1:
.stabn 2113, LineInfo
inc y
.stabn 2114, LineInfo
cp yh,0x02
.stabn 2115, LineInfo
jp nz,Dlym1
.stabn 2116, LineInfo
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 2137, LineInfo
ld b,(0b0111)
.stabn 2138, LineInfo
ld x,(0x0E0)
.stabn 2139, LineInfo
fan mx,(1)
.stabn 2140, LineInfo
jp z,KeyFound0 ; br if Key_on is preseed (=1)
.stabn 2141, LineInfo
call Dly17ms
.stabn 2142, LineInfo
fan mx,(1)
.stabn 2143, LineInfo
jp nz,KeyFound
KeyFound0:
.stabn 2145, LineInfo
ld b,(0b1110)
.stabn 2146, LineInfo
fan mx,(2)
.stabn 2147, LineInfo
jp z,KeyFound1 ; br if Key_off is preseed
.stabn 2148, LineInfo
call Dly17ms
.stabn 2149, LineInfo
fan mx,(2)
.stabn 2150, LineInfo
jp nz,KeyFound
;
KeyFound1:
.stabn 2153, LineInfo
ld b,(0b1101)
.stabn 2154, LineInfo
ld x,(0x0F6)
.stabn 2155, LineInfo
fan mx,(1)
.stabn 2156, LineInfo
jp z,KeyFound2 ; br if Key_Kg is preseed
.stabn 2157, LineInfo
call Dly17ms
.stabn 2158, LineInfo
fan mx,(1)
.stabn 2159, LineInfo
jp nz,KeyFound
;
KeyFound2:
.stabn 2162, LineInfo
ld b,(0b1011)
.stabn 2163, LineInfo
fan mx,(2)
.stabn 2164, LineInfo
jp z,KeyFound3 ; br if Key_ml is preseed
.stabn 2165, LineInfo
call Dly17ms
.stabn 2166, LineInfo
fan mx,(2)
.stabn 2167, LineInfo
jp nz,KeyFound
;
KeyFound3:
.stabn 2170, LineInfo
LD X,(1)
.stabn 2171, LineInfo
AND MX, 0x0f-(1)
NotNewKey:
.stabn 2173, LineInfo
RZF ; return with Z=0
.stabn 2174, LineInfo
RET
KeyFound:
.stabn 2176, LineInfo
LD X,(1)
.stabn 2177, LineInfo
FAN MX,(1)
.stabn 2178, LineInfo
JP nz,NotNewKey ; br if not new Key
.stabn 2179, LineInfo
OR MX,(2)+(1) ; set key flag
.stabn 2180, LineInfo
LD (M3),B
.stabn 2181, LineInfo
SZF ; return with Z-1 if new key MbB
.stabn 2182, LineInfo
RET
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : send synchronize bit(high level)
; Desc : SendSynBit
; I/P :
; O/P :
; Destroy:
; Note :
;SendSynBit:
; LD Y,KPort
;SendSyn0:
; FAN MY,0100b ; check D_Clk Hi
; JP z,SendSyn0 ; wait until D_CLK= Hi
;;
;; Samsung get the acknowledge
; NOP5
; ld x,RPort ; D_clk=Lo
; or my,0010b
;;
;SendSyn1:
; FAN MY,0100b ;
; JP nz,SendSyn0 ; wait until D_CLK= Hi
; ret
; end
;
;
;
;
.stabn 0, FileEnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -