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

📄 r08cnvlcdclk1.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 5 页
字号:

ClrKeyVar:
.stabn 2047, LineInfo
	LD	a,0
.stabn 2048, LineInfo
	ld	(M3),a		; clr the key code
	
ClrKeyHoldTm:
.stabn 2051, LineInfo
	ld	a,0
.stabn 2052, LineInfo
	ld	(M0),a		; reset timer
.stabn 2053, LineInfo
	ret
;-------------------------------------
; Cate   : Delay
; By     : Hcy
; Func   : delay 125ms
; Desc   : Dly125ms
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;
Dly125ms:
.stabn 2065, LineInfo
	ld	x,0
Dlym0:
.stabn 2067, LineInfo
	inc	x
.stabn 2068, LineInfo
	cp	xh,0x0f
.stabn 2069, LineInfo
	jp	nz,Dlym0
.stabn 2070, 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 2091, LineInfo
	LD	A,(M3)
.stabn 2092, LineInfo
	CP	A,(0b0111)
.stabn 2093, LineInfo
	JP	z,GetKey_On
.stabn 2094, LineInfo
	CP	A,(0b1101)
.stabn 2095, LineInfo
	JP	z,GetKey_Kg
.stabn 2096, LineInfo
	CP	A,(0b1011)
.stabn 2097, LineInfo
	JP	z,GetKey_ml
.stabn 2098, LineInfo
	CP	A,(0b1110)
.stabn 2099, LineInfo
	JP	z,GetKey_Off
.stabn 2100, LineInfo
	JP	ProgStartLp

;
GetKey_On:
; for testing
.stabn 2105, LineInfo
	LD	X,(1)
.stabn 2106, LineInfo
	FAN	MX,(1)
.stabn 2107, LineInfo
	JP	nz,ProgStartLp		; still key hold
.stabn 2108, LineInfo
	AND	MX,0x0f-(2)	; process the key & clr the flag

.stabn 2110, LineInfo
	ld	x,(0x31)
.stabn 2111, LineInfo
	fan	mx,0x0f
.stabn 2112, LineInfo
	jp	nz,GetK0		; jmp if not clock mode
	
.stabn 2114, LineInfo
	ld	a,(M9)
.stabn 2115, LineInfo
	fan	a,0b1111
.stabn 2116, LineInfo
	jp	nz,ProgStartLp
	
.stabn 2118, LineInfo
	LD	Y,(0x0EB)
	; 03-11-22 14:04 HCY
.stabn 2120, 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 2124, LineInfo
	add	mx,1
.stabn 2125, LineInfo
	CALl	LCDClr
.stabn 2126, LineInfo
	LD	X,(0x16)
.stabn 2127, LineInfo
	AND	MX,0x0f-(4)	; clear the flag after sending
.stabn 2128, LineInfo
	call	Dly125ms
.stabn 2129, LineInfo
	call	Dly125ms
.stabn 2130, LineInfo
	call	ReloadCommVar
.stabn 2131, LineInfo
	ld	x,(0x30)
.stabn 2132, LineInfo
	ld	mx,0x0d
.stabn 2133, LineInfo
	ld	x,(0x1d)
.stabn 2134, LineInfo
	ld	mx,0
.stabn 2135, LineInfo
	jp	ProgStart		; to show Clock
	
GetK0:
.stabn 2138, LineInfo
	ld	b,(M3)
.stabn 2139, LineInfo
	LD	(M4),B		;
.stabn 2140, LineInfo
	LD	X,(0x16)
.stabn 2141, LineInfo
	OR	MX,(4)
.stabn 2142, LineInfo
	jp	ProgStartLp
			


GetKey_ml:
.stabn 2147, LineInfo
	LD	X,(1)
.stabn 2148, LineInfo
	FAN	MX,(1)
.stabn 2149, LineInfo
	JP	nz,ProgStartLp		; still key hold
.stabn 2150, 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 2159, LineInfo
	jp	GetK0

;
; process the Off key here after
GetKey_Off:
;	LD	SendData,B		;
;	LD	X,AppFlags
;	OR	MX,ReqToSendFlag
.stabn 2167, LineInfo
	ld	x,(0x31)
