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

📄 lcdcharge.asm

📁 sonix 单片机编写的充电程序。希望对编充电程序有所帮助。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	B0BSET		LCD_M
	B0BTS0		LowF
	B0BSET		LCD_LOW
	B0BTS1		LowF
	B0BSET		LCD_HiGH
	B0BTS0		LilonF
	B0BSET		LCD_Lilon
	B0BTS0		BatteryF
	B0BSET		LCD_Bat
	B0BTS0		P1F
	B0BSET		LCD_P1
	B0BTS0		P2F
	B0BSET		LCD_P2
	B0BTS0		P3F
	B0BSET		LCD_P3
	B0BTS0		ErrorF
	B0BSET		LCD_Berror
	B0BTS0		HF
	B0BSET		LCD_H
	B0MOV		Y,#0
	RET	
;============================================================================	
;============================================================================	
;============================================================================	
CountmH:B0BTS1		ChargeF
	RET
	DECMS		Second60	;
	RET
Cnt00mAh:
	MOV		A,#20
	B0MOV		Second60,A
	B0BTS0		P1FullF		;Cnt mh
	JMP		Cnt01mAh
	B0MOV		A,A0Value
	B0BTS0		FZ
	JMP		Cnt01mAH
	B0MOV		A,mHValue
	ADD		Cntmh00,A
	B0BTS0		FC
	INCMS		Cntmh01
Cnt01mAh:
	B0BTS0		P2FullF
	JMP		Cnt02mAh
	B0MOV		A,A1Value
	B0BTS0		FZ
	JMP		Cnt02mAH
	B0MOV		A,mHValue
	ADD		Cntmh10,A
	B0BTS0		FC
	INCMS		Cntmh11	
Cnt02mAh:
	B0BTS0		P3FullF
	JMP		Cnt03mAh
	B0MOV		A,A2Value
	B0BTS0		FZ
	JMP		Cnt03mAH
	B0MOV		A,mHValue
	ADD		Cntmh20,A
	B0BTS0		FC
	INCMS		Cntmh21	
Cnt03mAh:
	B0BTS0		P1FullF
	RET
	B0MOV		A,A3Value
	B0BTS0		FZ
	RET
	B0MOV		A,mHValue
	ADD		Cntmh30,A
	B0BTS0		FC
	INCMS		Cntmh31	
	RET
;============================================================================	
W5SecondEnd:
	B0MOV		A,Wait5s
	B0BTS0		FZ
	RET
	DECMS		Wait5s
	RET
	CALL		CountmH
	MOV		A,#150
	B0MOV		Wait5s,A
	B0BSET		Is5sF
	INCMS		Sum2
	MOV		A,#5
	XOR		A,Sum2
	B0BTS0		FZ
	B0BCLR		Sum2.2
	B0BTS0		FZ
	B0BSET		ArrayF
 	B0BTS0		ChargeF
 	JMP		DispWhich
	CALL		DispSum1
	CALL		LCDdisplay
	RET
;============================================================================
DispP1P2P3:
	B0BTS1		ChargeF
	RET
	DECMS		Wait500ms
	RET
	MOV		A,#20
	B0MOV		Wait500ms,A
	B0MOV		A,Flag3
	AND		A,#0F0H
	B0MOV		TMP,A
	B0BSET		FC
	RLC		Flag3
	AND		A,#0FH
	OR		A,TMP
	B0MOV		Flag3,A
	AND		A,#0FH
	XOR		A,#0FH
	MOV		A,#0F0H
	B0BTS0		FZ
	AND		Flag3,A
	CALL		DispSum1
	CALL		LCDdisplay
	RET
;============================================================================
;============================================================================
;;		Main	program		;;			
;;		Main 	program		;;		
;============================================================================
;============================================================================
;============================================================================
PowerOn:
	MOV 	    	A,#07Fh		;Initial stack pointer and
   	B0MOV 		STKP,A		;disable global interrupt
	mov     	A,#60h		;Clear watchdog timer and initial system mode
	b0mov   	OSCM,A		;
	CALL		ClrRam		;Clear bank0
	MOV		A,#250
	B0MOV		Wait5s,A
	CALL		InitSound	;
	CALL		LCDinit		;
