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

📄 lu.asm

📁 压缩文件包括电磁炉的控制程序和其原理电路图!方便大家阅读程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;	clr	keyactivebuffer
DisplayScan01:
	b0mov	a,commbuffer
	cmprs	a,#1
	jmp	$+2
	jmp	DisplayScan03
	cmprs	a,#2
	jmp	$+2
	jmp	DisplayScan04
	cmprs	a,#3
	jmp	$+2
	jmp	DisplayScan05
	cmprs	a,#4
	jmp	$+2
	jmp	DisplayScan06
DisplayScan02:	
	b0bset	COM0
	b0mov	a,data0
	jmp	DisplayScanEnd
DisplayScan03:
	b0bset	COM1
	b0mov	a,data1
	jmp	DisplayScanEnd
DisplayScan04:
	b0bset	COM2
	b0mov	a,data2
	jmp	DisplayScanEnd
DisplayScan05:		
	b0bset	COM3
	b0mov	a,data3
	jmp	DisplayScanEnd	
DisplayScan06:		
	b0bset	COM4
	b0bts0	On
	jmp	DisplayScan07
	b0bclr	DisplayOnOff
	b0bts0	Flash
	b0bset	DisplayOnOff
DisplayScan07:	
	b0mov	a,data4
DisplayScanEnd:
	xor	a,#0xff
	b0mov	displaybuffer,a
	mov	a,#10001111b
	and	P4,a
	mov	a,displaybuffer
	and	a,#01110000b
	or	P4,a
	b0bclr	P5.0
	b0bts0	displaybuffer.0
	b0bset	P5.0
	ret
;***************************
;interrput subroutine
;*********************
Interrupt:
	b0bset	FWDRST
	push
	b0mov  	accbuf,a
        b0bclr	FGIE
               
        b0bts0	FT0IRQ
        jmp	SystemTimer
        b0bts0	FP02IRQ
        jmp	IntZero        
        b0bts0	FP01IRQ
        jmp	IntTest        
        clr	INTRQ
        jmp	InterruptEnd
;*********************        
SystemTimer:				
	b0bclr	FT0IRQ	    	    		
	mov	a,#192		;156	;50uS
	b0mov	T0C,a
	incms	Timer200uS
	nop
	b0mov	a,Timer200uS
	sub	a,#125		;64
	b0bts1	FC
	jmp	SystemTimer01
	clr	Timer200uS
	b0bset	F4mS
SystemTimer01:
	b0mov	a,TimerDrv
	b0bts0	FZ
	jmp	SystemTimer02
	decms	TimerDrv
	nop
	jmp	InterruptEnd
SystemTimer02:	
	b0bts1	Fdrv
	jmp	SystemTimer03
	b0bclr	Fdrv
	b0mov	a,TimerDrvH
	b0mov	TimerDrv,a
	b0bset	DRV
	jmp	InterruptEnd
SystemTimer03:
	b0bclr	DRV
InterruptEnd:        
        b0mov  	a,accbuf
        pop
	reti
;**********************************
IntTest:
	b0bclr	FP01IRQ
	clr	TestTime
	jmp	InterruptEnd
;**********************************
IntZero:
	b0bclr	FP02IRQ
	b0bclr	DRV
	b0bset	Fdrv
	mov	a,#0xff
	sub	a,TimerDrvH
	b0mov	TimerDrv,a
	jmp	InterruptEnd
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;***************
KeyScan:
	b0mov	a,P1
	xor	a,#0xff
	b0mov	buffer,a
	rrcm	buffer
	rrcm	buffer
	b0mov	a,buffer
	and	a,#00001111b
	b0mov	keybuffer,a
	b0mov	buffer,a
	clr	keycounter2
	mov	a,#4
	b0mov	keycounter1,a
KeyScan01:	
	rrcm	buffer
	b0bts0	FC
	incms	keycounter2
	decms	keycounter1
	jmp	KeyScan01
	
	b0bclr	KeyActive
	mov	a,keycounter2
	b0bts0	FZ
	jmp	KeyScan02
	cmprs	a,#1
	ret
	b0mov	a,keybuffer
	cmprs	a,keyactivebuffer
	jmp	$+2
	ret
	b0bset	KeyActive
	b0mov	a,keybuffer
	b0mov	keyactivebuffer,a
	ret
KeyScan02:
	clr	keyactivebuffer
	clr	keybuffer
	ret	
;*****************
DataVerify:
	clr	Y
	b0mov	Z,#0x0e
	mov	a,#0x00
DataVerify01:	
	add	a,@YZ
	decms	Z
	jmp	DataVerify01
	add	a,@YZ	
	ret
;******************
TimeDisplay:	
	clr	data0
	clr	data1
	b0mov	a,Minute
	b0bts0	FZ
	ret
	sub	a,#11
	b0bts1	FC
	jmp	D10
	b0mov	a,Minute
	sub	a,#21
	b0bts1	FC
	jmp	D20
	b0mov	a,Minute
	sub	a,#31
	b0bts1	FC
	jmp	D30
	b0mov	a,Minute
	sub	a,#41
	b0bts1	FC
	jmp	D40
	b0mov	a,Minute
	sub	a,#51
	b0bts1	FC
	jmp	D50
D60:
	b0bset	DisplayTime60
	ret
D50:
	b0bset	DisplayTime50
	ret
D40:
	b0bset	DisplayTime40
	ret
D30:
	b0bset	DisplayTime30
	ret
D20:
	b0bset	DisplayTime20
	ret				
D10:
	b0bset	DisplayTime10
	ret	
;***************
;Main program
;****************

Reset:
	b0bclr	FGIE
	InitPort	
	call	DataVerify
	cmprs	a,sumbuffer
	jmp	Init02
	b0mov	Z,#0eh
Init01:	
	b0mov	a,@YZ
	b0bts1	FZ
	jmp	Init06	
	decms	Z
	jmp	Init01
Init02:	
	ClearRam
	clr	flag0
	b0bset	BUZZER
	b0bclr	DRV
	call	BuzShort_3
;******
;******	
Init06:
	b0mov	a,port1copy
	b0mov	P1,a
	b0mov	a,port2copy
	b0mov	P2,a
	b0mov	a,port4copy
	b0mov	P4,a	
	b0mov	a,port5copy
	b0mov	P5,a
	b0bset	FGIE
	clr	INTRQ
Main:
	b0bset	FWDRST
	call	DataVerify
	b0mov	sumbuffer,a
	b0mov	a,P1
	b0mov	port1copy,a
	b0mov	a,P2
	b0mov	port2copy,a
	b0mov	a,P4
	b0mov	port4copy,a
	b0mov	a,P5
	b0mov	port5copy,a

	BuzzerActive

	b0bts0	F4mS
	call	SystemTimerEnd

	
	b0bts0	CurrentError
	jmp	$+10
	b0bts0	TempError
	jmp	$+8
	b0bts1	Timering
	jmp	$+8
	b0mov	a,Minute
	b0bts1	FZ
	jmp	$+5
	call	BuzLong_5
	jmp	$+2
	call	BuzShort_10
	jmp	OnOff01
	
	b0bts1	KeyScanEnable
	jmp	NotKeyScan
	b0bclr	KeyScanEnable	
	call	KeyScan
NotKeyScan:	
	b0bts0	KeyActive
	jmp	ReadKey	
	b0bts1	On
	jmp	Main
	b0bts1	TestTemperatureEnable
	jmp	NotTestTemperature
	call	TestTemperature		
	b0bclr	TestTemperatureEnable	
	
	b0mov	a,resultH
	sub	a,TemperatureH
	b0bts1	FZ
	jmp	$+3
	b0mov	a,resultL
	sub	a,TemperatureL
	b0bts1	FC
	jmp	$+6
	b0bclr	DRV
	b0bset	Off
	b0bclr	FP02IEN
	b0bclr	FP02IRQ
	jmp	Main
	
	b0bts1	Off
	jmp	NotTestTemperature
	b0bclr	Off
	b0bset	FP02IEN
	mov	a,#0x40
	b0mov	TimerDrvH,a
	jmp	Main
NotTestTemperature:
;	b0bts1	On
;	jmp	Main
	b0bts1	TestCurrentEnable
	jmp	Main
	call	TestCurrent		
	b0bclr	TestCurrentEnable
	call	TestVoltage
	call	CalculatePower
	
NotTestCurrent:	
	jmp	Main
;************
ReadKey:
	b0bclr	KeyActive
	b0bts0	Konoff
	jmp	OnOff
	b0bts1	On
	jmp	Main
	call	BuzShort_1	
	b0bts0	Kmode
	jmp	Mode
	b0bts0	Kpower
	jmp	Power
;*******************
Time:
	incms	TimeBuffer
	nop
	b0mov	a,TimeBuffer
	sub	a,#7
	b0bts1	FC
	jmp	Time01
	clr	TimeBuffer
Time01:	
	mov	a,TimeBuffer
	b0mov	Y,#TimeTable$m
	b0mov	Z,#TimeTable$l
	add	Z,a
	movc
	b0mov	Minute,a
	clr	Second
	b0bset	Timering
	b0mov	a,TimeBuffer
	b0bts0	FZ
	b0bclr	Timering
	jmp	Main
;****************************
OnOff:
	call	BuzShort_1
	b0bts1	On
	jmp	OnOff02
OnOff01:	
	b0bclr	On
	b0bclr	Timering
	call	Close
	clr	data0
	clr	data1
	clr	data2
	clr	data3
	clr	data4
	clr	ModeBuffer
	clr	PowerBuffer
	clr	TimeBuffer
	clr	Minute
	clr	errorcounter
	b0bclr	TempError
	b0bclr	CurrentError
	clr	errorcounter1
	b0bclr	FP02IEN
	b0bclr	FP01IEN
	jmp	Main
OnOff02:
	b0bset	On	
	call	Open
	b0bset	DisplayOnOff
	b0bset	DisplayMode1
	b0bset	DisplayPower3
	mov	a,#3
	b0mov	ModeBuffer,a
	b0mov	PowerBuffer,a
	clr	TimeBuffer
	
	b0bset	FP02IEN
	b0bset	FP01IEN
	mov	a,#0x80
	b0mov	TimerDrvH,a	
;	mov	a,#100
;	b0mov	TimerDrv,a
	jmp	Mode01
;****************************
Mode:
	incms	ModeBuffer
	nop
	b0mov	a,ModeBuffer
	sub	a,#6
	b0bts1	FC
	jmp	Mode01
	mov	a,#1
	b0mov	ModeBuffer,a
Mode01:	
	b0bclr	DisplayMode1
	b0bclr	DisplayMode2
	b0bclr	DisplayMode3
	b0bclr	DisplayMode4
	b0bclr	DisplayMode5
	mov	a,ModeBuffer
	cmprs	a,#1
	jmp	$+2
	jmp	Mode1
	cmprs	a,#2
	jmp	$+2
	jmp	Mode2	
	cmprs	a,#3
	jmp	$+2
	jmp	Mode3
	cmprs	a,#4
	jmp	$+2
	jmp	Mode4
Mode5:
	b0bset	DisplayMode5
	mov	a,#5
	jmp	ModeEnd
Mode1:
	b0bset	DisplayMode1
	mov	a,#3
	jmp	ModeEnd
Mode2:
	b0bset	DisplayMode2
	mov	a,#3
	jmp	ModeEnd
Mode3:
	b0bset	DisplayMode3
	mov	a,#3
	jmp	ModeEnd
Mode4:
	b0bset	DisplayMode4
	mov	a,#4
ModeEnd:	
	b0mov	PowerBuffer,a
	jmp	Power01
;****************************
Power:
	incms	PowerBuffer
	nop
	b0mov	a,PowerBuffer
	sub	a,#7
	b0bts1	FC
	jmp	Power01
	mov	a,#1
	b0mov	PowerBuffer,a
Power01:	
	clr	data2
	b0bclr	DisplayPower6
	b0bclr	DisplayPower5
	mov	a,PowerBuffer
	cmprs	a,#1
	jmp	$+2
	jmp	Power1
	cmprs	a,#2
	jmp	$+2
	jmp	Power2
	cmprs	a,#3
	jmp	$+2
	jmp	Power3
	cmprs	a,#4
	jmp	$+2
	jmp	Power4
	cmprs	a,#5
	jmp	$+2
	jmp	Power5
Power6:
	b0bset	DisplayPower6
Power5:
	b0bset	DisplayPower5	
Power4:
	b0bset	DisplayPower4
Power3:
	b0bset	DisplayPower3		
Power2:
	b0bset	DisplayPower2
Power1:
	b0bset	DisplayPower1
	
	b0mov	a,PowerBuffer
	b0mov	Y,#PowerTable$m
	b0mov	Z,#PowerTable$l
	add	Z,a
	movc
	b0mov	PowerBufferL,a
	b0mov	a,R	
	b0mov	PowerBufferM,a
	b0mov	a,PowerBuffer
	b0mov	Y,#PowerTableH$m
	b0mov	Z,#PowerTableH$l
	add	Z,a
	movc
	b0mov	PowerBufferH,a
	b0mov	a,R	
	b0mov	PowerBufferHH,a
	
	b0mov	a,PowerBuffer
	b0mov	Y,#TemperatureTable$m
	b0mov	Z,#TemperatureTable$l
	add	Z,a
	movc
	b0mov	TemperatureL,a
	b0mov	a,R	
	b0mov	TemperatureH,a
	jmp	Main	
;**************
Close:
	b0bset	FanActive
	mov	a,#120
	b0mov	FanTime,a
	ret
;**************	
Open:	b0bset	FAN
	b0bclr	FanActive
	ret		
	
PowerTable:
;	dw	0x0000,0x45d1,0x8342,0xc0b2,0xfe23,0x3b94,0x7904
	dw	0x0000,0x0ed6,0x8601,0xfd2c,0x7457,0xeb85,0x62ad
PowerTableH:
;	dw	0x00,0x17,0x21,0x2b,0x35,0x40,0x4a
	dw	0x0000,0x4a6b,0x6b29,0x8be7,0xaca6,0xcd64,0xee23
TimeTable:
	dw	0x00,10,20,30,40,50,60
TemperatureTable:
;	dw	0x0000,0x013e,0x03a2,0x0674,0x0940,0x0b5c,0x0c4b
	dw	0x0000,0x00e7,0x02e3,0x0578,0x085c,0x0ad0,0x0bdb

⌨️ 快捷键说明

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