📄 kclkr08.ms
字号:
; Func : inc setting minute
; Desc : IncSetMinute
; I/P : --
; O/P : --
; Destroy:
; Note :
IncSetMinute:
.stabn 1148, LineInfo
ld x,(0x18)
.stabn 1149, LineInfo
calz IncByteD
.stabn 1150, LineInfo
ld x,(0x18)
.stabn 1151, LineInfo
calz IsEqu60
.stabn 1152, LineInfo
ld y,(0x18)
.stabn 1153, LineInfo
calz DspMinute
.stabn 1154, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func :
; Desc : CopyByte
; I/P : y(ram address)
; O/P :
; Destroy:
; Note :
CopyByte:
.stabn 1166, LineInfo
ld x,(0x34)
.stabn 1167, LineInfo
ld mx,my
.stabn 1168, LineInfo
inc y
.stabn 1169, LineInfo
inc x
.stabn 1170, LineInfo
ld mx,my ; ram --> dsphourbuf
.stabn 1171, LineInfo
ret
;-------------------------------------
; Cate : Application
; By : Hcy
; Func : -0ch by decimal
; Desc : Sub12D
; I/P : y(address of buffer)
; O/P :
; Destroy:
; Note :
Sub12D:
.stabn 1182, LineInfo
push yl
.stabn 1183, LineInfo
call CopyByte
.stabn 1184, LineInfo
pop yl
.stabn 1185, LineInfo
ld x,(0x34)
.stabn 1186, LineInfo
SET F,0b0100
.stabn 1187, LineInfo
RCF
.stabn 1188, LineInfo
sbc Mx,0x02
.stabn 1189, LineInfo
inc x
.stabn 1190, LineInfo
sbc Mx,0x01
.stabn 1191, LineInfo
RST F,0b1011
.stabn 1192, LineInfo
RET
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 12h
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEqu12:
.stabn 1205, LineInfo
cp my,0x02
.stabn 1206, LineInfo
jp z,IsEqu120
.stabn 1207, LineInfo
rcf
.stabn 1208, LineInfo
ret
IsEqu120:
.stabn 1211, LineInfo
push yl
.stabn 1212, LineInfo
inc y
.stabn 1213, LineInfo
cp my,0x01
.stabn 1214, LineInfo
pop yl
.stabn 1215, LineInfo
jp z,IsEqu121 ; jmp if 1 minute time out
.stabn 1216, LineInfo
rcf
.stabn 1217, LineInfo
ret
IsEqu121:
.stabn 1219, LineInfo
call CopyByte
.stabn 1220, LineInfo
scf
.stabn 1221, LineInfo
ret
;
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : is che memory equ 0
; Desc : IsEqu24
; I/P : --
; O/P : --
; Destroy:
; Note :
IsEquZero:
.stabn 1234, LineInfo
cp my,0
.stabn 1235, LineInfo
jp z,IsEqu00
.stabn 1236, LineInfo
rcf
.stabn 1237, LineInfo
ret
IsEqu00:
.stabn 1240, LineInfo
push yl
.stabn 1241, LineInfo
inc y
.stabn 1242, LineInfo
cp my,0
.stabn 1243, LineInfo
pop yl
.stabn 1244, LineInfo
jp z,IsEqu01 ; jmp if 1 minute time out
.stabn 1245, LineInfo
rcf
.stabn 1246, LineInfo
ret
IsEqu01:
.stabn 1248, LineInfo
ld x,(0x34)
.stabn 1249, LineInfo
ld a,0x02
.stabn 1250, LineInfo
ld mx,a
.stabn 1251, LineInfo
inc x
.stabn 1252, LineInfo
ld a,0x01
.stabn 1253, LineInfo
ld mx,a
.stabn 1254, LineInfo
scf
.stabn 1255, LineInfo
ret
;-------------------------------------
; Cate : Display
; By : Hcy
; Func : display the icons from the samsung
; Desc : DspIcons
; I/P : --
; O/P : --
; Destroy:
; Note :
DspIcons:
.stabn 1267, LineInfo
ld y,(0x29)
; remark for 60r08
; ld x,09ch
.stabn 1270, LineInfo
ld x,0x04c
.stabn 1271, LineInfo
ld b,4
DspI0:
.stabn 1273, LineInfo
ld mx,my
.stabn 1274, LineInfo
inc y
.stabn 1275, LineInfo
inc x
.stabn 1276, LineInfo
ADD b,0x0F ; b-1
.stabn 1277, LineInfo
jp nz,DspI0
; add by hcy 03-11-24 12:02
.stabn 1279, LineInfo
ld y,(0x2a)
.stabn 1280, LineInfo
fan my,0b0010
.stabn 1281, LineInfo
jp nz,DspI1
; ld y,0a0h
; and my,1110b
.stabn 1285, LineInfo
calz DspColonOff
.stabn 1286, LineInfo
ret
DspI1:
; ld y,0a0h
; or my,01h ; display ':'
.stabn 1290, LineInfo
calz DspColonOn
.stabn 1291, LineInfo
ret
;
SendKeyData:
.stabn 1296, LineInfo
ld x,(0x2E3)
.stabn 1297, LineInfo
fan mx,0b0100
.stabn 1298, LineInfo
jp nz,Send0 ; BR IF D_CLK is high
SendCalKey:
.stabn 1300, LineInfo
LD X,(0x2EB)
; LD MX,0001b ; D_out low
.stabn 1302, LineInfo
and mx,0b0001 ; D_out low
.stabn 1304, LineInfo
CALL SendKey
.stabn 1305, LineInfo
LD X,(0x16)
.stabn 1306, LineInfo
AND MX,0x0f-(4) ; clear the flag after sending
Send0:
.stabn 1308, LineInfo
RET
;
;-------------------------------------
; Cate : delay
; By : Hcy
; Func : delay 2.5s
; Desc : Dly250
; I/P : --
; O/P : --
; Destroy:
; Note :
Dly125:
.stabn 1320, LineInfo
ld y,0x0ef
Dly250:
.stabn 1322, LineInfo
ld y,0x0d8
Dly1:
.stabn 1324, LineInfo
call Dly125ms
.stabn 1325, LineInfo
inc y
.stabn 1326, LineInfo
cp yh,0x0f
.stabn 1327, LineInfo
jp nz,Dly1
.stabn 1328, LineInfo
ret
;-------------------------------------
; Cate : Delay
; By : Hcy
; Func : delay 125ms
; Desc : Dly125ms
; I/P : --
; O/P : --
; Destroy:
; Note :
;
Dly125ms:
.stabn 1341, LineInfo
ld x,0
Dlym0:
.stabn 1343, LineInfo
inc x
.stabn 1344, LineInfo
cp xh,0x0f
.stabn 1345, LineInfo
jp nz,Dlym0
.stabn 1346, LineInfo
ret
;-------------------------------------
; Cate : Clock
; By : Hcy
; Func : clear the byte
; Desc : ClrByte
; I/P : x(ram address)
; O/P : --
; Destroy:
; Note :
ClrByte:
.stabn 1357, LineInfo
ld a,0
.stabn 1358, LineInfo
ld mx,a
.stabn 1359, LineInfo
inc x
.stabn 1360, LineInfo
ld mx,a
.stabn 1361, LineInfo
ret
;-------------------------------------
; Cate : communication
; By : Hcy
; Func : is che memory equ 1bh
; Desc : IsEquStartCode
; I/P : Y(start code address)
; O/P : --
; Destroy:
; Note : c=1 if not equal 0bh, c=0 if equal 1bh
IsEquStartCode:
.stabn 1373, LineInfo
ld y,(0x20)
.stabn 1374, LineInfo
cp my,0x0B
.stabn 1375, LineInfo
jp z,IsEquEE
.stabn 1376, LineInfo
scf
.stabn 1377, LineInfo
ret
IsEquEE:
.stabn 1379, LineInfo
rcf
.stabn 1380, LineInfo
ret
Init:
.stabn 1383, LineInfo
DI ; reset interrupt mask
.stabn 1384, LineInfo
RST F,0b0011
; LD A,0
; LD xp,a ; reset XP
; LD YP,A
.stabn 1389, LineInfo
LD A,0x0f ; define SP
.stabn 1390, LineInfo
LD B,0x04
.stabn 1391, LineInfo
LD SPL,A
.stabn 1392, LineInfo
LD SPH,B
;
.stabn 1394, LineInfo
NOP5
.stabn 1395, LineInfo
NOP5
;
; Cold start from here
;
.stabn 1399, LineInfo
call LCDClr
; LD x,90h
;LCDClr0:
; ldpx mx,0
; cp xh,0bh ; LCD ram from 90 to AFH
; jp nz, LCDClr0
;
; Check the warm start words if necessary
;
;
; clr RAM for Cold start here
.stabn 1411, LineInfo
ld x,0
RAMClr:
.stabn 1413, LineInfo
ldpx mx,0
.stabn 1414, LineInfo
cp xh,5
.stabn 1415, LineInfo
jp nz,RAMClr
;
; set time to 12:00 after cold start
;
.stabn 1419, LineInfo
ld x,(0x14)
.stabn 1420, LineInfo
ldpx mx,2 ; hour=12, min/sec cleared by RAMCLr
.stabn 1421, LineInfo
ldpx mx,1
;
; define I/O port
.stabn 1424, LineInfo
LD Y,(0x2EE)
.stabn 1425, LineInfo
LD MY,0b0000 ; P-port as input
;
.stabn 1427, LineInfo
LD Y,(0x2EB)
; 03-11-22 14:04 HCY
.stabn 1429, LineInfo
LD MY,0b0010 ; Power down, CLK_IN default high
;
;
;
; enable interrupts if any
;
.stabn 1437, LineInfo
LD Y,(0x2E5)
.stabn 1438, LineInfo
LD MY,0b0100 ; No key interrupt allowed, only the D_Clk
;
.stabn 1440, LineInfo
LD Y,(0x2E8)
.stabn 1441, LineInfo
LD MY,0b0000 ; No timer interrupt allowed
;
.stabn 1443, LineInfo
LD Y,(0x2EE) ; reset timer
.stabn 1444, LineInfo
LD MY,0b0100
;
.stabn 1446, LineInfo
ld y,(0x1c)
.stabn 1447, LineInfo
ld my,0
.stabn 1448, LineInfo
ld y,(0x17)
.stabn 1449, LineInfo
ld my,0x04
;
.stabn 1451, LineInfo
ld y,(0x33)
; ld my,WEIGHTMODE
.stabn 1453, LineInfo
ld my,(0)
.stabn 1456, LineInfo
ld x,(0x31)
.stabn 1457, LineInfo
ld mx,0x0d ; total receive 13 nibble data
;
; EI
;
; end of initialization
.stabn 1463, LineInfo
ld b,(0b1110)
.stabn 1464, LineInfo
ld x,(0x2E3)
.stabn 1465, LineInfo
fan mx,(2)
.stabn 1466, LineInfo
jp nz,CalKey0 ; br if Key_off is preseed
;
.stabn 1468, LineInfo
ld b,(0b1101)
.stabn 1469, LineInfo
ld x,(0x2ED)
.stabn 1470, LineInfo
fan mx,(1)
.stabn 1471, LineInfo
jp nz,CalKey0 ; br if Key_Kg is preseed
.stabn 1472, LineInfo
JP ProgStart ; jump to program start
CalKey0:
.stabn 1475, LineInfo
LD Y,(0x2EB)
; 03-11-22 14:04 HCY
.stabn 1477, LineInfo
LD MY,0b0011 ; Power on, CLK_IN default high
.stabn 1478, LineInfo
call Dly125ms
.stabn 1479, LineInfo
call Dly125ms
; call Dly125ms
.stabn 1482, LineInfo
ld x,(0x33)
.stabn 1483, LineInfo
ld mx,(2)
.stabn 1484, LineInfo
LD (M3),B
; remark by hcy 03-11-24 14:15
; call SendKeyData
; add by hcy 03-11-24 14:15
.stabn 1488, LineInfo
call SendCalKey
; ld x,KPort
;CalKey1:
; fan mx,IO_Key_Off
; jp nz,CalKey1
;
; ld x,PPort
;CalKey2:
; fan mx,IO_Key_Kg
; jp nz,CalKey2
;
; turn on all segment
.stabn 1502, LineInfo
LD x,0x90
LCDClrf:
.stabn 1504, LineInfo
ldpx mx,0x0f
.stabn 1505, LineInfo
cp xh,0x0b ; LCD ram from 90 to AFH
.stabn 1506, LineInfo
jp nz, LCDClrf
.stabn 1508, LineInfo
call Dly250
.stabn 1509, LineInfo
call LCDClr
.stabn 1510, LineInfo
jp ProgStart
; ld x,KPort
;CalKey1:
; fan mx,IO_Key_Off
; jp nz,CalKey1
;
; ld x,PPort
;CalKey2:
; fan mx,IO_Key_Kg
; jp nz,CalKey2
;
;
;
;
; Interrupt handling routines
;------------------------------------------------------
; RTC interrupt routine, 0.5 seconds/intr
IntRTC:
; Push A
; push F
;
; pop F
; POP A
.stabn 1537, LineInfo
EI ; because I is reset when jumping into ISR
.stabn 1538, LineInfo
RET
;------------------------------------------------------
; Key port interrupt routine
IntKPort:
; PUSH F
; PUSH A
; PUSH YL
; PUSH YH
;IntKPort0:
; ld Y,KIntFactor
; ld a,my ; read and clear the IRQ
; LD Y,RPort
; and my,1101b ; Pull down CLK_IN to ready receive data
; rcf
; ld Y,PPort
; fan my,1000b ; only remain P0.3
; jp z,IntK0
; scf
;IntK0:
; ld y,CommBufferL
; rrc my
; ld y,CommCount
; rcf
; sbc my,1
; jp nz,IntK1
; ld y,AppFlags
; or my,Rx4BitFlag ; set the 'rx4bitflag'
;
; calz ToDoubleBuffer
; calz ReloadCommVar
;IntK1:
; LD Y,RPort
; or my,0010b ; Pull up CLK_IN to ready receive data
; POP YH
; POP YL
; POP A
; POP F
.stabn 1579, LineInfo
EI ; because I is reset when jumping into ISR
.stabn 1580, LineInfo
RET
;-------------------------------------------------------
; Key port and RTC interrupt happened at the same time
;
;=========================================================
.org 0x0200
ProgStart:
.stabn 1589, LineInfo
ld y,(0x33)
.stabn 1590, LineInfo
fan my,0b1111
.stabn 1591, LineInfo
jp nz,ProgStartLp ; jmp if not clock mode
.stabn 1592, LineInfo
ld y,(0x14)
.stabn 1593, LineInfo
calz DspHour
.stabn 1594, LineInfo
ld y,(0x12)
.stabn 1595, LineInfo
calz DspMinute
ProgStartLp:
.stabn 1597, LineInfo
ld x,(0x2E9)
.stabn 1598, LineInfo
ld a,mx ; read and clear any interrupt request flags
.stabn 1599, LineInfo
fan a,0b0010 ; chk 1/8 sec
.stabn 1600, LineInfo
jp z,ProgStartLp0
.stabn 1601, LineInfo
inc (M0) ; inc the keyhold time
ProgStartLp0:
.stabn 1604, LineInfo
fan a,0b0100 ; chk 1/2 sec
.stabn 1605, LineInfo
jp nz,UpdateSecond
ProgStartComm:
.stabn 1608, LineInfo
ld x,(0x33)
.stabn 1609, LineInfo
cp mx,(0)
.stabn 1610, LineInfo
jp z,xProgStartComm ; no comm in clock mode
.stabn 1613, LineInfo
LD X,(0x16)
.stabn 1614, LineInfo
FAN MX,(4)
.stabn 1615, LineInfo
JP z,Comm_Rx
; add these by hcy 03-11-22 10:32
; ld a,CommFlag
; fan a,1111b
; jp nz,Comm_Rx ; jmp if receiving
; add these by hcy 03-11-19 10:50
.stabn 1622, LineInfo
call SendKeyData
; remark 03-11-22 11:55
; jp ProgStartComm
;
; Send the data after receiving a command
; remark it by hcy 03-11-13 16:30 for test communication
; ld x,KPort
; fan mx,0100b ; chk CLK pin
; jp nz,Comm_Rx ; clk hi-> data send from Samsung
; LD X,RPort
; LD MX,0001b ; D_out low
; CALL SendKey
; LD X,AppFlags
; AND MX,0fh-ReqToSendFlag ; clear the flag after sending
Comm_Rx:
; remark it by hcy 03-11-13 16:32 for test communication
.stabn 1642, LineInfo
ld x,(0x2E3)
.stabn 1643, LineInfo
fan mx,0b0100
.stabn 1644, LineInfo
jp z,xProgStartComm ; BR IF low EDGE
; ld Y,KIntFactor
; ld a,my ; read nad clear the IRQ
; fan a,0100b ; chk K02
; jp z,NewProg0
; find a rising edge
; ld a,1
; ld CommFlag,a ; 1--> commflag when receiving
.stabn 1656, LineInfo
LD Y,(0x2EB)
.stabn 1657, LineInfo
and my,0b0001 ; Pull down CLK_IN to ready receive data
.stabn 1658, LineInfo
ld Y,(0x2ED)
.stabn 1659, LineInfo
ld a,my
.stabn 1660, LineInfo
rlc a
.stabn 1662, LineInfo
ld y,(0x1c)
.stabn 1663, LineInfo
rrc my ; load data in buffer
.stabn 1665, LineInfo
LD Y,(0x2EB)
; or my,0010b ; Pull up CLK_IN to ready receive data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -