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

📄 cm-941.asm

📁 本程序是测试脂肪的程序,利用他可以测试一个人的身上有多少脂肪,但是精度不是很高的
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		ANDI	KeyDoneFlg,	8
		JNZ		Exit_KeyProcess
		ORI*	KeyDoneFlg,	8
			
		ORI*	FatModeFlg,	4			;FatModeFlg.B2 represent default status.
		
		ANDI*	FatModeFlg,	1100B
		LDS		Age2,		3
		LDS		Age1,		0
		LDS		Height4,	1
		LDS		Height3,	7
		LDS		Height2,	0
		LDS		Height1,	0
		LDS		Weight4,	0
		LDS		Weight3,	6	
		LDS		Weight2,	5
		LDS		Weight1,	0
		ANDI*	OptionR,	7
		
		LDS		BMI1,		5
		LDS		BMI2,		2
		LDS		BMI3,		2
		LDS		FatLevel,	2
		LDS		P_FAT1,		0		
		LDS		P_FAT2,		0		
		LDS		P_FAT3,		0		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		
S_Key:	
		ANDI	FatModeFlg,	4
		JNZ		Exit_KeyProcess			;enter default parameter just now
		SUBI	MainMode,	4
		JNZ		Exit_KeyProcess
		ANDI	FatModeFlg,	1
		JNZ		Exit_KeyProcess
										;MainMode=4 & no set unit mode
		
		LDS		FatTest1_1,	0
		LDS		FatTest2_1,	0
		LDS		FatTest3_1,	0
		
		LDS		M_Fat2hz,	1
		LDS		TestFatCnt,	3
		LDS		Delay5s,	4
		LDS		MaxM_FatTm,	4
		LDS		M_FatFlg,	1
		LDS		R180ms1,	7
		LDS		R180ms2,	0BH
		ELC		111111111b
		LDS		PortA,		0
		OPA		PortA
		SF		4h
		
		ORI*	OptionR,	1
		SIE*	18H
		TM2X	001000011B
		RTS
;;;;;;;;;;;;;;;;;
LongKeyProcess:		
		SUBI	KeyValue1,	8
		JNZ		LongKeyProcess3
		LDA		Keyms
		JNZ		LongKeyProcess3
		SUBI	MainMode,	1
		JZ		SetClock_F_Key
		SUBI	MainMode,	2
		JZ		Alarm_F_Key
		SUBI	MainMode,	3
		JZ		Timer_F_Key
		RTS
LongKeyProcess3:		
		ANDI	KeyDoneFlg,	2
		JNZ		LongKeyProcess1
		LDA		KeyS
		JNZ		Exit_KeyProcess
		ORI*	KeyDoneFlg,2
		LDS		Keyms,		1
		CALL	ActiveTMR2
		RTS
LongKeyProcess1:
		LDA		MainMode
		JNZ		LongKeyProcess2
		ANDI	KeyDoneFlg,	8
		JNZ		Exit_KeyProcess
		
		LDS		KeyDoneFlg,	0BH
		LDS		MainMode,	1
		LDS		Mode1,		0
		ORI*	FlgSet_12Hr,2
		LDA		Min_L
		STA		SData1
		LDA		Min_H
		STA		SData2
		LDA		Hr_L
		STA		SData3
		LDA		Hr_H
		STA		SData4		
		JMP		SetKeySound
		
LongKeyProcess2:
		LDA		Keyms
		JNZ		Exit_KeyProcess
		LDS		Keyms,		1		
		
		SUBI	KeyValue1,	2
		JZ		LongA_Key
		SUBI	KeyValue1,	4
		JZ		LongT_Key
		RTS
LongA_Key:		
		SUBI	MainMode,	1
		JZ		LongA_Key_SetClock
		SUBI	MainMode,	2
		JZ		LongA_Key_Alm
		SUBI	MainMode,	3
		JZ		LongA_Key_Tmr
LongA_Key_Fat:
		ANDI	FatModeFlg,	1
		JNZ		Exit_KeyProcess
		SUBI	Mode1,		1
		JZ		Fat_A_Key1
		SUBI	Mode1,		2
		JZ		Fat_A_Key2
		SUBI	Mode1,		3
		JZ		Fat_A_Key3
		RTS
