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

📄 kclock.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 5 页
字号:
.stabn 466, LineInfo
	calz	DspPattern1	; display ' ' in 5th digit
.stabn 467, LineInfo
	calz	DspPattern1	; display ' ' in 6th digit
.stabn 468, LineInfo
	ret	
		
;-------------------------------------
; Cate   : Display
; By     : Hcy
; Func   : display the weight from the samsung
; Desc   : DspWeight
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
DspWeight:
.stabn 480, LineInfo
	ld	y,(0x27)
.stabn 481, LineInfo
	ld	x,0x090
.stabn 482, LineInfo
	ld	b,4
DspW0:
.stabn 484, LineInfo
	ld	a,my
.stabn 485, LineInfo
	push	b
.stabn 486, LineInfo
	ld	b,a
.stabn 487, LineInfo
	inc	y
.stabn 488, LineInfo
	fan	my,0x0f
.stabn 489, LineInfo
	jp	nz,DspW1
.stabn 490, LineInfo
	ld	a,b
.stabn 491, LineInfo
	calz	DspDigit    
.stabn 492, LineInfo
	jp	DspW2
DspW1:
.stabn 494, LineInfo
	ld	a,b
.stabn 495, LineInfo
	calz	DspDigit1
DspW2:
.stabn 497, LineInfo
	ld	b,YL
.stabn 498, LineInfo
	rcf
.stabn 499, LineInfo
	sbc	b,3		; get next digit
.stabn 500, LineInfo
	ld	YL,b		
.stabn 501, LineInfo
	pop	b
.stabn 502, LineInfo
	ADD	b,0x0F		;
.stabn 503, LineInfo
	jp	nz,DspW0
.stabn 504, 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
;;	rcf
;;	sbc	b,1		; get next digit
;	ADD	b,0FH		;
;	jp	nz,DspI0
;	ret

;---------------------------------------
;---------------------------------------
; 	calculate the clock
;---------------------------------------
;---------------------------------------
;-------------------------------------
; Cate   : Application
; By     : Hcy
; Func   : increase byte by decimal
; Desc   : IncByteD
; I/P    : X(address of buffer)
; O/P    :  
; Destroy:
; Note   :
IncByteD:
.stabn 544, LineInfo
	SET	F,0b0100     
.stabn 545, LineInfo
	RCF                 
.stabn 546, LineInfo
	ADD     MX,0x01      
.stabn 547, LineInfo
	inc	x           
.stabn 548, LineInfo
	ADC     MX,0x00      
.stabn 549, LineInfo
	RST	F,0b1011     
.stabn 550, LineInfo
	RET

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : toggle the half sec flag
; Desc   : ToggleHalfSecFlag
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;ToggleHalfSecFlag:
;	ld	x,AppFlags
;	xor	mx,HalfSecFlag
;	fan	mx,HalfSecFlag
;	jp	nz,xToggleHalfS
;	or	mx,SecClickFlag	; set flag if from 1->0
;xToggleHalfS:
;	ret

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : check if up to 1 minute
; Desc   : IncSecond
; I/P    : --
; O/P    : --
; Destroy:
; Note   : c=0 if not up to 1 minute, c=1 if up to 1 minute
IncSecond:
.stabn 580, LineInfo
	ld	x,(0x10)
.stabn 581, LineInfo
	calz	IncByteD
.stabn 582, LineInfo
	ld	x,(0x10)
.stabn 583, LineInfo
	calz	IsEqu60
.stabn 584, LineInfo
	ret
	
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 60h
; Desc   : IsEqu60
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEqu60:       
.stabn 596, LineInfo
	cp	mx,0x00
.stabn 597, LineInfo
	jp	z,IsEqu0
;	rcf	
;	ret        
;	jp	IsEqu2      
.stabn 601, LineInfo
	jp	IsRight8                              
IsEqu0:
.stabn 603, LineInfo
	inc	x                                                      
.stabn 604, LineInfo
	cp	mx,0x06                                      
