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

📄 speed stacks.asm

📁 握手起跑器:当用户双手同时握住产品时,起跑器开始工作,LCD显示.MCU:NTK
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	baz	Reset_keyKEY_NOFREE:	lda	LastKeyH,0	sub	KeyPressH,0	baz	FnKeyProcEnd	lda	LastKeyH,0	sta	KeyPressH,0	andim	KeyPressH,0001b	baz	Power_Key		jmp	FnKeyProcEnd;---------------------------------------------------------------Reset_key:	lda	SysRunFlg,0	ba0	$+2	jmp	FnKeyProcEnd	andim	WaitTFlg,1110b			ldi	JsReg1,0	ldi	JsReg2,0	ldi	JsReg3,0			ldi	JsReg4,0	ldi	JsReg5,0			ldi	MsReg0,0	ldi	MsReg1,0	ldi	MsReg2,0	ldi	MsReg3,0	ldi	SecRegL,0	ldi	SecRegH,0	ldi	MinRegL,0			andim	Stop_flg,0000b		;;	orim	Stop_flg,1000b	ldi	SysTime1,0	ldi	SysTime2,0	ldi	SysTime3,0	orim	PORTA,1100B			andim	LedFFlg,0000b	orim	WaitTFlg,0010b				orim	Key_flg,0001b			andim	Key_flg,0011b			jmp	FnKeyProcEnd	;---------------------------------------------------------------Power_Key:	adim	KeyTime,1	sbi	KeyTime,1	baz	sys_on	sbi	KeyTime,2	baz	$+2	jmp	FnKeyProcEndsys_off:				;关机键关机	andim	KeyTime,0000b	lda	Stop_flg,0	ba0	$+2				jmp	sys_next	ldi	MinRegH,0			ldi	MinRegL,0	ldi	SecRegH,0			ldi	SecRegL,0		ldi	MsReg0,0			ldi	MsReg1,0	ldi	MsReg2,0	ldi	MsReg3,0sys_next:	ldi	JsReg1,0	ldi	JsReg2,0	ldi	JsReg3,0			ldi	JsReg4,0	ldi	JsReg5,0		orim	PORTA,1100B			ldi	LedFFlg,0			ldi	Stop_flg,0	andim	Key_flg,0000b	andim	WaitTFlg,0000b			andim	SysRunFlg,0000b			andim	Key_flg,0000b	ldi	DPL,00H				ldi	DPM,00H	ldi	DPH,06HClearLcdclose:		ldi	INX,00H	adim	DPL,01H	sbi	DPL,0aH				bnz	ClearLcdclose	ldi	PORTB,0100B			orim	XmJsFlg,0001b			jmp	FnKeyProcEnd;----------------------------------------------		sys_on:	orim	SysRunFlg,0001b		;开机标志	orim	PORTA,1100b	andim	LedFFlg,0000b	andim	Stop_flg,0000b;	orim	Stop_flg,1000b	andim	Key_flg,0000b	ldi	SysTime1,0	ldi	SysTime2,0	ldi	SysTime3,0		ldi	XmJsFlg,0	ldi	XmJsRegL,0	ldi	XmJsRegM,0	ldi	XmJsRegH,0		ldi	JsReg1,0	ldi	JsReg2,0	ldi	JsReg3,0		;	ldi	JsReg4,0	ldi	JsReg5,0		ldi	PORTB,0000B					lda	MsReg1,0	or	MsReg2,0	baz	$+3swait_reset:		orim	WaitTFlg,0001b			jmp	FnKeyProcEnd	lda	SecRegL,0	baz	$+2	jmp	swait_reset	andim	WaitTFlg,1110b			orim	WaitTFlg,0010b		orim	Key_flg,0001b		FnKeyProcEnd:	rtni;*****************************************************;		TouchProc;*****************************************************				FnTouchProc:	lda	SysRunFlg,0	ba0	$+2			;system run flg=1?	jmp	FnTouchProcEnd	lda	SysRunFlg,0	ba3	$+2			jmp	FnTouchProcEnd	andim	SysRunFlg,0111b		;	lda	PORTB,0;	ba0	touch_check		lda	PORTB,0	ba0	$+2	jmp	release_p	lda	PORTB,0	ba1	touch_check		;	lda	PORTB,0;	sta	Temp,0;	andim	Temp,0011b;	baz	touch_check		release_p:				;touch_key!=1,release	lda	Key_flg,0			ba0	$+2			jmp	close_redled	lda	Key_flg,0			ba2	$+2				jmp	close_redled	orim	LedFFlg,0001b			orim	Stop_flg,0001b			jmp	FnTouchProcEndclose_redled:	andim	Stop_flg,0000b	andim	LedFFlg,0000b	orim	PORTA,1100B	ANDIM	WaitTFlg,1011B			ldi	JsReg4,0			ldi	JsReg5,0	jmp	FnTouchProcEnd	touch_check:	andim	PORTA,1011B			lda	Key_flg,0	ba0	$+2				jmp	FnTouchProcEnd			lda	LedFFlg,0	ba0	$+2				jmp	first_touch	andim	LedFFlg,1110b			andim	Stop_flg,0000b			ldi	SysTime1,0	ldi	SysTime2,0	ldi	SysTime3,0		orim	WaitTFlg,0001b			orim	PORTA,1000b			andim	Key_flg,1110b			jmp	FnTouchProcEnd	first_touch:	orim	WaitTFlg,0100b			lda	LedFFlg,0			ba1	$+2				jmp	FnTouchProcEnd	andim	WaitTFlg,1101b			ldi	JsReg1,0	ldi	JsReg2,0	ldi	JsReg3,0	andim	LedFFlg,1101b			andim	PORTA,0011B		orim	Key_flg,1100b							FnTouchProcEnd:	rtni;*****************************************************	;LCD DISPLAY PROCESS;*****************************************************	TestLcdproc:	lda	TestFlg,0	ba0	$+2	jmp	FnDispPrcEnd		lda	dispflg,0	ba0	$+2	jmp	FnLcdDispPrc	ldi	dispflg,0	jmp	TestLcd					FnLcdDispPrc:				lda	SysRunFlg,0	ba0	$+2			;run_flg=1	jmp	FnDispPrcEnd	lda	SysRunFlg,0	ba1	$+2				jmp	FnDispPrcEnd	andim	SysRunFlg,1101b		TestLcd:		ldi	TBR,0FH	lda	MsReg1,0	call	06EFH				sta	Seg10,6				lda	TBR,0	STA	Seg9,6					ldi	TBR,0FH	lda	MsReg2,0	call	06EFH				sta	Seg8,6				lda	TBR,0		STA	Seg7,6						ldi	TBR,0FH	lda	SecRegL,0	call	06EFH				sta	Temp,0	orim	Temp,1000b			sta	Seg6,6				lda	TBR,0	STA	Seg5,6						lda	TestFlg,0	ba0	testSech		lda	SecRegH,0	baz	SecNo_diplay			testSech:	;高位!=0,显示	ldi	TBR,0FH	lda	SecRegH,0	call	06EFH				sta	Seg4,6				lda	TBR,0	sta	Seg3,6				jmp	next_display	SecNo_diplay:	ldi	Temp,0000b			sta	Seg4,6	ldi	Temp,0000b			sta	Seg3,6				next_display:	lda	TestFlg,0	ba0	testMinL	lda	MinRegL,0	baz	MinNo_displaytestMinL:		ldi	TBR,0FH	lda	MinRegL,0	call	06EFH			;H-->TBR,L-->A		sta	Temp,0	orim	Temp,1000b				sta	Seg2,6				lda	TBR,0	sta	Seg1,6				jmp	FnDispPrcEndMinNo_display:	ldi	Temp,0000b		;高位=0,不显示	sta	Seg2,6	ldi	Temp,0000b			sta	Seg1,6	FnDispPrcEnd:	rtni;*****************************************************FnJustProc:	lda	SysRunFlg,0	ba0	$+2			;run_flg=1	jmp	FnJustProcEnd		lda	Sec_flg,0		;1S	ba0	$+3	ba3	check_wait	jmp	FnJustProcEnd		andim	Sec_flg,1110b		lda	Stop_flg,0	ba0	$+2	jmp	FnJustProcEnd	adim	SecRegL,01h	daa	SecRegL	ldi	Temp,0	adcm	SecRegH,0		sbi	SecRegH,6h		baz	$+2	jmp	FnJustProcEnd	ldi	SecRegL,0			ldi	SecRegH,0			adim	MinRegL,01h	daa	MinRegL	ldi	Temp,0	adcm	MinRegH		sbi	MinRegH,1h	baz	Fn10Min_off			jmp	FnJustProcEndcheck_wait:	andim	Sec_flg,0111b			lda	WaitTFlg,0	ba0	$+3	ba1	$+2	jmp	FnJustProcEnd	adim	JsReg1,1	daa	JsReg1	ldi	Temp,0	adcm	JsReg2,0	daa	JsReg2	ldi	Temp,0	adcm	JsReg3,0		sbi	JsReg3,3	baz	$+2	jmp	FnJustProcEnd	andim	WaitTFlg,1100b			jmp	FnoffProc		FnJustProcEnd:	rtni;*****************************************************Fn10Min_off:	ldi	MinRegH,0			ldi	MinRegL,0	ldi	SecRegH,0			ldi	SecRegL,0		ldi	MsReg0,0			ldi	MsReg1,0	ldi	MsReg2,0	ldi	MsReg3,0FnoffProc:		ldi	JsReg1,0			ldi	JsReg2,0	ldi	JsReg3,0	ldi	JsReg4,0			ldi	JsReg5,0	orim	PORTA,1100B			andim	LedFFlg,0000b	andim	WaitTFlg,0000b			andim	SysRunFlg,0000b			andim	Stop_flg,0000b			andim	Key_flg,0000b			ldi	SysTime1,0	ldi	SysTime2,0	ldi	SysTime3,0	ldi	DPL,00H				ldi	DPM,00H	ldi	DPH,06HClearLcd:		ldi	INX,00H	adim	DPL,01H	sbi	DPL,0aH				bnz	ClearLcd	jmp 	sys_stop;	jmp	Reset 			FnoffProcend:	rtni;*****************************************************	FnTimeFP:									lda	TimeFlg,0	ba0	$+2	jmp	FnTimeFPend	andim	TimeFlg,1110b	js_check:		lda	WaitTFlg,0					ba2	$+2	jmp	other_proc	adim	JsReg4,1	daa	JsReg4	ldi	Temp,0	adcm	JsReg5,0	sbi	JsReg5,5	baz	$+2	jmp	other_proc						ldi	JsReg4,0	ldi	JsReg5,0	andim	WaitTFlg,1011b			orim	LedFFlg,0010b				other_proc:		adim	Tc0Reg,1	sbi	Tc0Reg,2	baz	$+2	jmp	check_disp	ldi	Tc0Reg,0		orim	SysRunFlg,0100b		flash_proc:		lda	LedFFlg,0						ba0	$+2	jmp	check_disp	eorim	FlashReg,0001b		;FlashReg^1	lda	FlashReg,0	ba0	$+2	jmp	close_led	andim	PORTA,0011b				jmp	check_dispclose_led:	orim	PORTA,1100b					check_disp:			adim	DispRegL,1				sbi	DispRegL,5	baz	$+2	jmp	FnTimeFPend	ldi	DispRegL,0	orim	SysRunFlg,0010b				adim	touchreg,1	sbi	touchreg,2					baz	$+2	jmp	FnTimeFPend	ldi	touchreg,0	orim	SysRunFlg,1000b	   ;	jmp	FnTimeFPend			FnTimeFPend:	rtni			;*****************************************************;		TIMER0 中断服务程序	;*****************************************************Timer0_Isp:													sta	AcBak,00H		;保护AC的值	andim	IRQ,1011B		;清TIMER0中断请求标志	adim	AddReg,1	sbi	AddReg,2	baz	$+2	jmp	next_check	ldi	AddReg,0	orim	TimeFlg,0001b						lda	TestFlg,0	ba0	testjsproc	nextproc:		lda	XmJsFlg,0	ba0	xmjsprocnext_check:	lda	Stop_flg,0	ba0	$+2			;stop_flg=1,开始计数	jmp	systime		andim	Sec_flg,0111b	adim	MsReg1,01h	daa	MsReg1	ldi	Temp,0	adcm	MsReg2,0	daa	MsReg2		ldi	Temp,0	adcm	MsReg3,0												sbi	MsReg3,01h	baz	$+2	jmp	Timer0_Isp_end	ldi	MsReg0,0		;ms寄存器清0	ldi	MsReg1,0	ldi	MsReg2,0	ldi	MsReg3,0	orim	Sec_flg,0001b		;秒标志	jmp	Timer0_Isp_endsystime:	andim	Sec_flg,1110btestp:		adim	SysTime1,1			daa	SysTime1	ldi	Temp,0	adcm	SysTime2,0	daa	SysTime2	ldi	Temp,0	adcm	SysTime3,0	sbi	SysTime3,1	baz	$+2	jmp	Timer0_Isp_end	ldi	SysTime1,0	ldi	SysTime2,0	ldi	SysTime3,0		orim	Sec_flg,1000b		jmp	Timer0_Isp_endxmjsproc:	adim	XmJsRegL,1	daa	XmJsRegL		ldi	Temp,0	adcm	XmJsRegM,0	daa	XmJsRegM		ldi	Temp,0	adcm	XmJsRegH,0	sbi	XmJsRegH,3		;3s	baz	$+2	jmp	Timer0_Isp_end	ldi	XmJsRegL,0	ldi	XmJsRegM,0	ldi	XmJsRegH,0	andim	XmJsFlg,0000b	orim	XmJsFlg,0010b			jmp	Timer0_Isp_end	testjsproc:	adim	testRegL,1	daa	testRegL	ldi	Temp,0	adcm	testRegM,0		sbi	testRegM,5	baz	$+2	jmp	Timer0_Isp_end	ldi	testRegL,0	ldi	testRegM,0;	ldi	testRegH,0			orim	Sec_flg,0010b				Timer0_Isp_end:	ldi	IE,0110b			lda	AcBak,00H			RTNI	;*****************************************************;		外部 中断服务程序	;*****************************************************INT0_Isp:	sta	AcBak,00H			andim	IRQ,0111B				ldi	IE,0110b			lda	AcBak,00H		INT0_Isp_End:	rtni;*****************************************************;	  data   table		;*****************************************************		ORG	06EFH	TJMP;----------------------------------------------------;LCD显示段选码数据表	ORG	06F0H	;     d,e,g,f  dp,c,b,a	RTNW	1101B,0111B		;0	RTNW	0000B,0110B		;1	RTNW	1110B,0011B		;2	RTNW	1010B,0111B		;3	RTNW	0011B,0110B		;4	RTNW	1011B,0101B		;5	RTNW	1111B,0101B		;6	RTNW	0000B,0111B		;7	RTNW	1111B,0111B		;8	RTNW	1011B,0111B		;9;*****************************************************			END

⌨️ 快捷键说明

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