LongA_Key_Tmr:
		LDS		TempR0,		2
		SUB		Mode1
		JNZ		Timer_A_Key
		RTS
LongA_Key_Alm:
		SUBI	Mode1,		1
		JZ		IncHr
		SUBI	Mode1,		2
		JZ		IncMin
		RTS		
LongA_Key_SetClock:		
		LDA		Mode1
		JZ		IncHr
		JMP		IncMin
;;;;;;;;;;		
LongT_Key:		
		SUBI	MainMode,	1
		JZ		LongT_Key_SetClock
		SUBI	MainMode,	2
		JZ		LongT_Key_Alm
		SUBI	MainMode,	3
		JZ		LongT_Key_Tmr
LongT_Key_Fat:
		ANDI	FatModeFlg,	1
		JNZ		Exit_KeyProcess
		SUBI	Mode1,		1
		JZ		Fat_T_Key1
		SUBI	Mode1,		2
		JZ		Fat_T_Key2
		SUBI	Mode1,		3
		JZ		Fat_T_Key3
		RTS
LongT_Key_Tmr:
		LDS		TempR0,		2
		SUB		Mode1
		JNZ		Timer_T_Key
		RTS
		
LongT_Key_Alm:
		SUBI	Mode1,		1
		JZ		DecHr
		SUBI	Mode1,		2
		JZ		DecMin
		RTS		
LongT_Key_SetClock:		
		LDA		Mode1
		JZ		DecHr
		JMP		DecMin


		
		
		
		

NoKey:
		ANDI	KeyDoneFlg,	4
		JZ		NoKey1
		EORI*	FlgSet_12Hr,	1
		LDS		KeyDoneFlg,	0	
SetKeySound:		
		ALM		80H
		LDS		KeySound,	2
ActiveTMR2:
		ANDI	OptionR,	1
		JNZ		Exit_KeyProcess
		SIE*	18H
		ORI*	OptionR,	1
		TM2X	000000011B                      ;(000)512  4*512/32.768 =62.5ms             	
		RTS

NoKey1:
		LDS		KeyDoneFlg,	0					;Inactive TMR2 int
		LDA		KeySound
		JNZ		Exit_KeyProcess
		LDA		M_FatFlg
		JNZ		Exit_KeyProcess
		ANDI	AlmFlg,		0110B
		JNZ		$+3
		ANDI*	OptionR,	1110B
		SIE*	08H
Exit_KeyProcess:
		RTS
;;;;;;;;;;;;;;;;;;;;;;;;		
DisplayProcess:		
		LDA		MainMode
		JZ		DlyClock
		SUBI	MainMode,	1
		JZ		DlySetClock
		SUBI	MainMode,	2
		JZ		DlyAlarm
		SUBI	MainMode,	3
		JZ		DlyTimer
DlyFat:
		LDA		M_FatFlg
		JNZ		DlyM_FatMode
		LDA		R_Error
		JNZ		Dly_Error
		
		ANDI	FatModeFlg,	1
		JNZ		DlyFat_1
		LDA		Mode1
		JZ		DlyFat0
		SUBI	Mode1,		1
		JZ		DlyFat1
		SUBI	Mode1,		2
		JZ		DlyFat2
		SUBI	Mode1,		3
		JZ		DlyFat3
		SUBI	Mode1,		4
		JZ		DlyFat4
DlyFat5:			;DISPLAY BMI
		
		MRW		Dummy,		BMI1
		LCT		4,			Dummy
		MRW		Dummy,		BMI2
		LCT		3,			Dummy
		MRW		Dummy,		BMI3
		LCB		2,			Dummy      ;Display BMI Data
		LDS		Dummy,		0
		LCP		1,			Dummy
		
		LDS		Dummy,		8
		LDS		TempR0,		0
		LCP		8,			Dummy	   ;Display BMI ICON
		LCP		7,			Dummy	   ;Display ,
		
		LDS		Dummy,		2
		LDS		TempR0,		0			
		LCP		0,			Dummy
		LCP		5,			Dummy   	;DISPLAY POINTER ICON
		
		LDS		Dummy,		2
		ANDI	OptionR,	8
		JZ		$+2
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		9,			Dummy       ;GENDER ICON
		RTS
DlyFat4:
		ANDI	KeyDoneFlg,	1
		JNZ		DlyFat4_0
		LDA		R_2Hz
		JNZ		DlyFat4_1
DlyFat4_0:		
		LDS		Dummy,		2
		LDS		TempR0,		8
		AND 	SData1
		JZ		$+2
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		9,			Dummy 
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		8,			Dummy
		MRW		Dummy,		Age2
		LCT		3,			Dummy
		MRW		Dummy,		Age1
		LCT		4,			Dummy
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		7,			Dummy
		RTS
DlyFat4_1:			
		LDS		Dummy,		0
		LCP		9,			Dummy
		RTS

DlyFat3:
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		7,			Dummy
		LCP		9,			Dummy
		
		ANDI	KeyDoneFlg,	1
		JNZ		DlyFat3_0
		LDA		R_2Hz
		JNZ		DlyFat3_1
DlyFat3_0:		
		MRW		Dummy,		SData1
		LCT		4,			Dummy
		MRW		Dummy,		SData2
		LCT		3,			Dummy
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		8,			Dummy
		RTS
DlyFat3_1:
		LDS		Dummy,		0
		LCP		3,			Dummy
		lCP		4,			Dummy
		RTS				

DlyFat2:
		ANDI	KeyDoneFlg,	1
		JNZ		$+3
		LDA		R_2Hz
		JNZ		DlyFat2_2
		
		MRW		Dummy,		SData1
		LCT		4,			Dummy			
		MRW		Dummy,		SData2
		LCT		3,			Dummy
		MRW		Dummy,		SData3
		LCT		2,			Dummy
		MRW		Dummy,		SData4
		LCB		1,			Dummy
		
		ANDI	FatModeFlg,	2
		JZ		DlyFat2_1
DlyFat2_0								;inch									
		LDS		Dummy,		0110B
		LDS		TempR0,		0
		LCP		7,			Dummy
		LDS		Dummy,		0
		LDS		TempR0,		1
		LCP		8,			Dummy
		RTS
DlyFat2_1:								;cm
		LDS		Dummy,		8
		LDS		TempR0,		0
		LCP		7,			Dummy
		LDS		Dummy,		0
		LDS		TempR0,		0011B
		LCP		8,			Dummy
		RTS
DlyFat2_2:
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		LCP		7,			Dummy
		RTS
;;;;;;;;;;;;;;;;;
DlyFat1:
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		6,			Dummy
		LCP		0AH,		Dummy
		LCP		9,			Dummy
		LDS		Dummy,		8
		LDS		TempR0,		0
		LCP		7,			Dummy
		
		ANDI	KeyDoneFlg,	1
		JNZ		$+3
		LDA		R_2Hz
		JNZ		DlyFat1_2
		
		MRW		Dummy,		SData1
		LCT		4,			Dummy			
		MRW		Dummy,		SData2
		LCT		3,			Dummy
		MRW		Dummy,		SData3
		LCT		2,			Dummy
		MRW		Dummy,		SData4
		LCB		1,			Dummy
		
		ANDI	FatModeFlg,	2
		JNZ		DlyFat1_1
DlyFat1_0								;lb									
		LDS		Dummy,		0010B
		LDS		TempR0,		0
		LCP		8,			Dummy
		RTS
DlyFat1_1:								;kg
		LDS		Dummy,		0100B
		LDS		TempR0,		0
		LCP		8,			Dummy
		RTS
DlyFat1_2:
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		LCP		7,			Dummy
		RTS
		

DlyFat0:
		LDS		Dummy,		0
		LCP		6,			Dummy
		LCP		0AH,		Dummy
        LCP		1,			Dummy
		
		MRW		Dummy,		FatLevel
		LDS		TempR0,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		MRW		Dummy,		P_FAT3
		LCT		2,			Dummy
		MRW		Dummy,		P_FAT2
		LCT		3,			Dummy
		MRW		Dummy,		P_FAT1
		LCT		4,			Dummy
	
		LDS		Dummy,		1000B
		LDS		TempR0,		0
		LCP		7,			Dummy
		
		LDS		Dummy,		0
		LDS		TempR0,		0100B
		LCP		8,			Dummy
		
		LDS		Dummy,		1
		ANDI	OptionR,	8
		JNZ		$+2
		LDS		Dummy,		0
		LDS		TempR0,		0
		LCP		9,			Dummy       ;GENDER ICON
		RTS		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dly_Error:
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		7,			Dummy
		LCP		8,			Dummy
		LCP		9,			Dummy
		LCP		6,			Dummy
		LCP		0AH,		Dummy
		
		
		LDS		Dummy,		1001B
		LDS		TempR0,		0111B
		LCP		1,			Dummy
		LDS		Dummy,		0
		LDS		TempR0,		0101B
		LCP		2,			Dummy
		LCP		3,			Dummy
		LDS		Dummy,		0
		LCP		4,			Dummy
		RTS		
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		

DlyM_FatMode:
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		7,			Dummy
		
		LDS		TempR0,		4
		SUB		MaxM_FatTm
		JZ		DlyDelay2S
		
		LDA		Delay5s
		JZ		ExtinguishZero
		
		LDS		TempR0,		1
		SUB		Delay5s
		JZ		Dly4zero
		LDS		TempR0,		2
		SUB		Delay5s
		JZ		Dly3zero
		LDS		TempR0,		3
		SUB		Delay5s
		JZ		Dly2zero
Dly1zero:	
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		1,			Dummy
		LDS		Dummy,		0
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		RTS
Dly2zero:		
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		1,			Dummy
		LCP		2,			Dummy
		RTS
Dly3zero:		
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		RTS				
Dly4zero:		
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		RTS
ExtinguishZero:	
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		RTS
;;;;;;;;;;;;;;;;;;;;
DlyDelay2S:
		LDS		Dummy,		0
		LDS		TempR0,		0100B
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		
		LDS		Dummy,		0
		LDS		TempR0,		0100B
		LCP		8,			Dummy
		LDS		Dummy,		2
		ANDI	OptionR,	8
		JZ		$+2
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		9,			Dummy       ;GENDER ICON
		RTS
;-------------		
DlyFat_1:								;DLY Unit
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		1,			Dummy
		LCP		2,			Dummy
		LCP		3,			Dummy
		LCP		4,			Dummy
		LCP		5,			Dummy
		LCP		6,			Dummy
		LCP		9,			Dummy
		LCP		0AH,		Dummy
		ANDI	KeyDoneFlg,	1
		JNZ		$+3
		LDA		R_2Hz
		JZ		ExtinguishUnit
	
		LDS		TempR0,		2
		AND		SData5
		JNZ		DlyFat_1_1
		LDS		Dummy,			0
		LCP		7,				Dummy
		LDS		Dummy,			0010B		;Kg_Cm
		LDS		TempR0,			0010B
		LCP		8,				Dummy
		RTS
DlyFat_1_1:									;inch_lb
		LDS		Dummy,			0110B
		LDS		TempR0,			0
		LCP		7,				Dummy
		LDS		Dummy,			0100B
		LDS		TempR0,			0
		LCP		8,				Dummy
		RTS		
ExtinguishUnit:		
		LDS		 Dummy,		0
		LCP		 7,			Dummy
		LCP		 8,			Dummy
		RTS
;;;;;;;;;;;;;;;;;;;;
DlyTimer:									;MainMode=2
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		6,			Dummy
		LCP		8,			Dummy
		LCP		9,			Dummy		
		LCP		0AH,		Dummy
		
		ANDI	KeyDoneFlg,	1
		JNZ		LightC_Tmr	
		LDA		R_2Hz
		JZ		LightC_Tmr
		
		LDA		Mode1
		JZ		ExtinguishTmr_Hr
		SUBI	Mode1,		1		
		JZ		ExtinguishTmr_Min
		
		LDS		Dummy,		0				;Runing
		LCP		0AH,		Dummy
		RTS