.stabn 605, LineInfo
	jp	z,IsEqu1		; jmp if 1 minute time out  
IsRight8:
.stabn 607, LineInfo
	rcf
.stabn 608, LineInfo
	ret 
IsEqu1:                                                      
.stabn 610, LineInfo
	ld	mx,0			; clr the memory 
IsEquE:  
.stabn 612, LineInfo
	scf                                      
.stabn 613, LineInfo
	ret              
                               
;
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 24h
; Desc   : IsEqu24
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEqu24:       
.stabn 626, LineInfo
	cp	mx,0x04
.stabn 627, LineInfo
	jp	z,IsEqu240
.stabn 628, LineInfo
	jp	IsRight8                     
IsEqu240:
.stabn 630, LineInfo
	push	xl
.stabn 631, LineInfo
	inc	x 
.stabn 632, LineInfo
	cp	mx,0x02            
.stabn 633, LineInfo
	pop	xl                           
.stabn 634, LineInfo
	jp	z,IsEqu241		; jmp if 1 minute time out  
.stabn 635, LineInfo
	jp	IsRight8                                               
IsEqu241:    
.stabn 637, LineInfo
        ldpx	mx,0
.stabn 638, LineInfo
        ld	mx,0 
.stabn 639, LineInfo
	jp	IsEquE

FlashTimeFormat:   
.stabn 642, LineInfo
	ld	x,(0x16)
.stabn 643, LineInfo
	FAN	mx,(1)
.stabn 644, LineInfo
	Jp	z,DspHourOff                                             
;-------------------------------------
; Cate   : display
; By     : Hcy
; Func   : display '24:H' or '12:H'
; Desc   : DspTimeFormat
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
DspTimeFormat:
.stabn 655, LineInfo
	ld	x,(1)
.stabn 656, LineInfo
	fan	mx,(8)
.stabn 657, LineInfo
	jp	nz,DspTime0		; jmp if 24 hour
.stabn 658, LineInfo
	ld	a,1
.stabn 659, LineInfo
	ld	x,0x090
.stabn 660, LineInfo
	calz	DspPattern
.stabn 661, LineInfo
	ld	a,2
.stabn 662, LineInfo
	calz	DspPattern
.stabn 663, LineInfo
	jp	DspTime1
DspTime0:
.stabn 665, LineInfo
	ld	a,2
.stabn 666, LineInfo
	ld	x,0x090
.stabn 667, LineInfo
	calz	DspPattern
.stabn 668, LineInfo
	ld	a,4
.stabn 669, LineInfo
	calz	DspPattern
DspTime1:
.stabn 671, LineInfo
	ld	a,0
.stabn 672, LineInfo
	calz	DspPattern1		; display 'H'
.stabn 673, LineInfo
	ld	a,7
.stabn 674, LineInfo
	calz	DspPattern1		; display ' '
.stabn 675, LineInfo
	jp	DspColonOn
;-------------------------------------                        
; Cate   : Clock                                              
; By     : Hcy                                                
; Func   : check if up to 1 hour                            
; Desc   : IncMinute                                        
; I/P    : --                                                 
; O/P    : --                                                 
; Destroy:                                                    
; Note   : c=0 if not up to 1 minute, c=1 if up to 1 minute   
IncMinute:                                                   
.stabn 686, LineInfo
	ld	x,(0x12)      
.stabn 687, LineInfo
	calz	IncByteD    
.stabn 688, LineInfo
	ld	x,(0x12)                    
.stabn 689, LineInfo
	calz	IsEqu60                    
.stabn 690, LineInfo
	ret                                
;
;-------------------------------------                        
; Cate   : Clock                                              
; By     : Hcy                                                
; Func   : check if up to 1 hour                            
; Desc   : IncHour                                        
; I/P    : --                                                 
; O/P    : --                                                 
; Destroy:                                                    
; Note   : c=0 if not up to 24 hour, c=1 if up to 24 hour   
IncHour:                                                   
.stabn 702, LineInfo
	ld	x,(0x14)      
.stabn 703, LineInfo
	calz	IncByteD    
.stabn 704, LineInfo
	ld	x,(0x14)                    
.stabn 705, LineInfo
	calz	IsEqu24                    
.stabn 706, LineInfo
	ret                                
;
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : clear the byte
; Desc   : ClrByte
; I/P    : x(ram address)
; O/P    : --
; Destroy:
; Note   :
;ClrByte:
;	ld	a,0
;	ld	mx,a
;	inc	x
;	ld	mx,a
;	ret
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : inc setting HOUR
; Desc   : IncSetHour
; I/P    : --
; O/P    : --
; Destroy:
; Note   : 
;IncSetHour:
;	ld	x,TmpRTCHour
;	calz	IncByteD
;	ld	x,TmpRTCHour
;	calz	IsEqu24
;	jp	nc,IncSet0
;	ld	x,TmpRTCHour
;	calz	ClrByte
;IncSet0:
;	ld	y,TmpRTCHourL
;	calz	DspHour
;	ret
	
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : inc setting minute
; Desc   : IncSetMinute
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;IncSetMinute:
;	ld	x,TmpRTCMinute
;	calz	IncByteD
;	ld	x,TmpRTCMinute
;	calz	IsEqu60
;	ld	y,TmpRTCMinuteL
;	calz	DspMinute
;	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	
;---------------------------------------
;---------------------------------------
;	Communication Routine
;---------------------------------------
;---------------------------------------
;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : reload the communication variable
; Desc   : ReloadCommVar
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
;ReloadCommVar:
;	ld	y,CommBufferL
;	ld	my,0		; clr the communication buffer
;	ld	y,CommCount
;	ld	my,04h		; reload the communication bit counter
;	ret

;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : store to the receive buffer
; Desc   : ToRecBuffer
; I/P    : --
; O/P    : --
; Destroy:
; Note   :	
;ToRecBuffer:
;	ld	y,RxStartBufL
;	ld	x,RxNibbleCnt
;	ld	a,mx
;Prog1:
;	ld	YL,a
;Prog2:
;	ld	x,CommBufferL
;	ld	my,mx		; store receive data to receive buffer
;	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 1bh, c=0 if equal 1bh	
;IsEquStartCode:
;	ld	y,RxStartBufL
;	cp	my,0Bh
;	jp	z,IsEquEE
;IsEquE:
;	scf	
;	ret                                            
;IsEquEE:
;	rcf
;	ret   


                                           
;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : is receive command right ? 
; Desc   : IsRightCmd
; I/P    : --
; O/P    : --
; Destroy:
; Note   : c=1 if undefined command, c=0 if defined command
;IsRightCmd:
;	ld	x,RxCommand
;	cp	mx,SHOWLDIGITCMD
;	jp	nz,IsRight0
;	; show Ldigit command
;	ld	x,SumNumRxNibble
;	ld	mx,0ch
;	jp	IsRight8
;IsRight0:
;	cp	mx,SHOWSDIGITCMD
;	jp	nz,IsRight1
;	; show Sdigit command
;	ld	x,SumNumRxNibble
;	ld	mx,1
;IsRight8:
;	rcf
;	ret
;IsRight1:
;	cp	mx,SHOWICONCMD
;	jp	nz,IsRight2
;	; show icon command
;	ld	x,SumNumRxNibble
;	ld	mx,4
;	ld	x,RxNibbleCnt
;	ld	mx,0ch			; 
;	jp	IsRight8
;IsRight2:
;	cp	mx,SHOWMSGCMD
;	jp	nz,IsEquE
;	; show msg command
;	jp	IsRight8

;;-------------------------------------
; Cate   : Display
; By     : Kwan
; Func   : Clear the LCD ram including digits/icons
; Desc   :
; I/P    :
; O/P    :
; 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 970, LineInfo
	JP	Init		; reset vector
.stabn 971, LineInfo
	JP	IntRTC		; clock interrupt -- may only be used to set flag

⌨️ 快捷键说明

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