.stabn 2168, LineInfo
	cp	mx,(0)
.stabn 2169, LineInfo
	jp	z,ProgStartLp
TurnOffPwr:
.stabn 2171, LineInfo
	ld	a,0
.stabn 2172, LineInfo
	ld	(M3),a
.stabn 2173, LineInfo
	ld	x,(0x31)
.stabn 2174, LineInfo
	ld	mx,(0)		; Reset modeOpt if not valid
.stabn 2175, LineInfo
	CALl	LCDClr
.stabn 2176, LineInfo
	ld	y,(0x0EB)		; set D_Out Hi after sending
;	and	my,0010b	; turn off POWER_CONTROL
.stabn 2178, LineInfo
	ld	my,0b0000	; turn off power_control ,clk_in is low
	
	; add it by hcy 03-12-4 14:13 
.stabn 2181, LineInfo
	ld	a,4
.stabn 2182, LineInfo
	ld	(M9),a		; 
.stabn 2183, LineInfo
	jp	ProgStart
;

GetKey_Kg:
.stabn 2187, LineInfo
	LD	Y,(0x31)
.stabn 2188, LineInfo
	CP	MY,(0)
;	JP	nz,WeigthKey_Kg	; br if not clock mode	
.stabn 2190, LineInfo
	jp	nz,GetKey_ml	; br if not clock mode
	
.stabn 2192, LineInfo
	ld	X,(1)
.stabn 2193, LineInfo
	fan	MX,(1)
.stabn 2194, LineInfo
	jp	nz,GetKey_Kg0	; br to check the hold time
	
.stabn 2196, LineInfo
	AND	MX,0x0f-(2)	; ignor the key
.stabn 2197, LineInfo
	call	ClrKeyHoldTm
.stabn 2198, LineInfo
	jp	ProgStartLp
;
; starting from here if the key hold time > 2 seconds
;
GetKey_Kg0:
.stabn 2203, LineInfo
	ld	a,(M0)
.stabn 2204, LineInfo
	cp	a,0x0f		; tolerance  -1/8 sec
.stabn 2205, LineInfo
	jp	nz,ProgStartLp	; br if Hold time < 2 seconds
.stabn 2206, LineInfo
	ld	x,(1)
.stabn 2207, 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 2213, LineInfo
	ld	X,(1)
.stabn 2214, LineInfo
	AND	MX,0x0f-(4)	; clr the key
.stabn 2215, LineInfo
	ld	x,(0x12)
.stabn 2216, LineInfo
	ld	y,(0x18)
.stabn 2217, LineInfo
	call	Copy2Byte
.stabn 2218, LineInfo
	calz	DspColonOn
	
.stabn 2220, LineInfo
	ld	a,(0)
.stabn 2221, LineInfo
	ld	(M3),a	; clr key code
.stabn 2222, LineInfo
	ld	(M0),a
.stabn 2223, LineInfo
	ld	a,0x0f
.stabn 2224, LineInfo
	ld	(M5),a
TimeSet:
.stabn 2226, LineInfo
	ld	X,(1)
.stabn 2227, LineInfo
	FAN	MX,(4)
.stabn 2228, LineInfo
	jp	nz,TimeSett0
.stabn 2229, LineInfo
	ld	y,(0x1a)
.stabn 2230, LineInfo
	calz	FlashHour
TimeSett0:
.stabn 2232, LineInfo
	call	ChkTimer
.stabn 2233, LineInfo
	ld	a,(M5)
.stabn 2234, LineInfo
	fan	a,0b1111
.stabn 2235, LineInfo
	jp	z,NewE

.stabn 2237, LineInfo
	LD	A,(M3)
.stabn 2238, LineInfo
	CP	A,(0b1101)
.stabn 2239, LineInfo
	JP	z,UTimeSet0	;; jmp to setting minute
.stabn 2240, LineInfo
	CP	A,(0b1011)
.stabn 2241, LineInfo
	jp	z,TimeSet1	; jmp to setting increase hour
.stabn 2242, LineInfo
	jp	TimeSet
	
