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

📄 dfb0829.asm

📁 电脑型电压力锅,主要功能有:煲烫,煮饭,煮粥,焖炖,焗等.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		jmp		 PreTime_loop_2
preTime_chk_2:        
		dec      preset_hour
		mov      a,59
        mov      preset_min,a
preTime_scankey:
		call     ScanKey            
        sz       key_get             
        jmp      preTime_get_key        
preTime_loop_2:
		mov		 a,preset_min
		mov		 min,a
		mov		 a,preset_hour
		mov		 Hour,a        
        call     Time_hex_bcd       
        call     Display
        jmp      preTime_loop    
preTime_get_key:         
 		clr      key_get
        mov      a,key_data
        xor      a,01111111b
        sz	     Z
        jmp      Cancel_preTime        
        jmp      preTime_loop
;-------------------------------
Cancel_preTime:
		clr      flag_action
		clr		 preset_min
		clr		 preset_hour
		clr		 press_time
		jmp      str	
;===================================================================
; 工作模式:保压
;===================================================================  
keep_press:
		call	 buzze
		set	 	 flag_action		
		clr		 Led_flash
		clr		 msec_cnt1
		Clr		 msec_cnt2
		clr		 flag_min			;reset timer

		mov		 a,0dh
		mov		 disp_ram1,a
		mov		 disp_ram2,a
		mov		 disp_ram3,a
		mov		 disp_ram4,a
;-------------------------------------------压力开关60分钟检测       
press_60m_loop:
		snz      flag_1ms
        jmp      press_60m_loop
        clr      flag_1ms
		sz		 press_sw
		jmp		 str_keep_press		;打开时开始保压计时

		snz      flag_min
        jmp      press_60m_scankey
        clr      flag_min
		jmp		 press_60m_next 
press_60m_scankey:
		call	 scankey
		sz		 key_get
		jmp		 press_60m_getkey
		call	 display
		jmp		 press_60m_loop   
press_60m_getkey:         
 		clr      key_get
        mov      a,key_data
        xor      a,07fh
        sz       Z					
        jmp      Cancel_keep_press          
        jmp      press_60m_loop
press_60m_next:
		inc      min_cnt   
		mov      a,min_cnt
		sub      a,60					;超过60分钟
		sz       c
		jmp      press_60m_alarm
		jmp		 press_60m_loop  
;-------------------------------------------保压计时
str_keep_press:
		clr		 flag_action
keep_press_cnt:
		snz      flag_1ms
        jmp      keep_press_cnt
        clr      flag_1ms
		sz		 press_sw
		jmp		 keep_press_0
		jmp		 keep_press_1
keep_press_0:
		clr		 flag_action
		jmp		 keep_press_next
keep_press_1:
		set		 flag_action
keep_press_next:
		snz      flag_min
        jmp      keep_press_scankey
        clr      flag_min
		dec		 press_time
		sz		 press_time
		jmp		 keep_press_cnt
		clr      flag_action		;完成保压/断开继电器
		clr		 pac
		clr		 pa
		mov		 a,11110000b
		mov		 pb,a
		call	 spk_sec
		call	 delay_sec
		call	 spk_sec
		call	 delay_sec
		call	 spk_sec		
		jmp		 heat_preservation
keep_press_scankey:
		call     ScanKey            
        sz       key_get             
        jmp      keep_press_getkey
keep_press_loop2:
		mov		 a,press_time
		mov		 min,a
		call	 Time_hex_bcd
		mov		 a,0dh
		mov		 disp_ram1,a
		mov		 disp_ram2,a       
        call     Display
        jmp      keep_press_cnt
keep_press_getkey:         
 		clr      key_get
        mov      a,key_data
        xor      a,07fh
        sz       Z					
        jmp      Cancel_keep_press          
        jmp      keep_press_cnt  
;-------------------------------压力开关超过60m不动作:报警
press_60m_alarm:
		clr		 pac
		clr		 pa
		mov		 a,11110000b
		mov		 pb,a		
alarm_spk_loop:
		call	 spk_sec
		mov		 a,00001000b
		xorm	 a,pb
		call	 delay_sec
		mov		 a,00001000b
		xorm	 a,pb
		jmp		 alarm_spk_loop
;-------------------------------退出保压
Cancel_keep_press:
		clr      flag_action
		clr		 press_time
		jmp      str
;=================================================================== 
;  工作模式: 保温
;===================================================================
heat_preservation:
		call	 buzze        
		clr      flag_action
		clr      flag_relay
		clr		 led_flash
		
		mov		 a,0ch
		mov		 disp_ram1,a
		mov		 disp_ram2,a
		mov		 disp_ram3,a
		mov		 disp_ram4,a		;数码管显示"0000"	
		mov      a,11011111b
        mov      disp_ram5,a
temp_chk_loop:               	
		clr		rt_ad
test_rt_fd0:
		clr     pcc.0				;放电
    	clr     pcc.1
        clr     pgc.0
        clr     re_r
        clr     rt_r
		clr     v_chk
		clr		tmrc.4
		mov		a,06h
		mov		tmr,a       
		set		tmrc.4
		clr		flag_1ms
test_rt_fd1:
		snz		flag_1ms     	
		jmp		test_rt_fd1		
		clr		flag_1ms
		call    ScanKey            
        sz      key_get             
        jmp     temp_chk_getkey
		call	display

		set     pcc.0				;充电
        set     pgc.0
		clr		pcc.1
		clr		tmrc.4
		mov		a,06h
		mov		tmr,a  
		set		tmrc.4
		clr		flag_1ms
		set		rt_r			
