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

📄 kclock.ms

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