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

📄 cooker.dt

📁 这是一个发热体的控制! 这是一个发热体的控制! 这是一个发热体的控制!
💻 DT
📖 第 1 页 / 共 2 页
字号:
;========================================================================================
; product	: 电炒锅 
; filename	: cooker.dt
; chip type	: emc78p153s
; Fosc type : internal RC
; Fosc		: 4MHZ				
; CLOCK		: Fcpu = Fosc/4
; reset pin	: disable
; watchdog	: disable
; check_sum : 0x0000
;========================================================================================
;			define system register
;========================================================================================
iaddr			equ			0x00		;indirect addressing register
tcc			equ			0x01		;timer clock/counter
pc			equ			0x02		;program counter
psw			equ			0x03		;program status register
ram			equ			0x04		;RAM select register
p5			equ			0x05		;port5 register
p6			equ			0x06		;port6 register
intsr			equ			0x0f		;interrupt status register

p5m			equ			0x05		;port5 control register
p6m  	                equ			0x06		;port6 control register
pdown			equ			0x0b		;port pull down control register
pod			equ			0x0c		;port open drain control register
pup			equ			0x0d		;port pull high control register
wdtcr		        equ			0x0e		;WDT control register
intmr			equ			0x0f		;interrupt mask register
;========================================================================================
;			define system register flag
;========================================================================================
fc		==			0			;cy flag of status register(psw)
fz		==			2			;zero flag of status register(psw)
fp50		==			0			;define port5,0
fp51		==			1			;define port5,1
fp52		==			2			;define port5,2
fp53		==			3			;define port5,3

fp60		==			0			;define port6,0              set 0 and 1
fp61		==			1			;define port6,1
fp62		==			2			;define port6,2
fp63		==			3			;define port6,3
fp64		==			4			;define port6,4
fp65		==			5			;define port6,5
fp66		==			6			;define port6,6
fp67		==			7			;define port6,7

ftcif		==			0			;define timer interrupt flag of intsr
ficif		==			1			;define port6 status change interrupt flag
fexif		==			2			;define define external interrupt flag

fp50m		==			0			;define port5,0 control bit flag      
fp51m		==			1			;define port5,1 control bit flag
fp52m		==			2			;define port5,2 control bit flag
fp53m		==			3			;define port5,3 control bit flag
fp60m		==			0			;define port6,0	control bit flag
fp61m		==			1			;define port6,1	control bit flag
fp62m		==			2			;define port6,2	control bit flag
fp64m		==			4			;define port6,4	control bit flag
fp65m		==			5			;define port6,5	control bit flag
fp66m		==			6			;define port6,6	control bit flag
fp67m		==			7			;define port6,7	control bit flag

fpdown50	==			0			;port pull down of p50 pin	       0 is enable
fpdown51	==			1			;port pull down of p51 pin	       1 is disable
fpdown52	==			2			;port pull down of p52 pin

fpdown60	==			4			;port pull down of p60 pin
fpdown61	==			5			;port pull down of p61 pin
fpdown62	==			6			;port pull down of p62 pin

fpod60		==			0			;port open drain of p60 pin	        0 is disable
fpod61		==			1			;port open drain of p61 pin		1 is enable
fpod62		==			2			;port open drain of p62 pin
fpod64		==			4			;port open drain of p64 pin
fpod65		==			5			;port open drain of p65 pin
fpod66		==			6			;port open drain of p66 pin
fpod67		==			7			;port open drain of p67 pin

fpup60		==			0			;port pull up of p60 pin                0 is enable
fpup61		==			1			;port pull up of p61 pin                1 is disable
fpup62		==			2			;port pull up of p62 pin
fpup64		==			4			;port pull up of p64 pin
fpup65		==			5			;port pull up of p65 pin
fpup66		==			6			;port pull up of p66 pin
fpup67		==			7			;port pull up of p67 pin

ftccenb		==			0			;timer interrupt enable flag		 0 is disable
ficienb		==			1			;port6 change interrupt enable flag	 1 is enable
fexienb		==			2			;external interrupt enable flag

;========================================================================================
;			define general bit flag 
;========================================================================================
key_flag	   equ		0x2f	        ;key scan use flag
power_release_fg   ==		0		;power key release flag
power_key_ok_fg	   ==		1		;power key press ok flag
meo_release_fg	   ==		2		;meo key release flag
meo_key_ok_fg	   ==		3		;meo key press ok flag




timer		   equ		0x2e	        ;time flag
time_1s_fg	   ==		0		;time one second flag
time_65ms_fg       ==		1		;time 65ms flag
time_1s_fg0	   ==		2		;time 1s flag for auto time count




mode_flag0	   equ		0x2d		;system mode flag
power_fg	   ==		0		;power flag : 1 is power off status,0 is power on status
duty_fg		   ==		1		;indicate the on/off status for meo control,0 is off status,1 is on status





;========================================================================================
;			define general register
;========================================================================================
del		equ		0x2c			;for delay count

main_mode	equ		0x2b			;system mode value

acc_buf	  	equ	        0x2a			;for storge acc when interrupt occur		
psw_buf	        equ		0x29			;for storge psw when interrupt occur

key_cnt0	equ	        0x28			;for validate power key count
key_cnt1	equ	        0x27			;for validate meo key count

duty_cnt	equ		0x26			;meo control time count

time_1s_cnt     equ	        0x25			;one second time count


temp0		equ		0x24			;currency RAM for some temporarily data
temp1		equ		0x23			;currency RAM for some temporarily data
temp2		equ		0x22			;currency RAM for some temporarily data
temp3		equ		0x21			;currency RAM for some temporarily data

auto_time0	equ	        0x20
auto_time1	equ	        0x1f