test_rt_loop1:
		sz		flag_1ms
   		jmp		test_rt_loop2
		snz		v_chk
		jmp		test_rt_loop1
		mov		a,tmr          	
		jmp		test_rt_loop3
test_rt_loop2:
		clr		flag_1ms
		call	display
		mov		a,255
test_rt_loop3:
		sub		a,06h
		mov		rt_ad,a

		sz		flag_action
		jmp		temp_chk_a1
		jmp		temp_chk_a2
temp_chk_a1:
		mov		a,rt_ad
		sub		a,2eh				;80度时AD值
		snz		c
		clr		flag_action
		jmp		temp_chk_loop
temp_chk_a2:
		mov		a,rt_ad
		sub		a,4eh				;60度时AD值
		sz		c
		set		flag_action
		jmp		temp_chk_loop

temp_chk_getkey:
		clr      key_get
        mov      a,key_data
        xor      a,01111111b
        sz       Z
        jmp      Cancel_temp_chk       
        jmp      temp_chk_loop
Cancel_temp_chk:
        clr      flag_action
		jmp      str
;************************************************************************
;     Function : 定时中断程序
;  Description :  1ms中断一次
;************************************************************************
SystemClock:
		mov      a_Save,a
		mov      a,status
		mov      Status_Save,a
	
		set      flag_1ms
		snz		 flag_action
		jmp		 act_nowork
		jmp		 act_working
act_nowork:
		clr		 act
		jmp		 SystemClock1
act_working:
		mov		 a,00000100b
		xorm	 a,pb			;继电器动作(500HZ)
SystemClock1:			
		snz      key_press
		jmp      SystemClock_2
		inc      key_time 
SystemClock_2:
		inc      msec_cnt1
		mov      a,msec_cnt1
		sub      a,250
		snz		 c
		jmp      SystemClock_reti
		set		 flag_quaSec
		clr      msec_cnt1
		sz		 Led_flash
		jmp		 led_cpl
		set		 led_con
		jmp		 SystemColck_3
led_cpl:
		mov		 a,10000000b
		xorm	 a,flag_con
SystemColck_3:
		inc	 	 msec_cnt2
		mov      a,msec_cnt2
		sub      a,240
		snz		 c
		jmp      SystemClock_reti
		set      flag_min
		clr		 msec_cnt2		
SystemClock_reti:        
        mov      a,Status_Save
        mov      status,a
        mov      a,a_Save        
        reti 
;************************************************************************
;     Function : 预置时间转化为十进制显示
;************************************************************************   
Time_hex_bcd  proc 
 		clr      disp_ram3 	
		mov      a,min
		mov		 disp_ram4,a
min_h2b:	
		sub      a,10
		snz      C
		jmp      min_h2b_ok
        inc      disp_ram3
        mov		 disp_ram4,a
        jmp      min_h2b 
min_h2b_ok:
		clr      disp_ram1	
		mov      a,Hour
		mov		 disp_ram2,a
hour_h2b:	
		sub      a,10
		snz      C
		jmp      hour_h2b_ok
        inc      disp_ram1
        mov      disp_ram2,a
        jmp      hour_h2b 
hour_h2b_ok:
        ret
Time_hex_bcd  endp 
;************************************************************************
;     Function : 蜂鸣器
;************************************************************************
buzze	proc
		mov  	 a,08fh
		mov 	 bz_length,a
bz_loop0:
		mov		 a,1ch
		mov		 bz_freq,a
		set		 pb.1
bz_loop1:
		dec		 bz_freq
		sz		 bz_freq
		jmp		 bz_loop1
		mov		 a,20h
		mov		 bz_freq,a
		clr		 pb.1
bz_loop2:
		dec		 bz_freq
		sz		 bz_freq
		jmp		 bz_loop2
		dec		 bz_length
		sz		 bz_length
		jmp		 bz_loop0
		nop
		ret
buzze 	endp
;************************************************************************
;     Function : 响1秒
;************************************************************************
spk_sec	proc
		clr		 flag_quaSec
spk_loop:
		call	 buzze
		snz		 flag_quaSec
		jmp		 spk_loop
		clr		 flag_quaSec
		inc		 bz_delay
		mov		 a,bz_delay
		sub		 a,04h
		snz		 c
		jmp		 spk_loop
		clr		 bz_delay
		ret
spk_sec	endp
;************************************************************************
;     Function : 显示“----”
;************************************************************************
dispRail	proc
		mov      a,0ah             
        mov      disp_ram1,a      
        mov      disp_ram2,a       
        mov      disp_ram3,a        
        mov      disp_ram4,a  
		ret
disprail	endp
;************************************************************************
;     Function : 延迟1秒
;************************************************************************
delay_sec	proc
		clr		 flag_quaSec
delay_loop:
		snz		 flag_quaSec
		jmp		 delay_loop
		clr		 flag_quaSec
		inc		 time_delay
		mov		 a,time_delay
		sub		 a,04h
		snz		 c
		jmp		 delay_loop
		clr		 time_delay
		ret
delay_sec	endp
;************************************************************************
;      查表区
;========================================================================       
        org      700h             	  
table:
;========================================================================  
		dw 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0bfh,0ffh,0c0h,8ch
;           0    1    2    3    4   5   6   7    8   9   -   (NA)	0	P
;************************************************************************
        end

⌨️ 快捷键说明

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