PowerOn1:
	B0BCLR		SIOM.7		;
	MOV		A,#0FH		;
	B0MOV		P1M,A		;
	MOV		A,#0FH		;
	B0MOV		P1,A		;Initial Port
	MOV		A,#0		;
	B0MOV		P4M,A		;
	MOV		A,#1FH		;
	B0MOV		P4,A		;
	MOV		A,#00H		;
	B0MOV		P5,A		;
	MOV		A,#18H		;11101
	B0MOV		P5M,A		;
	@SET_PUR	0x23		;
	MOV		A,#00H		;
	MOV		A,#10000000B	;10010000b
	B0MOV		TC0M,A		;
	MOV		A,#0		;
	B0MOV		ADM,A		;
	B0MOV		TC0C,A		;
	B0MOV		TC0R,A		;
	B0BSET		MustADF		;CheckAD
	MOV		A,#0		;
	B0MOV		WhichAD,A	;
	B0BCLR		BUZ		;
	B0BSET		LCD_Lilon	;
	B0BSET		MF		;
	B0BSET		AF		;
	B0BSET		LowF		;
	B0BSET		LilonF		;
MainLoop:				;
	B0BSET		FWDRST		;Clear the watchdogtimer's counter
	NOP				;
	MOV		A,#0EBH		;7777
	SUB		A,TC0C		;
	B0BTS0		FC		;
	JMP		MainLoop	;
	MOV		A,#0		;
	B0MOV		TC0C,A		;
	CALL		ForSound	;10ms every unit
	B0BTS0		ErrorF
	JMP		IntoError	;
	CALL		W5SecondEnd	;
	B0BTS0		GoodF		;
	JMP		DoGood		;
	B0BTS1		Is5sF		;
	JMP		MainLoop	;
	CALL		YESBFull
	CALL		DispP1P2P3	;
	CALL		ADcompleted	;Check voltage of discharge
	CALL		TakeBattery	;
	CALL		ChkBattery	;
	CALL		Scankey		;
	CALL		ToSetAD0to3	;
	CALL		MustSetAD45	;
	CALL		ADCsetX		;
	JMP		MainLoop	;
IntoError:
	B0BTS0		SW1		;			
	JMP		MainLoop	;
IntoPower:
	CALL		ClrRam		;Clear bank0
	MOV		A,#1		;
	B0MOV		Wait5s,A	;
	B0BSET		PressF		;
	B0BSET		Is5sF		;
	CALL		ToDischar1	;
	JMP		PowerOn1	;
DoGood:	B0BSET		P1F		;
	B0BSET		P2F		;
	B0BSET		P3F		;
	B0BSET		P4F		;
	CALL		ADcompleted	;
	CALL		SetAD0	;
	CALL		ADCsetX	
	B0BTS1		SW1		;			
	JMP		IntoPower	;
	CALL		TakeBattery	;
	MOV		A,#50H		;
	SUB		A,A0Value	;A0Value<50H
	B0BTS1		FC		;
	JMP		MainLoop	;
	JMP		IntoPower	;
	ORG		600H	
;------------------------------------------------------------------
;------------------------------------------------------------------
DispWhich:
	B0BTS0		ArrayF		;
	INCMS		LoopWhich	;
	B0BCLR		ArrayF		;
	B0MOV		A,LoopWhich	;
	AND		A,#03		;
	B0ADD		PCL,A		;
	JMP		DISPmA		;0
	JMP		DISPmV		;1
	JMP		DISPmHA		;2
	MOV		A,#0FCH
	AND		LoopWhich,A
DispmA:	
	B0MOV		A,A1Value	;
	B0BTS0		FZ		;
	B0MOV		A2Value,A	;
	B0MOV		A,A2Value	;
	B0BTS0		FZ		;
	B0MOV		A3Value,A	;
	B0MOV		Y,#0		;
	B0BCLR		HF		;
	B0BCLR		VF		;
	B0BSET		AF		;
	B0BSET		mF		;
	DECS		Sum2		;
	NOP
	ADD		A,#A0Value
	B0MOV		Z,A
	B0MOV		A,@YZ
	XOR		A,#0
	B0BTS1		FZ
	B0MOV		A,A4Value
AllDispX:
	B0MOV		Tmp,A
	B0MOV		Y,#Vtable$M
	B0MOV		Z,#Vtable$L
	B0MOV		A,Tmp
	B0ADD		Z,A
	B0BTS0		FC
	INCMS		Y
	MOVC
	B0MOV		Tmp,A
	AND		A,#0FH
	B0MOV		Sum6,A
	SWAP		Tmp
	AND		A,#0FH
	B0MOV		Sum5,A
	B0MOV		A,R
	AND		A,#0FH
	B0MOV		Sum4,A
	SWAP		R
	AND		A,#0FH
	B0MOV		Sum3,A
	B0MOV		Y,#0
	B0MOV		Z,#0
isDispmah:
	CALL		DispSum1
	CALL		LCDdisplay
	B0MOV		Y,#0
	RET
DispmV:	B0BSET		VF
	B0BCLR		HF
	B0BCLR		AF
	B0BSET		mF
	CLR		Y
	DECS		Sum2
        NOP
	ADD		A,#A0Value
	B0MOV		Z,A
	B0MOV		A,@YZ
	JMP		AllDispX
DispmHA:
	B0BSET		HF
	B0BSET		AF
	B0BSET		mF
	B0BCLR		VF
mAHhextodec:
	MOV		A,#0
	B0MOV		SUM3,A
	B0MOV		SUM4,A
	B0MOV		SUM5,A
	B0MOV		SUM6,A
	
	B0MOV		Y,#00
	MOV		A,#Cntmh00
	ADD		A,Sum2
	ADD		A,Sum2
	SUB		A,#2
	B0MOV		Z,A
	B0MOV		A,@YZ
	
CntLowLp:
	SUB		A,#0AH		;A-10
	B0BTS1		FC
	JMP		Cntlowend
	INCMS		Sum5
	JMP		CntLowlp
CntlowEnd:
	ADD		A,#0AH
	B0MOV		SUM6,A
	B0MOV		A,Sum5
CntSum5LP:
	SUB		A,#0AH
	B0BTS1		FC
	JMP		CntHigh		;
	INCMS		Sum4
	JMP		CntSum5Lp	;
CntHigh:ADD		A,#0AH		;
	B0MOV		Sum5,A		;
	INCMS		Z		;
	B0MOV		A,@YZ		;
	ADD		A,Sum4		;
CntHighLp:
	SUB		A,#0AH
	B0BTS1		FC
	JMP		CntHighEnd
	INCMS		SUM3
	JMP		CntHighLp
CntHighEnd:
	ADD		A,#0AH
	B0MOV		Sum4,A
	JMP		isDispmah
;========================================================================
	ORG		800H
Sum09Seg:				;                    A            HGFE,DCBA
	DW		003FH		;0                  ----       0  0011,1111       3F
	DW		0006H		;1            F   /    /       1  0000,0110       06
	DW		005BH		;2               / G  / B      2  0101,1011       5B
	DW		004FH		;3               ----          3  0100,1111       4F
	DW		0066H		;4           E /    /          4  0110,0110       66
	DW		006DH		;5            /    / C         5  0110,1101       6D
	DW		007DH		;6            ----             6  0111,1101       7D
	DW		0027H		;7            D                7  0010,0111       27
	DW		007FH		;8                             8  0111,1111       7F
	DW		006FH		;9                             9  0110,1111       6F