;=======================================================================================
;			define const value			
;=======================================================================================
ram_start_addr		==		0x10
ram_end_addr		==		0xef

meo1_value		==		0x00
meo2_value		==		0x01
meo3_value		==		0x02
meo4_value		==		0x03
meo5_value		==		0x04
meo_top_value		==		0x05

time_1s_cnt_value	==	 	15

time_40s_value		==		40
time_35s_value		==		35
time_30s_value		==		30
time_20s_value		==		20
time_15s_value		==		15
time_10s_value		==		10





;=======================================================================================
;			define i/o port function
;=======================================================================================
meo1_led	==		0				;port50
meo2_led	==		1				;port51
meo3_led	==		2				;port52
meo4_led	==		3				;port53
meo5_led	==		1				;port61

power_pin	==		0				;port60
meo_pin		==		7				;port67

heat_pin	==		5				;port65




;*******************************************************************************
;			code 
;*******************************************************************************
			org		0000h
			jmp	   reset
			org		0008h
			jmp	   int_sever
			org		0010h
;*******************************************************************************
;			reset	program
;*******************************************************************************
reset:
			wdtc					       ;clr watch dog
			disi					       ;disable interrupt
			mov	 a,@ram_start_addr
			mov	 ram,a
clr_ram:
			wdtc
			clr	 iaddr					;clr all ram
			inc	 ram
			mov	 a,ram
			sub	 a,@ram_end_addr
			jbs	 psw,fz					;check complete clr ram
			jmp	 clr_ram
			clr	 iaddr

init_system:
			mov	a,@0x00				       ;set timer count reg
			mov	tcc,a
			
			mov	a,@00000000B			       ;init i/o port reg
			mov	p5,a
			mov	a,@00000000B			       ;init i/o port reg
			mov	p6,a
								
			mov	a,@01000111B			       ;enable interrupt and timer prescal 1:256
			contw					       ;control register
			mov	a,@00000000B
			iow	p5m				        ;set port5 control reg, 0 is output mode  1 is input mode
			
			mov	a,@10000001B			  
			iow	p6m					;set port5 control reg
			
			mov	a,@11111111B
			iow	pdown					;disable all  pull down function
			
			mov	a,@00000000B
			iow	pod					;disable  open_drain function
			
			mov	a,@00000000B
			iow	pup				        ;enable pull up function
			
			mov	a,@00000000B
			iow	wdtcr					;disable watchdog
			
			mov	a,@00000001B
			iow	intmr					;enable tc0 and int  interrupt
						
			clr	intsr					;clr  interrupt status register
			eni	
			
			wdtc
			mov	a,@time_1s_cnt_value
			mov	time_1s_cnt,a
			bs	mode_flag0,power_fg	                ;set to power off mode
			
			call	control_sp
			call	control_sp
			call	control_sp			
			
;************************************************************************************
;			main	program
;************************************************************************************			
main:
			
			call	time_control
			call	key_scan
			call	auto_off_control
			call	key_control
			call	heat_control
			call	led_display
			jmp	main
						
;*****************************************************************************************
;			interrupt sever program         
;*****************************************************************************************
int_sever:
			mov	acc_buf,a			;65ms int
			mov	a,psw				;save psw reg
			mov	psw_buf,a
			
			jbs	intsr,ftcif			;check tc0 int flag
			jmp	exit_int
time_int:
			bc	intsr,ftcif			;clr tc0 int flag
			
			bs	 timer,time_65ms_fg	        ;time 65ms flag
				
exit_int:
		        mov	a,psw_buf
		        mov	psw,a
		        mov	a,acc_buf			
		        reti
;****************************************************************************************
;input	:time_65ms_fg
;		
;output	:time_1s_fg
;****************************************************************************************
time_control:
			jbs	timer,time_65ms_fg
			ret
			bc	timer,time_65ms_fg
			
			djz	time_1s_cnt			;time_1s_cnt increase each 65ms
			ret
			
			bs	 timer,time_1s_fg	        ;set time 1s flag
			bs	 timer,time_1s_fg0	        ;set time 1s flag for auto time count
			
			mov	a,@time_1s_cnt_value
			mov	time_1s_cnt,a
			ret
;*****************************************************************************************
;input	:power_fg, time_1s_fg0
;
;output :power_key_ok_fg 
;*****************************************************************************************
auto_off_control:
			jbc	mode_flag0,power_fg		;main on/off flag
			ret
			mov	a,main_mode
			sub	a,@meo5_value
			jbc	psw,fz
			ret
			jbs	timer,time_1s_fg0	        ;time 1s flag
			ret
			bc	timer,time_1s_fg0
			
			djz	auto_time0
			ret
			djz	auto_time1
			ret
			
			bs	key_flag,power_key_ok_fg	;power key ok flag
						
			ret				
;*****************************************************************************************
;input	:key pin
;
;output :power_key_ok_fg, meo_ok_fg
;*****************************************************************************************		
key_scan:				
			wdtc
			jbc	  p6,power_pin				;check power key
			jmp	  key_000
			jbc	  key_flag,power_release_fg		;check power key release flag
			ret
			call  key_delay
			jz	  key_cnt0				;increase check count
			jmp	  key_meo		
			bs	  key_flag,power_release_fg		;set power key release flag
			bs	  key_flag,power_key_ok_fg		;set power key ok flag
			ret
key_000:
			bc	  key_flag,power_release_fg		;reset power key release flag
			bc	  key_flag,power_key_ok_fg		;reset power key ok flag
			clr	  key_cnt0 				;reset check power key count                                                                                                                                                
key_meo:
			jbc	  p6,meo_pin				;check meo key
			jmp	  key_001
			jbc	  key_flag,meo_release_fg		;meo key release flag
			ret

⌨️ 快捷键说明

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