📄 r01clk1.ms
字号:
.stabn 2040, LineInfo
ret
;
;;======================================
; Key handling from here after
;
; Press and hold Kg > 2 seconds to enter the clock setting mode
; the Hour digits will be firstly flashed and use the ekys
; 1. Key_ml to toggle 12/24 mode
; 2. Key_kg to select hour-adjusting
; 3. press the Key_ml to increment the hour
; 4. Press the Key_Kg to confirm the hour and select minute-adjusting
; 5. Press the Key_ml to increment the minute
; 6. Press the Key_Kg to complete the time setting.
;
; Remark: turn off the ADC power in Clock/Clock setting mode
; no colon/second counting during clock setting mode
; clear the second register after setting
;
Main_KeyHandle:
.stabn 2061, LineInfo
LD A,(M3)
.stabn 2062, LineInfo
CP A,(0b0111)
.stabn 2063, LineInfo
JP z,GetKey_On
.stabn 2064, LineInfo
CP A,(0b1101)
.stabn 2065, LineInfo
JP z,GetKey_Kg
.stabn 2066, LineInfo
CP A,(0b1011)
.stabn 2067, LineInfo
JP z,GetKey_ml
.stabn 2068, LineInfo
CP A,(0b1110)
.stabn 2069, LineInfo
JP z,GetKey_Off
.stabn 2070, LineInfo
JP ProgStartLp
;
GetKey_On:
; for testing
.stabn 2075, LineInfo
LD X,(1)
.stabn 2076, LineInfo
FAN MX,(1)
.stabn 2077, LineInfo
JP nz,ProgStartLp ; still key hold
.stabn 2078, LineInfo
AND MX,0x0f-(2) ; process the key & clr the flag
.stabn 2080, LineInfo
ld x,(0x31)
.stabn 2081, LineInfo
fan mx,0x0f
.stabn 2082, LineInfo
jp nz,GetK0 ; jmp if not clock mode
.stabn 2084, LineInfo
ld a,(M9)
.stabn 2085, LineInfo
fan a,0b1111
.stabn 2086, LineInfo
jp nz,ProgStartLp
.stabn 2088, LineInfo
LD Y,(0x0F3)
; 03-11-22 14:04 HCY
.stabn 2090, LineInfo
LD MY,0b0011 ; Power on, CLK_IN default high
; ld y,RPort ; set D_Out Hi after sending
; or my,0011b ; turn on power to samsung clk_in default high
.stabn 2094, LineInfo
add mx,1
.stabn 2095, LineInfo
CALl LCDClr
.stabn 2096, LineInfo
LD X,(0x16)
.stabn 2097, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
.stabn 2098, LineInfo
call Dly125ms
.stabn 2099, LineInfo
call Dly125ms
.stabn 2100, LineInfo
call ReloadCommVar
.stabn 2101, LineInfo
ld x,(0x30)
.stabn 2102, LineInfo
ld mx,0x0d
.stabn 2103, LineInfo
ld x,(0x1d)
.stabn 2104, LineInfo
ld mx,0
.stabn 2105, LineInfo
jp ProgStart ; to show Clock
GetK0:
.stabn 2108, LineInfo
ld b,(M3)
.stabn 2109, LineInfo
LD (M4),B ;
.stabn 2110, LineInfo
LD X,(0x16)
.stabn 2111, LineInfo
OR MX,(4)
.stabn 2112, LineInfo
jp ProgStartLp
GetKey_ml:
.stabn 2117, LineInfo
LD X,(1)
.stabn 2118, LineInfo
FAN MX,(1)
.stabn 2119, LineInfo
JP nz,ProgStartLp ; still key hold
.stabn 2120, 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 2129, LineInfo
jp GetK0
;
; process the Off key here after
GetKey_Off:
; LD SendData,B ;
; LD X,AppFlags
; OR MX,ReqToSendFlag
.stabn 2137, LineInfo
ld x,(0x31)
.stabn 2138, LineInfo
cp mx,(0)
.stabn 2139, LineInfo
jp z,ProgStartLp
TurnOffPwr:
.stabn 2141, LineInfo
ld a,0
.stabn 2142, LineInfo
ld (M3),a
.stabn 2143, LineInfo
ld x,(0x31)
.stabn 2144, LineInfo
ld mx,(0) ; Reset modeOpt if not valid
.stabn 2145, LineInfo
CALl LCDClr
.stabn 2146, LineInfo
ld y,(0x0F3) ; set D_Out Hi after sending
; and my,0010b ; turn off POWER_CONTROL
.stabn 2148, LineInfo
ld my,0b0000 ; turn off power_control ,clk_in is low
; add it by hcy 03-12-4 14:13
.stabn 2151, LineInfo
ld a,4
.stabn 2152, LineInfo
ld (M9),a ;
.stabn 2153, LineInfo
jp ProgStart
;
GetKey_Kg:
.stabn 2157, LineInfo
LD Y,(0x31)
.stabn 2158, LineInfo
CP MY,(0)
; JP nz,WeigthKey_Kg ; br if not clock mode
.stabn 2160, LineInfo
jp nz,GetKey_ml ; br if not clock mode
.stabn 2162, LineInfo
ld X,(1)
.stabn 2163, LineInfo
fan MX,(1)
.stabn 2164, LineInfo
jp nz,GetKey_Kg0 ; br to check the hold time
.stabn 2166, LineInfo
AND MX,0x0f-(2) ; ignor the key
.stabn 2167, LineInfo
call ClrKeyHoldTm
.stabn 2168, LineInfo
jp ProgStartLp
;
; starting from here if the key hold time > 2 seconds
;
GetKey_Kg0:
.stabn 2173, LineInfo
ld a,(M0)
.stabn 2174, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2175, LineInfo
jp nz,ProgStartLp ; br if Hold time < 2 seconds
.stabn 2176, LineInfo
ld x,(1)
.stabn 2177, LineInfo
and mx,0x0f-(2) ; clear the flag
; Time setting mode from here on
; ld a,Key_Nil
; ld KeyCode,a ; clr key code
; ld KeyHoldTm,a
.stabn 2183, LineInfo
ld X,(1)
.stabn 2184, LineInfo
AND MX,0x0f-(4) ; clr the key
.stabn 2185, LineInfo
ld x,(0x12)
.stabn 2186, LineInfo
ld y,(0x18)
.stabn 2187, LineInfo
call Copy2Byte
.stabn 2188, LineInfo
calz DspColonOn
.stabn 2190, LineInfo
ld a,(0)
.stabn 2191, LineInfo
ld (M3),a ; clr key code
.stabn 2192, LineInfo
ld (M0),a
TimeSet:
.stabn 2194, LineInfo
ld X,(1)
.stabn 2195, LineInfo
FAN MX,(4)
.stabn 2196, LineInfo
jp nz,TimeSett0
.stabn 2197, LineInfo
ld y,(0x1a)
.stabn 2198, LineInfo
calz FlashHour
TimeSett0:
.stabn 2200, LineInfo
call ChkTimer
.stabn 2202, LineInfo
LD A,(M3)
.stabn 2203, LineInfo
CP A,(0b1101)
.stabn 2204, LineInfo
JP z,UTimeSet0 ;; jmp to setting minute
.stabn 2205, LineInfo
CP A,(0b1011)
.stabn 2206, LineInfo
jp z,TimeSet1 ; jmp to setting increase hour
.stabn 2207, LineInfo
jp TimeSet
TimeSet1:
.stabn 2210, LineInfo
ld X,(1)
.stabn 2211, LineInfo
fan MX,(1)
.stabn 2212, LineInfo
jp nz,TimeSet2 ; br to check the hold time
.stabn 2214, LineInfo
AND MX,0x0f-(2) ; clr the key
; remark by hcy 03-11-29 11:44
; AND MX,0fh-DisFlashFlag ; clr the key
; LD a,0
; ld KeyHoldTm,a ; reset timer
; ld KeyCode,a ; clr the key code
.stabn 2220, LineInfo
call ClrKeyVar
HTimeSet:
.stabn 2222, LineInfo
call IncSetHour
; add by hcy 03-11-29 11:33
.stabn 2224, LineInfo
call SetTmr1s
.stabn 2225, LineInfo
jp TimeSet
TimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2230, LineInfo
OR MX,(4)
.stabn 2231, LineInfo
ld a,(M0)
.stabn 2232, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2233, LineInfo
jp nz,TimeSet ; br if Hold time < 2 seconds
.stabn 2234, LineInfo
ld a,0x0d
.stabn 2235, LineInfo
ld (M0),a ;
.stabn 2236, LineInfo
jp HTimeSet
; call IncSetHour ;
; jp TimeSet
.org 0x300
UTimeSet0:
.stabn 2244, LineInfo
ld X,(1)
.stabn 2245, LineInfo
AND MX,0x0f-(4) ; clr the key
; ld a,Key_Nil
; ld KeyCode,a ; clr key code
; ld KeyHoldTm,a
.stabn 2249, LineInfo
ld y,(0x1a)
.stabn 2250, LineInfo
calz DspHour
.stabn 2251, LineInfo
calz DspColonOn
.stabn 2253, LineInfo
ld a,(0)
.stabn 2254, LineInfo
ld (M3),a ; clr key code
.stabn 2255, LineInfo
ld (M0),a
TimeSet0:
; ld y,TmpRTCHourL
; calz DspHour
; calz DspColonOn
.stabn 2260, LineInfo
ld X,(1)
.stabn 2261, LineInfo
FAN MX,(4)
.stabn 2262, LineInfo
jp nz,MTime0
.stabn 2264, LineInfo
ld y,(0x18)
.stabn 2265, LineInfo
calz FlashMinute
MTime0:
.stabn 2267, LineInfo
call ChkTimer
.stabn 2269, LineInfo
LD A,(M3)
.stabn 2270, LineInfo
CP A,(0b1101)
.stabn 2271, LineInfo
JP z,MTimeSet0 ;; jmp to setting minute
.stabn 2272, LineInfo
CP A,(0b1011)
.stabn 2273, LineInfo
jp z,MTimeSet1 ; jmp to setting increase hour
.stabn 2274, LineInfo
jp TimeSet0
MTimeSet1:
.stabn 2277, LineInfo
ld X,(1)
; OR MX,DisFlashFlag
.stabn 2279, LineInfo
fan MX,(1)
.stabn 2280, LineInfo
jp nz,MTimeSet2 ; br to check the hold time
.stabn 2282, LineInfo
AND MX,0x0f-(2) ; clr the key
; remark by hcy 03-11-29 11:44
; AND MX,0fh-DisFlashFlag ; clr the key
; LD a,0
; ld KeyHoldTm,a ; reset timer
; ld KeyCode,a ; clr the key code
.stabn 2289, LineInfo
call ClrKeyVar
HTimeSet0:
.stabn 2291, LineInfo
call IncSetMinute
; add by hcy 03-11-29 11:40
.stabn 2293, LineInfo
call SetTmr1s
.stabn 2294, LineInfo
jp TimeSet0
MTimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2300, LineInfo
OR MX,(4)
.stabn 2301, LineInfo
ld a,(M0)
.stabn 2302, LineInfo
cp a,0x0f ; tolerance -1/8 sec
.stabn 2303, LineInfo
jp nz,TimeSet0 ; br if Hold time < 2 seconds
.stabn 2304, LineInfo
ld a,0x0d
.stabn 2305, LineInfo
ld (M0),a ;
.stabn 2306, LineInfo
jp HTimeSet0
MTimeSet0:
.stabn 2309, LineInfo
call ClrKeyVar
.stabn 2310, LineInfo
calz ClrAmPm
; ORG 300H
TimeSet4:
.stabn 2315, LineInfo
calz FlashTimeFormat
.stabn 2316, LineInfo
call ChkTimer
.stabn 2318, LineInfo
LD A,(M3)
.stabn 2319, LineInfo
CP A,(0b1101)
.stabn 2320, LineInfo
JP z,TTimeSet0 ;; jmp to exit setting
.stabn 2321, LineInfo
CP A,(0b1011)
.stabn 2322, LineInfo
jp z,TTimeSet1 ; jmp to toggle time format
.stabn 2323, LineInfo
jp TimeSet4
TTimeSet1:
.stabn 2326, LineInfo
ld X,(1)
.stabn 2327, LineInfo
fan MX,(1)
.stabn 2328, LineInfo
jp nz,TimeSet4 ; br to check the hold time
.stabn 2330, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 2331, LineInfo
call ClrKeyVar
.stabn 2332, LineInfo
ld x,(1)
.stabn 2333, LineInfo
xor mx,(8)
.stabn 2334, LineInfo
calz DspTimeFormat
.stabn 2335, LineInfo
jp TimeSet4
TTimeSet0:
.stabn 2338, LineInfo
ld x,(0x18)
.stabn 2339, LineInfo
ld y,(0x12)
.stabn 2340, LineInfo
call Copy2Byte ;
.stabn 2341, LineInfo
ld x,(0x10)
.stabn 2342, LineInfo
call ClrByte
.stabn 2343, LineInfo
ld y,(0x14)
.stabn 2344, LineInfo
calz DspHour
.stabn 2345, LineInfo
ld y,(0x12)
.stabn 2346, LineInfo
calz DspMinute
.stabn 2347, LineInfo
ld X,(1)
.stabn 2348, LineInfo
AND MX,0x0f-(2) ; clr the key
.stabn 2349, LineInfo
call ClrKeyVar
.stabn 2350, 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 2408, LineInfo
LD X,(0x17)
.stabn 2409, LineInfo
LD MX,4 ; 4 bits
Send4BitLp1:
.stabn 2411, LineInfo
LD Y,(0x0E0)
Send4BitLp0:
.stabn 2413, LineInfo
FAN MY,0b0100 ; wait for D_Clk Hi
.stabn 2414, LineInfo
JP z,Send4BitLp0
;
.stabn 2416, LineInfo
ld y,(0x0F3)
.stabn 2417, LineInfo
RRC A
.stabn 2418, LineInfo
JP C,Send4BitHi
.stabn 2419, LineInfo
and my,0b0001
.stabn 2420, LineInfo
jp Send4Bit0
Send4BitHi:
; OR my,0010b
.stabn 2423, LineInfo
or my,0b0011
Send4Bit0:
.stabn 2426, LineInfo
LD Y,(0x0E0)
Send4BitLp2:
.stabn 2428, LineInfo
FAN MY,0b0100 ; wait for D_Clk Lo
.stabn 2429, LineInfo
JP nz,Send4BitLp2
.stabn 2431, LineInfo
Add mx,0x0f ; dec commcount
.stabn 2432, LineInfo
JP nz,Send4BitLp1
;
xSend4Bit:
.stabn 2435, 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 2473, LineInfo
ld b,(0b0111)
.stabn 2474, LineInfo
ld x,(0x0E0)
.stabn 2475, LineInfo
fan mx,(1)
.stabn 2476, LineInfo
jp z,KeyFound0 ; br if Key_on is preseed (=1)
.stabn 2477, LineInfo
call Dly17ms
.stabn 2478, LineInfo
fan mx,(1)
.stabn 2479, LineInfo
jp nz,KeyFound
KeyFound0:
.stabn 2481, LineInfo
ld b,(0b1110)
.stabn 2482, LineInfo
fan mx,(2)
.stabn 2483, LineInfo
jp z,KeyFound1 ; br if Key_off is presee
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -