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

📄 r01clk1.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 5 页
字号:
; Destroy:
; Note   :
;LCDClr:
;	LD	x,90h
;LCDClr0:
;	ldpx	mx,0
;	cp	xh,0bh		; LCD ram from 90 to AFH
;	jp	nz, LCDClr0
;	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:	
;	ld	b,Key_On
;	ld	x,KPort
 ;       fan	mx,IO_Key_On
;	jp	z,KeyFound0		; br if Key_on is preseed (=1)
;	call	Dly17ms
;	fan	mx,IO_Key_On
;	jp	nz,KeyFound
;KeyFound0:
;	ld	b,Key_Off
;	fan	mx,IO_Key_Off
;	jp	z,KeyFound1		; br if Key_off is preseed
;	call	Dly17ms
;	fan	mx,IO_Key_Off
;	jp	nz,KeyFound
;;
;KeyFound1:	
;	ld	b,Key_Kg
;	ld	x,PPort
;	fan	mx,IO_Key_Kg
;	jp	nz,KeyFound2		; br if Key_Kg is preseed
;	call	Dly17ms
;	fan	mx,IO_Key_Kg
;	jp	nz,KeyFound
;;
;KeyFound2:
;	ld	b,Key_ml
;	fan	mx,IO_Key_ml
;	jp	nz,KeyFound3		; br if Key_ml is preseed
;	call	Dly17ms
;	fan	mx,IO_Key_ml
;	jp	nz,KeyFound
;;
;KeyFound3:
;	LD	X,RegKeyFlags
;	AND	MX, 0fh-KeyHoldFlag
;NotNewKey:
;	RZF				; return with Z=0 
;	RET
;KeyFound:
;	LD	X,RegKeyFlags
;	FAN	MX,KeyHoldFlag
;	JP	nz,NotNewKey		; br if not new Key
;	OR	MX,NewKeyFlag+KeyHoldFlag	; set key flag
;	LD	KeyCode,B
;	SZF				; return with Z-1 if new key MbB
;	RET

;===============================================	
; Reset vectors are located at page 1
	.org	0x100
.stabn 1121, LineInfo
	JP	Init		; reset vector
.stabn 1122, LineInfo
	JP	IntRTC		; clock interrupt -- may only be used to set flag
;
	.org	0x104
.stabn 1125, LineInfo
	JP	IntKPort	; Key port interrupt 
;	JP	IntRTC_KPort	; timer and key port interrupt both
;
; All reset, clock and Key port interrupt should be located in 100H page

	.org 0x110
;-------------------------------------
; Cate   : System
; By     : Hcy
; Func   : check the interrupt timer 1/8 sec and 1/2 sec
; Desc   : ChkTimer
; I/P    : --
; O/P    : --
; Destroy:
; Note   :	
ChkTimer:
.stabn 1141, LineInfo
	ld	x,(0x0EF)
.stabn 1142, LineInfo
	ld	a,mx		; read and clear any interrupt request flags
.stabn 1143, LineInfo
	fan	a,0b0010		; chk 1/8 sec
.stabn 1144, LineInfo
	jp	z,TimeSet00
.stabn 1145, LineInfo
	inc	(M0)	; inc the keyhold time
.stabn 1146, LineInfo
	call	KeyScan
TimeSet00:	
.stabn 1148, LineInfo
	fan 	a,0b0100			; chk 1/2 sec
.stabn 1149, LineInfo
	jp	z,TimeSet01
.stabn 1150, LineInfo
	ld	a,(M8)
.stabn 1151, LineInfo
	fan	a,0b1111
.stabn 1152, LineInfo
	jp	z,TimeR0
.stabn 1153, LineInfo
	dec	(M8)
.stabn 1154, LineInfo
	jp	TimeR1
	; add by hcy 03-11-29 11:35
TimeR0:
.stabn 1157, LineInfo
	ld	X,(1)
.stabn 1158, LineInfo
	AND	MX,0x0f-(4)	; clr the key
TimeR1:	
.stabn 1160, LineInfo
	call	ToggleHalfSecFlag	
.stabn 1161, LineInfo
	ld	x,(0x16)
.stabn 1162, LineInfo
	fan	mx,(2)
TimeSet01:
.stabn 1164, LineInfo
	jp	z,TimeS0		; br if just 0.5 sec
;	
.stabn 1166, LineInfo
	and	mx,0x0f-(2)	; clear the bit
; update the clock per 1 min
;	

.stabn 1170, LineInfo
	calz	IncSecond
.stabn 1171, LineInfo
	jp	nc,TimeS0		; No display update if change in second only
.stabn 1172, LineInfo
	calz	IncMinute
.stabn 1173, LineInfo
	jp	nc,TimeS0
.stabn 1174, LineInfo
	calz	IncHour
TimeS0:	
.stabn 1176, LineInfo
	ret

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : toggle the half sec flag
; Desc   : ToggleHalfSecFlag
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
ToggleHalfSecFlag:
.stabn 1188, LineInfo
	ld	x,(0x16)
.stabn 1189, LineInfo
	xor	mx,(1)
.stabn 1190, LineInfo
	fan	mx,(1)
.stabn 1191, LineInfo
	jp	nz,xToggleHalfS
.stabn 1192, LineInfo
	or	mx,(2)	; set flag if from 1->0
xToggleHalfS:
.stabn 1194, LineInfo
	ret

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : inc setting HOUR
; Desc   : IncSetHour
; I/P    : --
; O/P    : --
; Destroy:
; Note   : 
IncSetHour:
.stabn 1206, LineInfo
	ld	x,(0x1A)
.stabn 1207, LineInfo
	calz	IncByteD
.stabn 1208, LineInfo
	ld	x,(0x1A)
.stabn 1209, LineInfo
	calz	IsEqu24
.stabn 1210, LineInfo
	jp	nc,IncSet0
.stabn 1211, LineInfo
	ld	x,(0x1A)
.stabn 1212, LineInfo
	call	ClrByte
IncSet0:
.stabn 1214, LineInfo
	ld	y,(0x1a)
.stabn 1215, LineInfo
	calz	DspHour
.stabn 1216, LineInfo
	ret
	
;-------------------------------------
; Cate   : Common
; By     : Hcy
; Func   : copy 2-byte to other memory, (buffer1) --> (buffer2)
; Desc   : Copy2Byte
; I/P    : x(buffer 1 low address), y(buffer 2 low address)
; O/P    :
; Destroy:
; Note   :
;Copy2Byte:
;	ld	a,4
;Copy0:
;	ld	my,mx
;	inc	x
;	inc	y
;	add	a,0fh		; dec a
;	jp	nz,Copy0
;	ret		

;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : reload the communication variable
; Desc   : ReloadCommVar
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
ReloadCommVar:
.stabn 1247, LineInfo
	ld	y,(0x1c)
.stabn 1248, LineInfo
	ld	my,0		; clr the communication buffer
.stabn 1249, LineInfo
	ld	y,(0x17)
.stabn 1250, LineInfo
	ld	my,0x04		; reload the communication bit counter
.stabn 1251, LineInfo
	ret
;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : store to the receive buffer
; Desc   : ToRecBuffer
; I/P    : --
; O/P    : --
; Destroy:
; Note   :	
ToRecBuffer:
.stabn 1262, LineInfo
	ld	y,(0x20)
.stabn 1263, LineInfo
	ld	x,(0x1d)
.stabn 1264, LineInfo
	ld	a,mx
Prog1:
.stabn 1266, LineInfo
	ld	YL,a
Prog2:
.stabn 1268, LineInfo
	ld	x,(0x1c)
.stabn 1269, LineInfo
	ld	my,mx		; store receive data to receive buffer
.stabn 1270, LineInfo
	ret
;;-------------------------------------
; Cate   : Display
; By     : Kwan
; Func   : Clear the LCD ram including digits/icons
; Desc   :
; I/P    :
; O/P    :
; Destroy:
; Note   :
LCDClr:
.stabn 1281, LineInfo
	LD	x,0x90
LCDClr0:
.stabn 1283, LineInfo
	ldpx	mx,0
.stabn 1284, LineInfo
	cp	xh,0x0b		; LCD ram from 40 to 6FH
.stabn 1285, LineInfo
	jp	nz, LCDClr0
.stabn 1286, LineInfo
	ret
	
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : inc setting minute
; Desc   : IncSetMinute
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IncSetMinute:
.stabn 1298, LineInfo
	ld	x,(0x18)
.stabn 1299, LineInfo
	calz	IncByteD
.stabn 1300, LineInfo
	ld	x,(0x18)
.stabn 1301, LineInfo
	calz	IsEqu60
.stabn 1302, LineInfo
	ld	y,(0x18)
.stabn 1303, LineInfo
	calz	DspMinute
.stabn 1304, LineInfo
	ret

;-------------------------------------
; Cate   : Application
; By     : Hcy
; Func   : 
; Desc   : CopyByte
; I/P    : y(ram address)
; O/P    :
; Destroy:
; Note   :
CopyByte:
.stabn 1316, LineInfo
	ld	x,(0x32)
.stabn 1317, LineInfo
	ld	mx,my
.stabn 1318, LineInfo
	inc	y
.stabn 1319, LineInfo
	inc	x
.stabn 1320, LineInfo
	ld	mx,my		; ram --> dsphourbuf
.stabn 1321, LineInfo
	ret
;-------------------------------------
; Cate   : Application
; By     : Hcy
; Func   : -0ch   by decimal
; Desc   : Sub12D
; I/P    : y(address of buffer)
; O/P    :  
; Destroy:
; Note   :
Sub12D:
.stabn 1332, LineInfo
	push	yl
.stabn 1333, LineInfo
	call	CopyByte
.stabn 1334, LineInfo
	pop	yl
.stabn 1335, LineInfo
	ld	x,(0x32)
;	SET	F,0100B     
.stabn 1337, LineInfo
	SDF
.stabn 1338, LineInfo
	RCF                 
.stabn 1339, LineInfo
	sbc     Mx,0x02      
.stabn 1340, LineInfo
	inc	x           
.stabn 1341, LineInfo
	sbc     Mx,0x01      
;	RST	F,1011B        
.stabn 1343, LineInfo
	RDF
.stabn 1344, LineInfo
	RET
	
;
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 12h
; Desc   : IsEqu24
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEqu12:    
.stabn 1357, LineInfo
	cp	my,0x02
.stabn 1358, LineInfo
	jp	z,IsEqu120
.stabn 1359, LineInfo
	rcf	
.stabn 1360, LineInfo
	ret               
            
IsEqu120:
.stabn 1363, LineInfo
	push	yl
.stabn 1364, LineInfo
	inc	y                                                      
.stabn 1365, LineInfo
	cp	my,0x01  
.stabn 1366, LineInfo
	pop	yl                                    
.stabn 1367, LineInfo
	jp	z,IsEqu121		; jmp if 1 minute time out  
.stabn 1368, LineInfo
	rcf
.stabn 1369, LineInfo
	ret  
IsEqu121:      
.stabn 1371, LineInfo
	call	CopyByte            
.stabn 1372, LineInfo
	scf                                      
.stabn 1373, LineInfo
	ret 	

;
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 0
; Desc   : IsEqu24
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEquZero:    
.stabn 1386, LineInfo
	cp	my,0
.stabn 1387, LineInfo
	jp	z,IsEqu00
.stabn 1388, LineInfo
	rcf	
.stabn 1389, LineInfo
	ret               
            
IsEqu00:
.stabn 1392, LineInfo
	push	yl
.stabn 1393, LineInfo
	inc	y                                                      
.stabn 1394, LineInfo
	cp	my,0  
.stabn 1395, LineInfo
	pop	yl                                    
.stabn 1396, LineInfo
	jp	z,IsEqu01		; jmp if 1 minute time out  
.stabn 1397, LineInfo
	rcf
.stabn 1398, LineInfo
	ret  
IsEqu01:      
.stabn 1400, LineInfo
	ld	x,(0x32)     
.stabn 1401, LineInfo
	ld	a,0x02
.stabn 1402, LineInfo
	ld	mx,a
.stabn 1403, LineInfo
	inc	x
.stabn 1404, LineInfo
	ld	a,0x01
.stabn 1405, LineInfo
	ld	mx,a     
.stabn 1406, LineInfo
	scf                                      
.stabn 1407, LineInfo
	ret 

;-------------------------------------
; Cate   : Display
; By     : Hcy
; Func   : display the icons from the samsung
; Desc   : DspIcons
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;DspIcons:
;	ld	y,RxIcon0
;	ld	x,09ch
;	ld	b,4
;DspI0:
;	ld	mx,my
;	inc	y
;	inc	x
;	ADD	b,0FH		; b-1
;	jp	nz,DspI0
;	; add by hcy 03-11-24 12:02
;	ld	y,RxIcon1
;	fan	my,0010b
;	jp	nz,DspI1
;	
;	calz	DspColonOff
;	ret
;DspI1:	
;	calz	DspColonOn
;	ret

	
;
SendKeyData:
.stabn 1442, LineInfo
	ld	x,(0x0E0)
.stabn 1443, LineInfo
	fan	mx,0b0100		
.stabn 1444, LineInfo
	jp	nz,Send0	; BR IF D_CLK is high
SendCalKey:	
.stabn 1446, LineInfo
 	LD	X,(0x0F3)
;	LD	MX,0001b	; D_out low
.stabn 1448, LineInfo
	and	mx,0b0001	; D_out low

.stabn 1450, LineInfo
 	CALL	SendKey
.stabn 1451, LineInfo
 	LD	X,(0x16)
.stabn 1452, LineInfo
 	AND	MX,0x0f-(4)	; clear the flag after sending
Send0:
.stabn 1454, LineInfo
 	RET
;
;-------------------------------------
; Cate   : delay
; By     : Hcy
; Func   : delay 2.5s
; Desc   : Dly250
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
Dly125:
.stabn 1466, LineInfo
	ld	y,0x0ef
Dly250:
.stabn 1468, LineInfo
	ld	y,0x0d8
Dly1:
.stabn 1470, LineInfo
	call	Dly125ms
.stabn 1471, LineInfo
	inc	y
.stabn 1472, LineInfo
	cp	yh,0x0f
.stabn 1473, LineInfo
	jp	nz,Dly1
.stabn 1474, LineInfo
	ret

;-------------------------------------
; Cate   : Delay
; By     : Hcy
; Func   : delay 125ms
; Desc   : Dly125ms
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;
;Dly125ms:
;	ld	x,0
;Dlym0:
;	inc	x
;	cp	xh,0fh
;	jp	nz,Dlym0
;	ret
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : clear the byte
; Desc   : ClrByte
; I/P    : x(ram address)
; O/P    : --
; Destroy:
; Note   :
ClrByte:
.stabn 1503, LineInfo
	ld	a,0
.stabn 1504, LineInfo
	ld	mx,a
.stabn 1505, LineInfo
	inc	x
.stabn 1506, LineInfo
	ld	mx,a
.stabn 1507, 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 1519, LineInfo
	ld	y,(0x20)
.stabn 1520, LineInfo
	cp	my,0x0B
.stabn 1521, LineInfo
	jp	z,IsEquEE
.stabn 1522, LineInfo
	scf	
.stabn 1523, LineInfo
	ret                                            
IsEquEE:
.stabn 1525, LineInfo
	rcf
.stabn 1526, LineInfo
	ret   
		
Init:
.stabn 1529, LineInfo
	DI			; reset interrupt mask
.stabn 1530, LineInfo
	RST	F,0b0011
;	LD	A,0	
;	LD	xp,a		; reset XP
;	LD	YP,A

.stabn 1535, LineInfo
	LD	A,0x0f		; define SP
.stabn 1536, LineInfo
	LD	B,0x04

⌨️ 快捷键说明

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