⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kclkr08.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 4 页
字号:
; 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 + -