ExtinguishTmr_Min:
		LDS		Dummy,		0
		LCP		3,			Dummy	
		LCP		4,			Dummy
		RTS
ExtinguishTmr_Hr:
		LDS		Dummy,		0
		LCP		1,			Dummy	
		LCP		2,			Dummy
		RTS	
LightC_Tmr:									
		MRW		Dummy,		SData4
		LCB 	1,			Dummy		
		MRW		Dummy,		SData3
		LCT		2,			Dummy
		MRW		Dummy,		SData2
		LCT		3,			Dummy
		MRW		Dummy,		SData1
		LCT		4,			Dummy
		LDS		Dummy,		0110B
		LDS		TempR0,		0
		LCP		7,			Dummy
		
		SUBI	Mode1,		2
		JNZ		Exit_DlyTimer
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		0AH,		Dummy
Exit_DlyTimer:		
		RTS
;;;;;;;;;;;;;
DlyAlarm:									;MainMode=2
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		8,			Dummy
		LCP		9,			Dummy
		
		LDA		Mode1
		JZ		DlyAlarm0
		
		ANDI	KeyDoneFlg,	1
		JNZ		LightC_Alm	
		LDA		R_2Hz
		JZ		LightC_Alm
		
		SUBI	Mode1,		1
		JZ		ExtinguishAlmHr
ExtinguishAlmMin:							;adjust min
		LDS		Dummy,		0
		LCP		3,			Dummy	
		LCP		4,			Dummy
		RTS
ExtinguishAlmHr:							;adjust Hr
		LDS		Dummy,		0
		LCP		1,			Dummy	
		LCP		2,			Dummy
		RTS

LightC_Alm:
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		0AH,		Dummy		     ;ALM ICON	
		
		MRW		Dummy,		SData1
		LCT		4,			Dummy
		MRW		Dummy,		SData2
		LCT		3,			Dummy
		LDA		SData3
		STA		TempR1
		LDA		SData4
		STA		TempR2
		CALL	Set12hr
		MRW		Dummy,		TempR1
		LCT		2,			Dummy
		MRW		Dummy,		TempR2
		LCB		1,			Dummy		
		LDS		TempR0,		0
		LCP		6,			DisplayR
		JMP		LightColone
;;;;;;;;								
DlyAlarm0:								;ALM ON /OFF SELECT
		ANDI	KeyDoneFlg,	1
		JNZ		DlyAlarm0_1
		
		LDS		Dummy,		0			;FLASH ALM ICON
		LDA		R_2Hz
		JZ		$+2
DlyAlarm0_1:		
		LDS		Dummy,		1
		LDS		TempR0,		0
		LCP		0AH,		Dummy			
		
		LDS		Dummy,		0
		LCP		1,			Dummy
		LCP		6,			Dummy
		LCP		7,			Dummy
		
		ANDI	AlmFlg,		1
		JZ		DlyOFF
DlyOn:
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		2,			Dummy
		LDS		Dummy,		0100B
		LDS		TempR0,		0101B
		LCP		3,			Dummy	
		LDS		Dummy,		0
		LCP		4,			Dummy
		RTS		
DlyOFF:									;DLY OFF
		LDS		Dummy,		1100B
		LDS		TempR0,		0101B
		LCP		2,			Dummy
		LDS		Dummy,		0001B
		LDS		TempR0,		0111B
		LCP		3,			Dummy
		LCP		4,			Dummy					
		RTS		
;;;;;;;;;;;;;;;;
DlySetClock:							;MainMode=1
		LDS		Dummy,		0
		LCP		0,			Dummy
		LCP		5,			Dummy
		LCP		8,			Dummy
		LCP		9,			Dummy
		LCP		0AH,			Dummy
		
		ANDI	KeyDoneFlg,	1			;when have Key, display data 
		JNZ		LightC_Clk	  
		LDA		R_2Hz
		JZ		LightC_Clk
		
		LDA		Mode1
		JZ		ExtinguishClockHr
ExtinguishClockMin:						;adjust clock_Min
		LDS		Dummy,		0
		LCP		3,			Dummy	
		LCP		4,			Dummy

⌨️ 快捷键说明

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