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

📄 vfd.asm

📁 一个sonix单片机开发的电磁炉程序,经过调试
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;************************************;ster program ;crystal:3.58MHz;MCU: PIC16C54(CF745 or MDT2005 or EM78P156 or NT66P20A);************************************;	LIST 	P=16C54,F=INHX8M;        Processor       snp1602	chip	sn8p1602ap//{{SONIX_CODE_OPTION	.Code_Option	OSG		Enable	.Code_Option	High_Clk	4M_X'tal	.Code_Option	High_Clk/2	Disable	.Code_Option	Security	Enable	.Code_Option	Watch_Dog	Enable	.Code_Option	Int_16K_RC	Always_ON//}}SONIX_CODE_OPTION;	include	f:\flash\sonix\user_inc\sn8p1602h.incflag1		equ	00hflag2		equ	01hflag3		equ	02hsecond		equ	03hhour		equ	04hminute		equ	05hDminute		equ	06hDsecond		equ	07hsumbuffer	equ	08hsterbuffer	equ	09hfantime		equ	0ahfanbuffer	equ	0bhdatabuffer	equ	0chbufferHH	equ	0dhkeybuffer	equ	0ehcounter		equ	0fhsterbuffer1	equ	10hkeybuffercopy	equ	11htonetime	equ	12hbufferH		equ	13hbufferL		equ	14htimer1		equ	15hdelaybuffer	equ	16htimer		equ	17hcounter1	equ	18hportbcopy	equ	19hportacopy	equ	1ahflashtime	equ	1bhozone		equ	1chaccbuffer	equ	1dhpflagbuffer	equ	1ehflag4		equ	1fhdisplaybuffer2	equ	20hdisplaybuffer3	equ	21hdisplaybuffer4	equ	22hdisplaybuffer5	equ	23hdisplaybuffer6	equ	24hdisplaybuffer7	equ	25hdisplaybuffer8	equ	26hdisplaybuffer9	equ	27hkeycounter	equ	28hkeybuffer1	equ	29hledbuffer	equ	2ahtimer2		equ	2bhDminute_Dry	equ	2chkeytime		equ	2dhstertime	equ	2ehtimer3		equ	2fh;***********;BIT DEFINITION;*****************;************CLK		EQU	P1.0		;OUTPUT	STB		EQU	P1.1		;OUTPUTBUZZER		EQU	P1.2		;OUTPUTDOOR		EQU	P1.3		;INPUTLIGHT		EQU	P2.0		;OUTPUTSTER		EQU	P2.1		;OUTPUTDRY		EQU	P2.2		;OUTPUTFAN		EQU	P2.3		;OUTPUTDO		EQU	P2.4		;INPUTDI		EQU	P2.5		;OUTPUT;**********F_FAN		EQU	flag1.0F_STER		EQU	flag1.1F_DRY		EQU	flag1.2TONE_ENABLE	EQU	flag1.4F_NO_DOOR	EQU	flag1.5F_DISPLAY1	EQU	flag1.6F_DISPLAY	EQU	flag1.7F_STER90	EQU	flag2.2F_STER45	EQU	flag2.3F_DRY60		EQU	flag2.1F_DRY30		EQU	flag2.0F_ON_OFF	EQU	flag3.0F_FLASH		EQU	flag3.1F_LIGHT		EQU	flag3.2F_KEY		EQU	flag3.3F_FINISH	EQU	flag3.4F_NO_TONE	EQU	flag3.6F_MINUTE	EQU	flag3.7F_DISPLAY_FLASH60	EQU	flag4.0F_DISPLAY_FLASH30	EQU	flag4.1F_DELAY			EQU	flag4.2F_DISPLAY_FLASH		EQU	flag4.3F_FLASH1		EQU	flag4.4;*****************************************KPOWER		EQU	keybuffer.6KMINUTE		EQU	keybuffer.0KLIGHT		EQU	keybuffer.7KHOUR		EQU	keybuffer.1KDRY60		EQU	keybuffer.2KSTER90		EQU	keybuffer.4KDRY30		EQU	keybuffer.3KSTER45		EQU	keybuffer.5;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\	org	0x00	jmp	Start	org	0x08	jmp	Interrupt		org	0x10		Interrupt:	b0bset	FWDRST	b0mov	accbuffer,a	b0mov	a,PFLAG	b0mov	pflagbuffer,a	b0bts1	FTC0IRQ	jmp	Interruptend	mov	a,#131	mov	TC0C,a		b0bts1	DOOR	jmp	Testdoor01Testdoor:		b0bset	F_NO_DOOR	b0bclr	STER	jmp	Testdoor02Testdoor01:	b0bclr	F_NO_DOOR	b0bts0	F_STER	b0bset	STERTestdoor02:		b0mov	a,keytime	cmprs	a,#0		decms	keytime	nop		incms	timer1	nop	b0mov	a,timer1	sub	a,#20	;100ms	b0bts1	FC	jmp	Display01	clr	timer1	b0bset	F_DISPLAY	incms	fanbuffer	nop	b0mov	a,fanbuffer	sub	a,#0x03	b0bts0	FC	clr	fanbuffer	Display01:		incms	timer2	nop	b0mov	a,timer2	sub	a,#100		;400ms	b0bts1	FC	jmp	Display02	clr	timer2	incms	sterbuffer	nop	b0mov	a,sterbuffer	sub	a,#0x05	b0bts0	FC	clr	sterbufferDisplay02:		incms	timer3	nop	b0mov	a,timer3	sub	a,#50		;200ms	b0bts1	FC	jmp	Tone	clr	timer3	incms	sterbuffer1	nop	b0mov	a,sterbuffer1	sub	a,#0x0a	b0bts0	FC	clr	sterbuffer1Tone:	b0bts0	TONE_ENABLE	b0bset	BUZZER	incms	tonetime	nop	b0mov	a,tonetime	sub	a,#60			;240ms		b0bts1	FC	jmp	Notone	clr	tonetime	b0bclr	BUZZER	b0bclr	TONE_ENABLE			Notone:				incms	flashtime	nop	b0mov	a,flashtime	sub	a,#125	b0bts1	FC	jmp	Timer0ok_1_1	clr	flashtime	b0bts0	F_FLASH1	jmp	Timer0ok_1	b0bset	F_FLASH1	jmp	Timer0ok_1_1Timer0ok_1:	b0bclr	F_FLASH1Timer0ok_1_1:		incms	timer	nop	b0mov	a,timer	sub	a,#125			;500ms	b0bts1	FC	jmp	Keyscan6312	clr	timer	b0bts0	F_FLASH	jmp	Timer0ok_1a	b0bset	F_FLASH	jmp	Keyscan6312Timer0ok_1a:	b0bclr	F_FLASH	b0bts1	F_DELAY	jmp	Timer0ok_1x	decms	delaybuffer	jmp	Timer0ok_1x	clr	flag4	b0bclr	F_MINUTETimer0ok_1x:		incms	second	nop	b0mov	a,second	sub	a,#60	b0bts1	FC	jmp	Timer0ok_2	clr	second	incms	minute	nop	b0mov	a,minute	sub	a,#60	b0bts1	FC	jmp	Timer0ok_2	clr	minute	incms	hour		nop	b0mov	a,hour	sub	a,#12	b0bts1	FC	jmp	Timer0ok_2	clr	hourTimer0ok_2:	b0bts1	F_ON_OFF	jmp	Keyscan6312	b0bts1	F_NO_DOOR	jmp	Timer0ok_2a	b0bts0	F_STER	jmp	Keyscan6312Timer0ok_2a:		b0mov	a,Dsecond	cmprs	a,#0x00	jmp	Timer0ok_2x	jmp	Timer0ok_4Timer0ok_2x:		decms	Dsecond	nop	jmp	Keyscan6312Timer0ok_4:	b0mov	a,fantime	cmprs	a,#0xff		incms	fantime	nop	b0mov	a,stertime	cmprs	a,#0xff		incms	stertime	nop	mov	a,#59	b0mov	Dsecond,a	decms	Dminute	nop	call	AdjDisplay	b0mov	a,Dminute	cmprs	a,#0xff	jmp	Timer0ok_7Timer0ok_5:	b0bts1	F_STER	jmp	Timer0ok_6	b0mov	a,Dminute_Dry	b0mov	Dminute,a	clr	Dsecond	clr	flag2	b0bset	F_DRY60	b0mov	a,flag2	b0mov	ledbuffer,a	call	Clrstatus01	b0bset	F_DRY	b0bset	DRY	jmp	Keyscan6312Timer0ok_6:	b0bset	F_FINISH	jmp	InterruptendTimer0ok_7:	b0bts0	F_STER	jmp	Keyscan6312	b0mov	a,Dminute	sub	a,#30	b0bts1	FC	jmp	Timer0ok_8			b0mov	a,fantime	sub	a,#20	b0bts1	FC	jmp	Keyscan6312Timer0ok_8:		b0bset	FAN	b0bset	F_FAN;\\\\\\\\\\\\\\\		Keyscan6312:	b0bts1	F_DISPLAY_FLASH	jmp	Keyscan6312_1_2	b0bts1	F_FLASH1	jmp	Keyscan6312_1_1	b0mov	a,Dminute_Dry	jmp	Keyscan6312_3_1Keyscan6312_1_1:	mov	a,#0	b0mov	displaybuffer2,a	b0mov	displaybuffer3,a	b0mov	displaybuffer4,a	b0mov	displaybuffer5,a		jmp	Keyscan6312_5Keyscan6312_1_2:		b0bts0	F_DELAY	jmp	Keyscan6312_1		b0bts0	F_ON_OFF	jmp	Keyscan6312_3Keyscan6312_1:		b0mov	a,hour	cmprs	a,#0x00	jmp	Keyscan6312_1x	mov	a,#12	jmp	Keyscan6312_1xxKeyscan6312_1x:	b0mov	a,hourKeyscan6312_1xx:			call	Tobcd	call	Toseg	b0bts0	F_FLASH	b0bset	bufferH.0	mov	a,#11111110b	and	a,bufferH	cmprs	a,#0xee	jmp	Keyscan6312_2x	mov	a,#00000001b	and	bufferH,aKeyscan6312_2x:		b0mov	a,bufferH	b0mov	displaybuffer2,a	rrcm	bufferL	b0mov	a,bufferL	b0mov	displaybuffer3,a	b0mov	a,minute	jmp	Keyscan6312_4Keyscan6312_3:		b0mov	a,DminuteKeyscan6312_3_1:		call	Tobcd	b0mov	a,bufferHH	cmprs	a,#0x00	jmp	Keyscan6312_3xxa	jmp	Keyscan6312_3xxKeyscan6312_3xxa:		call	Toseg	b0mov	a,bufferH	b0mov	displaybuffer4,a	rrcm	bufferL	b0mov	a,bufferL	b0mov	displaybuffer5,a	clr	bufferH	b0mov	a,bufferHH	b0mov	bufferL,a	call	TosegKeyscan6312_2:	mov	a,#0x00	b0mov	displaybuffer2,a	rrcm	bufferL	b0mov	a,bufferL	b0mov	displaybuffer3,a			jmp	Keyscan6312_5Keyscan6312_3xx:		call	Toseg	b0bset	bufferH.0		b0mov	a,Dminute	sub	a,#10	b0bts0	FC	jmp	Keyscan6312_3x	mov	a,#00000001b	and	bufferH,aKeyscan6312_3x:			b0mov	a,bufferH	b0mov	displaybuffer2,a	rrcm	bufferL	b0mov	a,bufferL	b0mov	displaybuffer3,a	b0bts1	F_DISPLAY_FLASH	jmp	Keyscan6312_3x_1	b0bts0	F_FLASH1	b0bset	displaybuffer2.0	mov	a,#0	jmp	Keyscan6312_4Keyscan6312_3x_1:		b0mov	a,DsecondKeyscan6312_4:		call	Tobcd	call	Toseg	b0mov	a,bufferH	b0mov	displaybuffer4,a	rrcm	bufferL	b0mov	a,bufferL	b0mov	displaybuffer5,a			Keyscan6312_5:;===============================	clr	bufferH	clr	bufferL	b0bts1	F_STER	jmp	Keyscan6312_6	b0mov	a,stertime	sub	a,#2	b0bts1	FC	jmp	Keyscan6312_5_1	clr	stertime	b0mov	a,ozone	sub	a,#7	b0bts1	FC	incms	ozoneKeyscan6312_5_1:	b0mov	Y,#StertableL$M	b0mov	Z,#StertableL$L	b0mov	a,sterbuffer	add	Z,a	movc	b0mov	bufferH,a	b0mov	Y,#StertableH$M	b0mov	Z,#StertableH$L	b0mov	a,sterbuffer1	add	Z,a	movc		jmp	Keyscan6312_6_2	;;===================Keyscan6312_6:		clr	bufferL	clr	bufferH	b0bts1	F_DRY	jmp	Keyscan6312_6_3	b0mov	a,ozone	b0bts0	FZ	jmp	Keyscan6312_6_3		b0mov	a,stertime	sub	a,#4	b0bts1	FC	jmp	Keyscan6312_6_1	clr	stertime	decms	ozoneKeyscan6312_6_1:	mov	a,#0x1f	;00011111b	b0mov	bufferH,a	b0mov	Y,#Stertable$M	b0mov	Z,#Stertable$L	b0mov	a,ozone	add	Z,a	movc		Keyscan6312_6_2:		b0mov	databuffer,a	b0mov	bufferL,a	mov	a,#000000111b	and	databuffer,a	swapm	databuffer	b0bclr	FC	rlcm	databuffer	b0mov	a,databuffer	or	bufferH,a	rrcm	bufferL	rrcm	bufferL	rrcm	bufferL	mov	a,#11110000b	or	bufferL,a	b0bts1	F_DRY	jmp	Keyscan6312_6_3	b0bclr	bufferL.5	b0bclr	bufferL.6Keyscan6312_6_3:	b0mov	a,bufferH	b0mov	displaybuffer6,a	b0mov	a,bufferL	b0mov	displaybuffer7,a		clr	bufferH	clr	bufferL	b0bts1	F_DRY	jmp	Keyscan6312_7		mov	a,#0x70	b0mov	bufferL,a	b0bts0	F_FLASH	b0bclr	bufferL.5Keyscan6312_7:		b0bts1	F_LIGHT	jmp	Keyscan6312_8	mov	a,#00001110b	or	bufferL,aKeyscan6312_8:	b0bts1	F_FAN	jmp	Keyscan6312_11	b0bset	bufferL.0	b0mov	a,fanbuffer	cmprs	a,#0x00	jmp	Keyscan6312_9	b0bset	bufferH.7	jmp	Keyscan6312_11Keyscan6312_9:		b0bts1	fanbuffer.0	jmp	Keyscan6312_10	b0bset	bufferH.6	jmp	Keyscan6312_11Keyscan6312_10:	b0bset	bufferH.5Keyscan6312_11:		b0mov	a,bufferH	b0mov	displaybuffer8,a	b0mov	a,bufferL	b0mov	displaybuffer9,aSetled:	b0bclr	STB		mov	a,#01000001b		;sets led port		call	Pt6312writ	b0bts1	F_ON_OFF	jmp	Setled01	b0mov	a,ledbuffer	jmp	Setled02Setled01:	mov	a,#0x00	Setled02:	call	Pt6312writ	b0bset	STB	Readkey:	b0bclr	STB	mov	a,#01000010b	call	Pt6312writ	nop	nop	nop	nop	nop	nop	nop	call	Pt6312read	b0mov	a,databuffer	b0mov	keybuffer,a	call	Pt6312read	swap	databuffer	or	keybuffer,a	b0bset	STB	b0mov	a,keybuffer1	cmprs	a,keybuffer	jmp	Readkey01	incms	keycounter	nop	b0mov	a,keycounter	sub	a,#10	b0bts1	FC	jmp	Interruptend	jmp	ReadkeyendReadkey01:	clr	keycounter	b0mov	a,keybuffer	b0mov	keybuffer1,a	jmp	Interruptend	Readkeyend:	clr	counter1		;keycounter	b0mov	a,keybuffer	b0mov	databuffer,a

⌨️ 快捷键说明

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