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

📄 kclkr08.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 4 页
字号:
	RCF                 
.stabn 569, LineInfo
	ADD     MX,0x01      
.stabn 570, LineInfo
	inc	x           
.stabn 571, LineInfo
	ADC     MX,0x00      
.stabn 572, LineInfo
	RST	F,0b1011     
.stabn 573, 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 603, LineInfo
	ld	x,(0x10)
.stabn 604, LineInfo
	calz	IncByteD
.stabn 605, LineInfo
	ld	x,(0x10)
.stabn 606, LineInfo
	calz	IsEqu60
.stabn 607, LineInfo
	ret
	
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 60h
; Desc   : IsEqu60
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEqu60:       
.stabn 619, LineInfo
	cp	mx,0x00
.stabn 620, LineInfo
	jp	z,IsEqu0
;	rcf	
;	ret        
;	jp	IsEqu2      
.stabn 624, LineInfo
	jp	IsRight8                              
IsEqu0:
.stabn 626, LineInfo
	inc	x                                                      
.stabn 627, LineInfo
	cp	mx,0x06                                      
.stabn 628, LineInfo
	jp	z,IsEqu1		; jmp if 1 minute time out  
IsRight8:
.stabn 630, LineInfo
	rcf
.stabn 631, LineInfo
	ret 
IsEqu1:                                                      
.stabn 633, LineInfo
	ld	mx,0			; clr the memory 
IsEquE:  
.stabn 635, LineInfo
	scf                                      
.stabn 636, LineInfo
	ret              
                               
;
;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : is che memory equ 24h
; Desc   : IsEqu24
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
IsEqu24:       
.stabn 649, LineInfo
	cp	mx,0x04
.stabn 650, LineInfo
	jp	z,IsEqu240
.stabn 651, LineInfo
	jp	IsRight8                     
IsEqu240:
.stabn 653, LineInfo
	push	xl
.stabn 654, LineInfo
	inc	x 
.stabn 655, LineInfo
	cp	mx,0x02            
.stabn 656, LineInfo
	pop	xl                           
.stabn 657, LineInfo
	jp	z,IsEqu241		; jmp if 1 minute time out  
.stabn 658, LineInfo
	jp	IsRight8                                               
IsEqu241:    
.stabn 660, LineInfo
        ldpx	mx,0
.stabn 661, LineInfo
        ld	mx,0 
.stabn 662, LineInfo
	jp	IsEquE

FlashTimeFormat:   
.stabn 665, LineInfo
	ld	x,(0x16)
.stabn 666, LineInfo
	FAN	mx,(1)
.stabn 667, 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 678, LineInfo
	ld	x,(1)
.stabn 679, LineInfo
	fan	mx,(8)
.stabn 680, LineInfo
	jp	nz,DspTime0		; jmp if 24 hour
.stabn 681, LineInfo
	ld	a,1
; remark for 60r08
;	ld	x,090h
.stabn 684, LineInfo
	ld	x,0x040
.stabn 685, LineInfo
	calz	DspPattern
.stabn 686, LineInfo
	ld	a,2
.stabn 687, LineInfo
	calz	DspPattern
.stabn 688, LineInfo
	jp	DspTime1
DspTime0:
.stabn 690, LineInfo
	ld	a,2
;; remark for 60r08
;	ld	x,090h
.stabn 693, LineInfo
	ld	x,0x040
.stabn 694, LineInfo
	calz	DspPattern
.stabn 695, LineInfo
	ld	a,4
.stabn 696, LineInfo
	calz	DspPattern
DspTime1:
.stabn 698, LineInfo
	ld	a,0
.stabn 699, LineInfo
	calz	DspPattern1		; display 'H'
.stabn 700, LineInfo
	ld	a,7
.stabn 701, LineInfo
	calz	DspPattern1		; display ' '
.stabn 702, 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 713, LineInfo
	ld	x,(0x12)      
.stabn 714, LineInfo
	calz	IncByteD    
.stabn 715, LineInfo
	ld	x,(0x12)                    
.stabn 716, LineInfo
	calz	IsEqu60                    
.stabn 717, 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 729, LineInfo
	ld	x,(0x14)      
.stabn 730, LineInfo
	calz	IncByteD    
.stabn 731, LineInfo
	ld	x,(0x14)                    
.stabn 732, LineInfo
	calz	IsEqu24                    
.stabn 733, 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:	
.stabn 947, LineInfo
	ld	b,(0b0111)
.stabn 948, LineInfo
	ld	x,(0x2E3)
.stabn 949, LineInfo
        fan	mx,(1)
.stabn 950, LineInfo
	jp	nz,KeyFound		; br if Key_on is preseed (=1)

.stabn 952, LineInfo
	ld	b,(0b1110)
.stabn 953, LineInfo
	fan	mx,(2)
.stabn 954, LineInfo
	jp	nz,KeyFound		; br if Key_off is preseed
;	
.stabn 956, LineInfo
	ld	b,(0b1101)
.stabn 957, LineInfo
	ld	x,(0x2ED)
.stabn 958, LineInfo
	fan	mx,(1)
.stabn 959, LineInfo
	jp	nz,KeyFound		; br if Key_Kg is preseed
;
.stabn 961, LineInfo
	ld	b,(0b1011)
.stabn 962, LineInfo
	fan	mx,(2)
.stabn 963, LineInfo
	jp	nz,KeyFound		; br if Key_ml is preseed
;
.stabn 965, LineInfo
	LD	X,(1)
.stabn 966, LineInfo
	AND	MX, 0x0f-(1)
NotNewKey:
.stabn 968, LineInfo
	RZF				; return with Z=0 
.stabn 969, LineInfo
	RET
KeyFound:
.stabn 971, LineInfo
	LD	X,(1)
.stabn 972, LineInfo
	FAN	MX,(1)
.stabn 973, LineInfo
	JP	nz,NotNewKey		; br if not new Key
.stabn 974, LineInfo
	OR	MX,(2)+(1)	; set key flag
.stabn 975, LineInfo
	LD	(M3),B
.stabn 976, LineInfo
	SZF				; return with Z-1 if new key MbB
.stabn 977, LineInfo
	RET

;===============================================	
; Reset vectors are located at page 1
	.org	0x100
.stabn 982, LineInfo
	JP	Init		; reset vector
.stabn 983, LineInfo
	JP	IntRTC		; clock interrupt -- may only be used to set flag
;
	.org	0x104
.stabn 986, 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 1002, LineInfo
	ld	x,(0x2E9)
.stabn 1003, LineInfo
	ld	a,mx		; read and clear any interrupt request flags
.stabn 1004, LineInfo
	fan	a,0b0010		; chk 1/8 sec
.stabn 1005, LineInfo
	jp	z,TimeSet00
.stabn 1006, LineInfo
	inc	(M0)	; inc the keyhold time
.stabn 1007, LineInfo
	calz	KeyScan
TimeSet00:	
.stabn 1009, LineInfo
	fan 	a,0b0100			; chk 1/2 sec
.stabn 1010, LineInfo
	jp	z,TimeSet01
.stabn 1011, LineInfo
	call	ToggleHalfSecFlag	
.stabn 1012, LineInfo
	ld	x,(0x16)
.stabn 1013, LineInfo
	fan	mx,(2)
TimeSet01:
.stabn 1015, LineInfo
	jp	z,TimeS0		; br if just 0.5 sec
;	
.stabn 1017, LineInfo
	and	mx,0x0f-(2)	; clear the bit
; update the clock per 1 min
;	
.stabn 1020, LineInfo
	calz	IncSecond
.stabn 1021, LineInfo
	jp	nc,TimeS0		; No display update if change in second only
.stabn 1022, LineInfo
	calz	IncMinute
.stabn 1023, LineInfo
	jp	nc,TimeS0
.stabn 1024, LineInfo
	calz	IncHour
TimeS0:	
.stabn 1026, LineInfo
	ret

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : toggle the half sec flag
; Desc   : ToggleHalfSecFlag
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
ToggleHalfSecFlag:
.stabn 1038, LineInfo
	ld	x,(0x16)
.stabn 1039, LineInfo
	xor	mx,(1)
.stabn 1040, LineInfo
	fan	mx,(1)
.stabn 1041, LineInfo
	jp	nz,xToggleHalfS
.stabn 1042, LineInfo
	or	mx,(2)	; set flag if from 1->0
xToggleHalfS:
.stabn 1044, LineInfo
	ret

;-------------------------------------
; Cate   : Clock
; By     : Hcy
; Func   : inc setting HOUR
; Desc   : IncSetHour
; I/P    : --
; O/P    : --
; Destroy:
; Note   : 
IncSetHour:
.stabn 1056, LineInfo
	ld	x,(0x1A)
.stabn 1057, LineInfo
	calz	IncByteD
.stabn 1058, LineInfo
	ld	x,(0x1A)
.stabn 1059, LineInfo
	calz	IsEqu24
.stabn 1060, LineInfo
	jp	nc,IncSet0
.stabn 1061, LineInfo
	ld	x,(0x1A)
.stabn 1062, LineInfo
	call	ClrByte
IncSet0:
.stabn 1064, LineInfo
	ld	y,(0x1a)
.stabn 1065, LineInfo
	calz	DspHour
.stabn 1066, 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:
.stabn 1078, LineInfo
	ld	a,4
Copy0:
.stabn 1080, LineInfo
	ld	my,mx
.stabn 1081, LineInfo
	inc	x
.stabn 1082, LineInfo
	inc	y
.stabn 1083, LineInfo
	add	a,0x0f		; dec a
.stabn 1084, LineInfo
	jp	nz,Copy0
.stabn 1085, LineInfo
	ret		

;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : reload the communication variable
; Desc   : ReloadCommVar
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
ReloadCommVar:
.stabn 1097, LineInfo
	ld	y,(0x1c)
.stabn 1098, LineInfo
	ld	my,0		; clr the communication buffer
.stabn 1099, LineInfo
	ld	y,(0x17)
.stabn 1100, LineInfo
	ld	my,0x04		; reload the communication bit counter
.stabn 1101, LineInfo
	ret
;-------------------------------------
; Cate   : communication
; By     : Hcy
; Func   : store to the receive buffer
; Desc   : ToRecBuffer
; I/P    : --
; O/P    : --
; Destroy:
; Note   :	
ToRecBuffer:
.stabn 1112, LineInfo
	ld	y,(0x20)
.stabn 1113, LineInfo
	ld	x,(0x1d)
.stabn 1114, LineInfo
	ld	a,mx
Prog1:
.stabn 1116, LineInfo
	ld	YL,a
Prog2:
.stabn 1118, LineInfo
	ld	x,(0x1c)
.stabn 1119, LineInfo
	ld	my,mx		; store receive data to receive buffer
.stabn 1120, LineInfo
	ret
;;-------------------------------------
; Cate   : Display
; By     : Kwan
; Func   : Clear the LCD ram including digits/icons
; Desc   :
; I/P    :
; O/P    :
; Destroy:
; Note   :
LCDClr:
.stabn 1131, LineInfo
	LD	x,0x90
LCDClr0:
.stabn 1133, LineInfo
	ldpx	mx,0
.stabn 1134, LineInfo
	cp	xh,0x0b		; LCD ram from 90 to AFH
.stabn 1135, LineInfo
	jp	nz, LCDClr0
.stabn 1136, LineInfo
	ret
	
;-------------------------------------
; Cate   : Clock
; By     : Hcy

⌨️ 快捷键说明

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