;=========================================================================	
Vtable:	DW		0000H		;00
	DW		0010H           ;01
	DW		0020H           ;02
	DW		0030H           ;03
	DW		0050H           ;04
	DW		0070H           ;05
	DW		0100H           ;06
	DW		0120H           ;07
	DW		0150H           ;08
	DW		0160H           ;09
	DW		0200H           ;0A
	DW		0250H           ;0B
	DW		0260H           ;0C
	DW		0280H           ;0D
	DW		0300H           ;0E 300mV
	DW		0320H           ;0F----
	DW		0340H           ;10
	DW		0360H           ;11
	DW		0380H           ;12
	DW		0400H           ;13
	DW		0420H           ;14
	DW		0440H           ;15
	DW		0460H           ;16
	DW		0480H           ;17
	DW		0490H           ;18
	DW		0500H           ;19 500mV
	DW		0500H           ;1A
	DW		0520H           ;1B
	DW		0558H           ;1C
	DW		0573H           ;1D
	DW		0590H           ;1E
	DW		0613H           ;1F----
	DW		0630H           ;20
	DW		0660H           ;21
	DW		0680H           ;22
	DW		0700H           ;23
	DW		0715H           ;24
	DW		0745H           ;25
	DW		0780H           ;26
	DW		0800H           ;27 800mV
	DW		0840H		;28
	DW		0860H           ;29
	DW		0880H           ;2A
	DW		0900H           ;2B
	DW		0910H           ;2C
	DW		0930H           ;2D
	DW		0950H           ;2E
	DW		0980H           ;2F--------
	DW		1000H           ;30
	DW		1000H           ;31
	DW		1000H           ;32
	DW		1040H           ;33
	DW		1080H           ;34
	DW		1080H           ;35
	DW		1080H           ;36
	DW		1100H           ;37 1100mV
	DW		1100H           ;38
	DW		1130H           ;39
	DW		1130H           ;3A
	DW		1170H           ;3B
	DW		1170H           ;3C
	DW		1200H           ;3D
	DW		1200H           ;3E
	DW		1250H           ;3F-------
	DW		1250H           ;40
	DW		1300H           ;41 1300mV
	DW		1300H           ;42
	DW		1330H           ;43
	DW		1330H           ;44
	DW		1360H           ;45
	DW		1360H           ;46
	DW		1400H           ;47
	DW		1400H           ;48
	DW		1450H           ;49
	DW		1450H           ;4A
	DW		1500H           ;4B
	DW		1500H           ;4C 1500mV
	DW		1500H           ;4D
	DW		1550H           ;4E
	DW		1550H           ;4F----
	DW		1580H		;50
	DW		1580H           ;51
	DW		1600H           ;52
	DW		1600H           ;53
	DW		1620H           ;54
	DW		1620H           ;55
	DW		1650H           ;56
	DW		1650H           ;57
	DW		1700H           ;58
	DW		1750H           ;59
	DW		1750H           ;5A
	DW		1800H           ;5B 1800mV
	DW		1850H           ;5C
	DW		1850H           ;5D
	DW		1900H           ;5E
	DW		1900H           ;5F----
	DW		1910H           ;60
	DW		1910H           ;61
	DW		1950H           ;62
	DW		1950H           ;63
	DW		2000H           ;64
	DW		2000H           ;65
	DW		2000H           ;66
	DW		2020H           ;67
	DW		2080H           ;68
	DW		2100H           ;69
	DW		2100H           ;6A
	DW		2100H           ;6B 2100mV
	DW		2150H           ;6C
	DW		2150H           ;6D
	DW		2200H           ;6E
	DW		2200H           ;6F---
	DW		2250H           ;70
	DW		2250H           ;71
	DW		2250H           ;72
	DW		2800H           ;73
	DW		2800H           ;74
	DW		2300H           ;75
	DW		2300H           ;76
	DW		2350H           ;77
	DW		2350H		;78
	DW		2400H           ;79 2400mV
	DW		2400H           ;7A
	DW		2400H           ;7B
	DW		2450H           ;7C
	DW		2450H           ;7D
	DW		2450H           ;7E
	DW		2500H           ;7F---
	DW		2500H           ;80
	DW		2550H           ;81
	DW		2550H           ;82
	DW		2600H           ;83
	DW		2600H           ;84
	DW		2650H           ;85
	DW		2650H           ;86
	DW		2650H           ;87
	DW		2700H           ;88 2700mV
	DW		2700H           ;89
	DW		2700H           ;8A
	DW		2750H           ;8B
	DW		2750H           ;8C
	DW		2800H           ;8D
	DW		2850H           ;8E
	DW		2850H           ;8F----
	DW		2850H           ;90
	DW		2900H           ;91
	DW		2900H           ;92
	DW		2900H           ;93
	DW		2950H           ;94
	DW		2950H           ;95
	DW		3000H           ;96 3000mV
	DW		3000H           ;97
	DW		3100H           ;98
	DW		3100H           ;99
	DW		3150H           ;9A
	DW		3150H           ;9B
	DW		3200H           ;9C
	DW		3200H           ;9D
	DW		3250H           ;9E
	DW		3250H           ;9F----
	DW		3250H		;A0
	DW		3250H           ;A1
	DW		3250H           ;A2
	DW		3300H           ;A3
	DW		3300H           ;A4
	DW		3300H           ;A5
	DW		3300H           ;A6 3300mV
	DW		3300H           ;A7
	DW		3350H           ;A8
	DW		3350H           ;A9
	DW		3400H           ;AA
	DW		3400H           ;AB
	DW		3400H           ;AC
	DW		3450H           ;AD
	DW		3450H           ;AE
	DW		3450H           ;AF----
	DW		3500H           ;B0
	DW		3500H           ;B1
	DW		3500H           ;B2
	DW		3550H           ;B3
	DW		3550H           ;B4
	DW		3600H           ;B5 3600mV
	DW		3600H           ;B6
	DW		3650H           ;B7
	DW		3650H           ;B8
	DW		3650H           ;B9
	DW		3700H           ;BA
	DW		3700H           ;BB
	DW		3750H           ;BC
	DW		3750H           ;BD
	DW		3750H           ;BE
	DW		3800H           ;BF------
	DW		3800H           ;C0
	DW		3850H           ;C1
	DW		3850H           ;C2
	DW		3850H           ;C3
	DW		3900H           ;C4 3900mV
	DW		3900H           ;C5
	DW		3950H           ;C6
	DW		3950H           ;C7
	DW		4000H		;C8
	DW		4000H           ;C9
	DW		4000H           ;CA
	DW		4050H           ;CB
	DW		4050H           ;CC
	DW		4050H           ;CD
	DW		4050H           ;CE
	DW		4100H           ;CF----
	DW		4100H           ;D0
	DW		4100H           ;D1
	DW		4200H           ;D2
	DW		4200H           ;D3 4200mV
	DW		4200H           ;D4
	DW		4200H           ;D5
	DW		4200H           ;D6
	DW		4200H           ;D7
	DW		4200H           ;D8
	DW		4200H           ;D9
	DW		4200H           ;DA
	DW		4200H           ;DB
	DW		4200H           ;DC
	DW		4200H           ;DD
	DW		4200H           ;DE
	DW		4200H           ;DF-----
	DW		4200H           ;E0
	DW		4200H           ;E1
	DW		4200H           ;E2
	DW		4200H           ;E3
	DW		4200H           ;E4
	DW		4200H           ;E5
	DW		4200H           ;E6
	DW		4200H           ;E7
	DW		4200H           ;E8
	DW		4200H           ;E9
	DW		4200H           ;EA
	DW		4200H           ;EB
	DW		4200H           ;EC
	DW		4200H           ;ED
	DW		4200H           ;EE
	DW		4200H           ;EF------
	DW		4200H           ;F0
	DW		4200H           ;F1
	DW		4200H           ;F2
	DW		4200H           ;F3
	DW		4200H           ;F4
	DW		4200H           ;F5
	DW		4200H           ;F6
	DW		4200H           ;F7
	DW		4200H           ;F8
	DW		4200H           ;F9
	DW		4200H           ;FA
	DW		4200H           ;FB
	DW		4200H           ;FC
	DW		4200H           ;FD
	DW		4200H           ;FE
	DW		4200H           ;FF
;========================================================================
	ENDP	
;========================================================================

⌨️ 快捷键说明

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