TimeSet1:
.stabn 2245, LineInfo
	ld	a,15
.stabn 2246, LineInfo
	ld	(M5),a
.stabn 2247, LineInfo
	ld	X,(1)
.stabn 2248, LineInfo
	fan	MX,(1)
.stabn 2249, LineInfo
	jp	nz,TimeSet2		; br to check the hold time
	
.stabn 2251, 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 2257, LineInfo
	call	ClrKeyVar
HTimeSet:
.stabn 2259, LineInfo
	call	IncSetHour
	; add by hcy 03-11-29 11:33
.stabn 2261, LineInfo
	call	SetTmr1s
.stabn 2262, LineInfo
	jp	TimeSet
TimeSet2:
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2267, LineInfo
	OR	MX,(4)
.stabn 2268, LineInfo
	ld	a,(M0)
.stabn 2269, LineInfo
	cp	a,0x0f		; tolerance  -1/8 sec
.stabn 2270, LineInfo
	jp	nz,TimeSet	; br if Hold time < 2 seconds
.stabn 2271, LineInfo
	ld	a,0x0d
.stabn 2272, LineInfo
	ld	(M0),a	; 
.stabn 2273, LineInfo
	jp	HTimeSet
;	call	IncSetHour	; 
;	jp	TimeSet


	.org	0x300

UTimeSet0:
.stabn 2281, LineInfo
	ld	a,15
.stabn 2282, LineInfo
	ld	(M5),a
.stabn 2283, LineInfo
	ld	X,(1)
.stabn 2284, LineInfo
	AND	MX,0x0f-(4)	; clr the key
;	ld	a,Key_Nil
;	ld	KeyCode,a	; clr key code
;	ld	KeyHoldTm,a
.stabn 2288, LineInfo
	ld	y,(0x1a)
.stabn 2289, LineInfo
	calz	DspHour
.stabn 2290, LineInfo
	calz	DspColonOn
	
;	ld	a,Key_Nil
;	ld	KeyCode,a	; clr key code
;	ld	KeyHoldTm,a
.stabn 2295, LineInfo
	call	ClrKeyVar
TimeSet0:
;	ld	y,TmpRTCHourL
;	calz	DspHour
;	calz	DspColonOn
.stabn 2300, LineInfo
	ld	X,(1)
.stabn 2301, LineInfo
	FAN	MX,(4)
.stabn 2302, LineInfo
	jp	nz,MTime0
	
.stabn 2304, LineInfo
	ld	y,(0x18)
.stabn 2305, LineInfo
	calz	FlashMinute
MTime0:
.stabn 2307, LineInfo
	call	ChkTimer
.stabn 2308, LineInfo
	ld	a,(M5)
.stabn 2309, LineInfo
	fan	a,0b1111
.stabn 2310, LineInfo
	jp	z,NewE
	
.stabn 2312, LineInfo
	LD	A,(M3)
.stabn 2313, LineInfo
	CP	A,(0b1101)
.stabn 2314, LineInfo
	JP	z,MTimeSet0	;; jmp to setting minute
.stabn 2315, LineInfo
	CP	A,(0b1011)
.stabn 2316, LineInfo
	jp	z,MTimeSet1	; jmp to setting increase hour
.stabn 2317, LineInfo
	jp	TimeSet0
	
MTimeSet1:
.stabn 2320, LineInfo
	ld	a,15
.stabn 2321, LineInfo
	ld	(M5),a
.stabn 2322, LineInfo
	ld	X,(1)
;	OR	MX,DisFlashFlag
.stabn 2324, LineInfo
	fan	MX,(1)
.stabn 2325, LineInfo
	jp	nz,MTimeSet2		; br to check the hold time
	
.stabn 2327, 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 2334, LineInfo
	call	ClrKeyVar
HTimeSet0:
.stabn 2336, LineInfo
	call	IncSetMinute
	; add by hcy 03-11-29 11:40
.stabn 2338, LineInfo
	call	SetTmr1s
.stabn 2339, LineInfo
	jp	TimeSet0
MTimeSet2:
	
;
; starting from here if the key hold time > 2 seconds
;
.stabn 2345, LineInfo
	OR	MX,(4)
.stabn 2346, LineInfo
	ld	a,(M0)
.stabn 2347, LineInfo
	cp	a,0x0f		; tolerance  -1/8 sec
.stabn 2348, LineInfo
	jp	nz,TimeSet0	; br if Hold time < 2 seconds
.stabn 2349, LineInfo
	ld	a,0x0d
.stabn 2350, LineInfo
	ld	(M0),a	; 
.stabn 2351, LineInfo
	jp	HTimeSet0

MTimeSet0:
.stabn 2354, LineInfo
	ld	a,15
.stabn 2355, LineInfo
	ld	(M5),a
.stabn 2356, LineInfo
	call	ClrKeyVar
.stabn 2357, LineInfo
	calz	ClrAmPm
	
;	ORG	300H
	
TimeSet4:
.stabn 2362, LineInfo
	calz	FlashTimeFormat
.stabn 2363, LineInfo
	call	ChkTimer
	
.stabn 2365, LineInfo
	ld	a,(M5)
.stabn 2366, LineInfo
	fan	a,0b1111
.stabn 2367, LineInfo
	jp	z,NewE
	
.stabn 2369, LineInfo
	LD	A,(M3)
.stabn 2370, LineInfo
	CP	A,(0b1101)
.stabn 2371, LineInfo
	JP	z,TTimeSet0	;; jmp to exit setting
.stabn 2372, LineInfo
	CP	A,(0b1011)
.stabn 2373, LineInfo
	jp	z,TTimeSet1	; jmp to toggle time format
.stabn 2374, LineInfo
	jp	TimeSet4
	
TTimeSet1:
.stabn 2377, LineInfo
	ld	a,15
.stabn 2378, LineInfo
	ld	(M5),a
.stabn 2379, LineInfo
	ld	X,(1)
.stabn 2380, LineInfo
	fan	MX,(1)
.stabn 2381, LineInfo
	jp	nz,TimeSet4		; br to check the hold time
	
.stabn 2383, LineInfo
	AND	MX,0x0f-(2)	; clr the key
.stabn 2384, LineInfo
	call	ClrKeyVar
.stabn 2385, LineInfo
	ld	x,(1)
.stabn 2386, LineInfo
	xor	mx,(8)
.stabn 2387, LineInfo
	calz	DspTimeFormat
.stabn 2388, LineInfo
	jp	TimeSet4

TTimeSet0:
.stabn 2391, LineInfo
	ld	a,15
.stabn 2392, LineInfo
	ld	(M5),a
.stabn 2393, LineInfo
	ld	x,(0x18)
.stabn 2394, LineInfo
	ld	y,(0x12) 
.stabn 2395, LineInfo
	call	Copy2Byte	; 
.stabn 2396, LineInfo
	ld	x,(0x10)
.stabn 2397, LineInfo
	call	ClrByte
.stabn 2398, LineInfo
	ld	y,(0x14)
.stabn 2399, LineInfo
	calz	DspHour
.stabn 2400, LineInfo
	ld	y,(0x12)
.stabn 2401, LineInfo
	calz	DspMinute
.stabn 2402, LineInfo
	ld	X,(1)
.stabn 2403, LineInfo
	AND	MX,0x0f-(2)	; clr the key
.stabn 2404, LineInfo
	call	ClrKeyVar
.stabn 2405, LineInfo
	jp	ProgStartLp
	
NewE:
.stabn 2408, LineInfo
	ld	x,(1)
.stabn 2409, LineInfo
	and	mx,0x0f-(2)
.stabn 2410, LineInfo
	call	ClrKeyVar
.stabn 2411, LineInfo
	jp	ProgStart	

;
;	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   :
;-------------------------------------
; Cate   : communication                   
; By     : Hcy                             
; Func   : send 4 data bits (LSB first)
; Desc   : Send4Bit                      
; I/P    :                                 
; O/P    :
; Destroy:
; Note   :
Send4Bit:
.stabn 2479, LineInfo
	LD	X,(0x17)	
.stabn 2480, LineInfo
	LD	MX,4		; 4 bit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -