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

📄 kclock.ms

📁 用SAM72N9写的电子秤文档
💻 MS
📖 第 1 页 / 共 5 页
字号:
.stabs "D:\Hcy_Projects\CLOCK_KITCHEN\SOURCE\CnvLCDDec09\KClock.S", FileName
;
; Copy right Oriental Skill (Asia) Ltd 
; October 24, 2003
;
; Created by Kwan for Testing
;
;
; Scratch Pad memory from 0H ~ 0FH (M0~MF)
; User RAM from 10H ~ 2FH (32 nibbles)
; Stack from 30H~4FH
; LCD RAM from 90H ~ AFH -- However A4H~AFH may be used
; as user RAM because S13~S19 segment are not used
; in this application.
;
;#define	SHOWLDIGITCMD	2
;#define	SHOWSDIGITCMD	3
;#define	SHOWICONCMD	4
;#define	SHOWMSGCMD	5

;#define	CLOCKMODE	0
;#define	WEIGHTMODE	1
;#define	CALIBRATEMODE	2

;#define	KeyHoldTm	M0
;#define	KeyFlags	M1
;#define	RegKeyFlags	1	; same as KeyFlags
;CommCount	EQU	M2	; bit count for comm
;#define	KeyHoldFlag	1
;#define	NewKeyFlag	2
;#define	DisFlashFlag	4
;#define	TimeFormatFlag	8	; 0: 12 hour, 1: 24 hour
;#define		KeyCode	M3
;#define	RegKeyCode	3
;#define	SendData	M4
;#define	RegSendData	4

;#define		Tmr30s	M5
;CommFlag	EQU	M6



;
;#define		RTCSec	10H
;#define		RTCSecL	10H
;#define		RTCSecH	11H
;#define		RTCMin	12H
;#define		RTCMinL	12H
;#define		RTCMinH	13H
;#define		RTCHour	14H
;#define	RTCHourL	14H
;#define	RTCHourH	15H
;


;#define	RxStartBufL	20h	; start code 
;RxCommand	equ	21h
;#define	RxBuffer0	21H	; LSBL, ___1, decimal place
;#define	RxBuffer1	22H	; LSBH
;#define	RxBuffer2	23H	; xxx1
;#define	RxBuffer3	24H
;#define	RxBuffer4	25H	; xx1x
;#define	RxBuffer5	26H
;#define	RxBuffer6	27H	; x1xx
;#define	RxBuffer7	28H
;RxBuffer8	EQU	2aH	; MSBL
;RxBuffer9	EQU	2bH	; MSBH

;RxIcon0		EQU	2ch	; LSB
;RxIcon1		EQU	2dh	; 
;RxIcon2		EQU	2eh	
;RxIcon3		EQU	2fh	; MSB

;#define		RxIcon0	29h
;#define		RxIcon1	2ah
;#define		RxIcon2	2bH
;#define		RxIcon3	2cH
;#define	RxSBuffer	2dH	; SDIGIT

;#define	RxBuffer8	2eh
;#define	RxBuffer9	2fh

;#define	SumNumRxNibble	31h	; 
;

;#define		ModeOpt	33h	; 0: Clock Mode, 1: weighting Mode, 2: Calibration Mode

;#define	DspHourBuf	34H
;#define	DspHourLBuf	34H
;#define	DspHourHBuf	35H	


;#define		AppFlags	16H	
;#define	HalfSecFlag	1
;#define	SecClickFlag	2
;#define	ReqToSendFlag	4	; set when 4 bits has been sent in background
;#define	Rx4BitFlag	8	; set when 4 bits has been received in background

;b0 -- Half second (0->1 0.5 sec, 1->0 1 sec)
;b1 -- second click
;b2 -- RxReady

;#define	CommCount	17H	; bit count for comm
;#define	TmpRTCMinute	18H
;#define	TmpRTCMinuteL	18H	; for the use of time adjustment
;#define	TmpRTCMinuteH	19H
;#define	TmpRTCHour	1AH
;#define	TmpRTCHourL	1aH
;#define	TmpRTCHourH	1bH
;
;#define	CommBufferL	1cH	; Tx/Rx Buffer

;RxNibbleCnt	equ	00h	; 

;#define	RxNibbleCnt	1dh
;#define		KeyFlag	1eH
;NewKey		bit	1eh.0
;KeyHold		bit	1eh.1

;#define	RTC1SecCnt	1fh

;
;
;===========================================================
; Registers
; IC: 6001
;#define		KPort	0E0H
;#define	IO_Key_On	1
;#define	IO_Key_Off	2
;#define		IO_DClk	4
;
;#define		Timer	0E4H	; timer data register
;#define	KPortMask	0E8H	; interrupt mask for K-port
;#define	TimerMask	0EBH	
;#define	KIntFactor	0EDH	; interrupt request flags for Kport
;#define	TIntFactor	0EFH	; interrupt request flags for Timer
;
;#define		RPort	0F3H	; R0 data port
;#define	IO_PowerCtl	1
;#define	IO_DataOut	2
;
;#define		PPort	0F6H	; P0 data port
;#define	IO_Key_Kg	1
;#define	IO_Key_ml	2
;#define	IO_DataIn	8
;
;#define		TimerCR	0F9H
;b2=1 to reset clock timer
;
;#define	HeavyLoad	0FAH	; heavy load protection register
;b3=1 if heavy load, b3=0 if normal load
;
;#define	LCDSwitch	0FBH	;
;b3=1 if static, b3=0 if dynamic
;
;#define	PPortDir	0FCH	; P-port direction register
;b0=1 if whole P-port as output, b0=0 if as inout 
;
;#define	BuzzerFreq	0FDH	; Buzzer freq


;===========================================================
; Registers
; IC: 60R08
;KPort		EQU	2E3H
;IO_Key_On	EQU	1
;IO_Key_Off	EQU	2
;IO_DClk		EQU	4
;
;Timer		EQU	2E0H	; timer data register
;KPortMask	EQU	2E5H	; interrupt mask for K-port
;TimerMask	EQU	2E8H	
;KIntFactor	EQU	2EAH	; interrupt request flags for Kport
;TIntFactor	EQU	2E9H	; interrupt request flags for Timer
;
;RPort		EQU	2EBH	; R0 data port
;IO_PowerCtl	EQU	1
;IO_DataOut	EQU	2
;
;PPort		EQU	2EDH	; P0 data port
;IO_Key_Kg	EQU	1
;IO_Key_ml	EQU	2
;IO_DataIn	EQU	8
;
;TimerCR		EQU	2EEH
;b2=1 to reset clock timer
;
;HeavyLoad	EQU	2E6H	; heavy load protection register
;b3=1 if heavy load, b3=0 if normal load
;
;LCDSwitch	EQU	2E8H	;
;b3=1 if static, b3=0 if dynamic
;
;PPortDir	EQU	2EEH	; P-port direction register
;b0=1 if whole P-port as output, b0=0 if as inout 



;
; constants defintion
;
;#define		Key_On	0111b	; key code corr. to Samsung's code
;#define		Key_Off	1110b
;#define		Key_Kg	1101b
;#define		Key_ml	1011b
;#define		Key_Nil	0

; define by hcy
;#define	Key_OnOff	0110b
;#define	Key_OnKg	0101b

;===========================================================
	.org	0
	
;-----------------------------------------------------------
;-----------------------------------------------------------
;	Display routine
;-----------------------------------------------------------
;-----------------------------------------------------------
;	hgfe dcba
.stabn 220, LineInfo
	retd	0x3f		; 0
.stabn 221, LineInfo
	retd	0x06		; 1
.stabn 222, LineInfo
	retd	0x5b		; 2
.stabn 223, LineInfo
	retd	0x4f		; 3
.stabn 224, LineInfo
	retd	0x66		; 4
.stabn 225, LineInfo
	retd	0x6d		; 5
.stabn 226, LineInfo
	retd	0x7d		; 6
.stabn 227, LineInfo
	retd	0x27		; 7
.stabn 228, LineInfo
	retd	0x7f		; 8
.stabn 229, LineInfo
	retd	0x6f		; 9
.stabn 230, LineInfo
	retd	0x77		; A
.stabn 231, LineInfo
	retd	0x7c		; b
.stabn 232, LineInfo
	retd	0x39		; C
.stabn 233, LineInfo
	retd	0x5e		; d
.stabn 234, LineInfo
	retd	0x79		; E
.stabn 235, LineInfo
	retd	0x71		; F
.stabn 236, LineInfo
	retd	0x76		; H
.stabn 237, LineInfo
	retd	0x38		; L
.stabn 238, LineInfo
	retd	0x50		; r
.stabn 239, LineInfo
	retd	0x73		; P
.stabn 240, LineInfo
	retd	0x78		; t
.stabn 241, LineInfo
	retd	0x3e		; U
.stabn 242, LineInfo
	retd	0x40		; -
.stabn 243, LineInfo
	retd	0x00		; ' '
	
	
	; fraction table
.stabn 247, LineInfo
	retd	0x18		; 
.stabn 248, LineInfo
	retd	0x14
.stabn 249, LineInfo
	retd	0x38
.stabn 250, LineInfo
	retd	0x12
.stabn 251, LineInfo
	retd	0x58
.stabn 252, LineInfo
	retd	0x34
.stabn 253, LineInfo
	retd	0x78
.stabn 254, LineInfo
	retd	0x98
	
DspPattern:
.stabn 257, LineInfo
	ld	b,0
.stabn 258, LineInfo
	jpba

DspPattern1:
.stabn 261, LineInfo
	ld	b,1
.stabn 262, LineInfo
	jpba	
;-------------------------------------
; Cate   : Display
; By     : Hcy
; Func   : display the digit(0--9)
; Desc   : DspDigit
; I/P    : A(0--9),X(address of digit address)
; O/P    : --
; Destroy: A,
; Note   :
DspDigit:
.stabn 273, LineInfo
	calz	DspPattern
.stabn 274, LineInfo
	ret
DspDigit1:
.stabn 276, LineInfo
	calz	DspPattern1
.stabn 277, LineInfo
	ret	
;-------------------------------------
; Cate   : Display
; By     : loren
; Func   : display the icon 
; Desc   : DspColonOn
; I/P    : --
; O/P    : --
; Destroy:
; Note   :
DspColonOn:
.stabn 288, LineInfo
	ld	y,0x0a0
.stabn 289, LineInfo
	or	my,0x01			; display ':'
.stabn 290, LineInfo
	ret
	
;-------------------------------------
; Cate   : Display
; By     : loren
; Func   : display off the icon 
; Desc   : DspColonOff
; I/P    : --
; O/P    : --
; Destroy:
; Note   : 
DspColonOff:
.stabn 302, LineInfo
	ld	y,0x0a0
.stabn 303, LineInfo
	and	my,0b1110
DspCO:
.stabn 305, LineInfo
	ret

;-------------------------------------
;-------------------------------------
; Cate   :Dosplay
; By     :Kwan
; Func   :Flash the colon
; Desc   :
; I/P    :---
; O/P    :
; Destroy:
; Note   : turn on/off the colon according to 
; 	   HalfSecFlag
;
FlashColon:
.stabn 320, LineInfo
	ld	y,(0x33)
.stabn 321, LineInfo
	fan	my,0b1111
.stabn 322, LineInfo
	jp	nz,DspCO		; jmp if not clock mode
	
.stabn 324, LineInfo
	ld	y,(0x16)
.stabn 325, LineInfo
	FAN	my,(1)
.stabn 326, LineInfo
	Jp	z,DspColonOff
.stabn 327, LineInfo
	jp	DspColonOn

FlashHour:
.stabn 330, LineInfo
	ld	x,(0x16)
.stabn 331, LineInfo
	FAN	mx,(1)
.stabn 332, LineInfo
	Jp	z,DspHourOff
;-------------------------------------
; Cate   : Display
; By     : Hcy
; Func   : Display the time
; Desc   : DspTime
; I/P    : y(ram address)
; O/P    : --
; Destroy:
; Note   :
DspTime:
DspHour:
	; display hour xx
;	ld	x,RTCHourH
.stabn 346, LineInfo
	ld	x,(1)
.stabn 347, LineInfo
	fan	mx,(8)
.stabn 348, LineInfo
	jp	nz,DspH0			; jmp if 24 hour format
.stabn 349, LineInfo
	call	IsEquZero
.stabn 350, LineInfo
	jp	c,NDspH00
.stabn 351, LineInfo
	call	IsEqu12
.stabn 352, LineInfo
	jp	c,DspH00		; jmp if hour =12
.stabn 353, LineInfo
	call	Sub12D
.stabn 354, LineInfo
	jp	nc,DspH00		; current time > 12
.stabn 355, LineInfo
	call	CopyByte
;	ld	a,0ah
;	ld	x,098h
;	calz	DspPattern		; 'A'
NDspH00:
.stabn 360, LineInfo
	ld	a,0x01
.stabn 361, LineInfo
	ld	x,0x0a1
.stabn 362, LineInfo
	ld	mx,a			; 'AM'
.stabn 363, LineInfo
	jp	DspH1
DspH00:
;	ld	a,03h
;	ld	x,098h
;	calz	DspPattern1		; 'P'
.stabn 368, LineInfo
	ld	a,0x02
.stabn 369, LineInfo
	ld	x,0x0a1
.stabn 370, LineInfo
	ld	mx,a			; 'PM'
.stabn 371, LineInfo
	jp	DspH1
DspH0:
.stabn 373, LineInfo
	ld	a,7
.stabn 374, LineInfo
	ld	x,0x0a1
.stabn 375, LineInfo
	calz	DspPattern1		; ' ' 	
.stabn 376, LineInfo
	call	CopyByte
.stabn 377, LineInfo
	jp	NDspH0
DspH1:
;	ld	x,DspHourBuf
;	calz	IncByteD
NDspH0:
.stabn 382, LineInfo
	ld	y,(0x34)
.stabn 383, LineInfo
	ld	a,my
DspH2:
.stabn 385, LineInfo
	ld	x,0x092
.stabn 386, LineInfo
	calz	DspDigit              
.stabn 387, LineInfo
	ld	y,(0x35)
.stabn 388, LineInfo
	ld	a,my
.stabn 389, LineInfo
	fan	a,0b1111
.stabn 390, LineInfo
	jp	nz,NewDspH2
.stabn 391, LineInfo
	jp	NewDspH22
NewDspH2:
.stabn 393, LineInfo
	ld	x,0x090
.stabn 394, LineInfo
	calz	DspDigit
.stabn 395, LineInfo
	ret
DspHourOff:
	; off minute xx
.stabn 398, LineInfo
	ld	a,0x07	
.stabn 399, LineInfo
	ld	x,0x092
.stabn 400, LineInfo
	calz	DspDigit1
NewDspH22:
.stabn 402, LineInfo
	ld	a,0x07
.stabn 403, LineInfo
	ld	x,0x090
.stabn 404, LineInfo
	calz	DspDigit1
.stabn 405, LineInfo
	ret
	
FlashMinute:
.stabn 408, LineInfo
	ld	x,(0x16)
.stabn 409, LineInfo
	FAN	mx,(1)
.stabn 410, LineInfo
	Jp	z,DspMinuteOff	

DspMinute:
	; display min xx
;	ld	x,RTCMinH
.stabn 415, LineInfo
	ld	a,my
.stabn 416, LineInfo
	ld	x,0x096
.stabn 417, LineInfo
	calz	DspDigit
;	ld	x,RTCMinL
.stabn 419, LineInfo
	inc	y
.stabn 420, LineInfo
	ld	a,my
.stabn 421, LineInfo
	ld	x,0x094
.stabn 422, LineInfo
	calz	DspDigit
.stabn 423, LineInfo
	ret
DspMinuteOff:
	; off minute xx
.stabn 426, LineInfo
	ld	a,0x07
.stabn 427, LineInfo
	ld	x,0x094
.stabn 428, LineInfo
	calz	DspDigit1	
.stabn 429, LineInfo
	ld	x,0x096
.stabn 430, LineInfo
	calz	DspDigit1
.stabn 431, LineInfo
	ret

	
		
;-------------------------------------
; Cate   : Display
; By     : Hcy
; Func   : dislay the fraction
; Desc   : DspFraction
; I/P    : RxSBuffer(0--9) --> nul,1/8,1/4,3/8,1/2,5/8,3/4,7/8,9/8,nul
; O/P    : --
; Destroy:
; Note   :
DspFraction:
.stabn 445, LineInfo
	ld	y,(0x2d)
.stabn 446, LineInfo
	cp	my,0
.stabn 447, LineInfo
	jp	z,DspF0
.stabn 448, LineInfo
	cp	my,9
.stabn 449, LineInfo
	jp	z,DspF0
.stabn 450, LineInfo
	ld	a,my
.stabn 451, LineInfo
	add	a,0x07		; a+7
.stabn 452, LineInfo
	ld	x,(0x2e)
.stabn 453, LineInfo
	calz	DspPattern1
.stabn 454, LineInfo
	ld	y,(0x2e)
.stabn 455, LineInfo
	ld	a,my
.stabn 456, LineInfo
	ld	x,0x098
.stabn 457, LineInfo
	calz	DspPattern
.stabn 458, LineInfo
	inc	y
.stabn 459, LineInfo
	ld	a,my
.stabn 460, LineInfo
	calz	DspPattern
.stabn 461, LineInfo
	ret
DspF0:
	; display nul/nul
.stabn 464, LineInfo
	ld	a,7
.stabn 465, LineInfo
	ld	x,0x098

⌨️ 快捷键说明

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