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

📄 dfb0829.asm

📁 电脑型电压力锅,主要功能有:煲烫,煮饭,煮粥,焖炖,焗等.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
include  "HT48R30A-1.INC"
;===================================================================
;常量定义
;===================================================================
ledcon_sw  		equ   	PB.3			;按键指示使能控制
seg1con_sw   	equ   	PB.5    		;数码管显示使能控制1 
seg2con_sw   	equ   	PB.4			;数码管显示使能控制2
seg3con_sw   	equ   	PB.6			;数码管显示使能控制3 
seg4con_sw   	equ   	PB.7			;数码管显示使能控制4            
re_r      		equ   	PC.0			;温检参考电阻
rt_r       		equ   	PC.1			;温检热敏电阻
v_chk      	    equ   	PG.0			;温检电压检测
act     		equ   	PB.2			;交流继电器输出
press_sw     	equ   	PC.2			;压力开关(常闭)
;===================================================================
;变量定义
;===================================================================
data            .section       			'data'
a_Save          db      ?	 		
Status_Save     db      ?	 		
TMR_save        db      ?				;tmr堆栈寄存器
msec_cnt1        db      ?   			;msec_cnt1=250   250=0.25秒种
msec_cnt2		db		?				;msec_cnt2=240   240*250=60000=1分钟
min_cnt       	db      ?  	    		;分钟计数器
min				db		?				
Hour			db		?			
Seg_con			db		?				;数码管控制寄存器
disp_ram1       db      ?  	    		;数码管1显示内容
disp_ram2  		db		?  	    		;数码管2显示内容
disp_ram3  		db      ?  	    		;数码管3显示内容
disp_ram4       db      ?  	    		;数码管4显示内容
disp_ram5       db      ?    			;指示灯显示内容
disp_delay		db		?				;开机显示延时计数
bz_length		db		?				;蜂鸣器声长寄存器
bz_freq			db		?				;蜂鸣器声频寄存器
bz_delay		db		?				;蜂鸣器延时计数
time_delay		db		?				;时间延时计数
press_time      db      ?  	    		;保压时间(5m/15m/25m/35m/45m)
disp_num      	db      ?       		;显示位置(时序)
key_data   		db      ?       		;所得按键值
key_time   		db      ?				;按键扫描计时器
preset_hour     db      ?       		;所设置预置定时(小时)
preset_min    	db      ?       		;所设置预置定时(分钟)
rt_ad			db		?				;热敏电阻AD值

flag_time       db      ?
flag_1ms        equ    	flag_time.0   	;毫秒计时标志
flag_quaSec 	equ		flag_time.1 	;1/4秒钟计时标志
flag_min     	equ    	flag_time.2     ;分钟计时标志
flag_con		db		?
key_press       equ    	flag_con.0		;按键状态标志
key_get         equ    	flag_con.1		;按键获取标志
Led_Flash    	equ   	flag_con.3      ;1=指示灯闪烁
flag_relay      equ   	flag_con.4		;继电器状态标志
flag_press		equ		flag_con.5		;保压计时标志
flag_action		equ		flag_con.6		;继电器工作标志
led_con			equ		flag_con.7		;按键指示标志
;===================================================================
;PA、PB开启上拉电阻  PC、PG关闭上拉电阻  BZ/BZB:All Disable 
;开启定时中断 (1ms)
;===================================================================
code            .section   at 0  'code'
        org		 00h
        jmp      ready          
        org      04h              		
        reti                    
        org      08h              		
        jmp      SystemClock  
;===================================================================
;  上电:
;           蜂鸣器响一声 -> 全显3秒 
;===================================================================
ready:
        clr      pac                
        set      pa					
        clr      pbc                
		mov		 a,11111000b
		mov		 pb,a				;output : bz/action=0 ; pb.3~pb.7=1
        set      PGC.0              
        set      PCC.0				
		set		 PCC.1				
        set      PCC.2 				
        mov		 a,05h				
		mov		 intc,a				
		mov      a,083h             
        mov      TMRC,a             ; Osc/16    4us
        mov      a,006h
        mov      TMR,a              ;1ms - system clock       
		set      tmrc.4				

		call	 buzze
		mov		 a,08h
		mov		 disp_ram1,a
		mov		 disp_ram2,a
		mov		 disp_ram3,a
		mov		 disp_ram4,a
		mov		 a,00h
		mov		 disp_ram5,a		
		mov		 a,01h
		mov		 disp_num,a

		clr		 msec_cnt1	
		clr		 flag_quaSec	
ready_loop:
		snz		 flag_1ms
		jmp		 ready_loop
		call	 display
		snz		 flag_quaSec
		jmp		 ready_loop
		clr		 flag_quaSec
		inc		 disp_delay
		mov		 a,disp_delay
		sub		 a,0ch				;0.25*12 => 3 second
		snz		 c
		jmp		 ready_loop
;===================================================================
;  开机状态:
;			 显示"----" -> 按键扫描
;=================================================================== 
str:
		mov 	 a,20h
		mov 	 mp,a
clr_ram_loop:
		clr 	 r0
		inc 	 mp
		mov 	 a,mp
		xor 	 a,80h
		sz 		 acc
		jmp 	 clr_ram_loop		;clear ram data		

        call	 dispRail       
        mov      a,0ffh
        mov      disp_ram5,a		
start_loop:
		snz		 flag_1ms
		jmp		 start_loop
		clr		 flag_1ms             	        
        call     ScanKey          
        sz       key_get             
        jmp      get_key_deal  
        call     Display        
		jmp      start_loop
;************************************************************************
;     Function : 显示子程序
;************************************************************************   
Display     proc
		clr		 pac
		set		 pa
		mov		 a,11111000b
		orm		 a,pb				;set pb.3~pb.7		
;----------数码管显示----------
	    mov      a,disp_num
        xor      a,01h
        sz       z
        jmp      display_1
        mov      a,disp_num
        xor      a,02h
        sz       Z
        jmp      display_2
        mov      a,disp_num
        xor      a,03h
        sz       Z
        jmp      display_3     
        mov      a,disp_num
        xor      a,04h
        sz       Z
        jmp      display_4
		mov      a,disp_num		
        xor      a,05h
        sz       z
		jmp		 display_5
		jmp		 Display_ok
;----------显示内容----------
display_1:   
		sz		 disp_ram1
		jmp		 seg1_display
		jmp		 Display_ok
seg1_display:
		mov		 a,disp_ram1
		mov		 tblp,a
		tabrdl	 PA    
        clr      seg1con_sw		
        jmp		 Display_ok   
display_2:
        mov      a,disp_ram2
		mov		 tblp,a
		tabrdl	 PA      
        clr      seg2con_sw		
        jmp		 Display_ok 
display_3:
        mov      a,disp_ram3
		mov		 tblp,a
		tabrdl	 PA       
        clr      seg3con_sw
        jmp		 Display_ok 
display_4:
        mov      a,disp_ram4
		mov		 tblp,a
		tabrdl	 PA      
        clr      seg4con_sw
        jmp		 Display_ok       
display_5:
		snz		 led_con
		jmp		 display_ok		
		mov      a,disp_ram5
		mov      PA,a
		clr		 ledcon_sw
;----------完成显示----------
Display_ok:
		mov		 a,disp_num
		sub		 a,05h
		sz		 c
		jmp		 Disp_rest
		inc		 disp_num
    	ret
Disp_rest:
		mov		 a,01h
		mov		 disp_num,a
		ret
Display     endp
;************************************************************************
;     Function : 按键扫描程序
;************************************************************************        
ScanKey     proc
		mov		 a,11111000b
		orm		 a,pb				
		set		 PA
		set      PAC               	          
        nop
        nop
        mov      a,PA
        xor      a,key_data
        sz       acc      
        jmp      new_key_chk
;------------------
        snz      key_press
        jmp      scankey_end
        mov      a,key_time
        sub      a,15                
        snz      C
        jmp      scankey_end
        set      key_get
        clr      key_press
        jmp      scankey_end
;------------------        
new_key_chk:                 
        mov      a,PA
        mov      key_data,a
        clr      key_time
        set      key_press
scankey_end:        
        ret
ScanKey     endp        
;************************************************************************
;  得到按键,进行按键处理
;************************************************************************
get_key_deal:	
        clr      key_get
        mov      a,key_data
        xor      a,0feh
        sz       Z
        jmp      key1_get
        mov      a,key_data
        xor      a,0fdh
        sz	 	 Z
        jmp      key2_get
        mov      a,key_data
        xor      a,0fbh
        sz       Z
        jmp      key3_get
        mov      a,key_data
        xor      a,0f7h
        sz       Z
        jmp      key4_get
        mov      a,key_data
        xor      a,0efh
        sz       Z
        jmp      key5_get
        mov      a,key_data
        xor      a,0dfh
        sz       Z
        jmp      key6_get
        mov      a,key_data
        xor      a,0bfh
        sz       Z
        jmp      key7_get
        mov      a,key_data
        xor      a,07fh
        sz       Z
        jmp      key8_get
        jmp      start_loop
;-------------------------------------- 煮饭        
key1_get:
		mov      a,5
		mov      press_time,a
        mov      a,11111110b		
        mov      disp_ram5,a
        jmp      mode_select_ok         
;-------------------------------------- 肉类        
key2_get:
		mov      a,15
		mov      press_time,a
		mov      a,11111101b
        mov      disp_ram5,a		
        jmp      mode_select_ok 
;-------------------------------------- 煲粥        
key3_get:
        mov      a,25
		mov      press_time,a
		mov      a,11111011b
        mov      disp_ram5,a			
		jmp      mode_select_ok 
;-------------------------------------- 煲汤	
key4_get:
		mov      a,35
		mov      press_time,a
		mov      a,11110111b
        mov      disp_ram5,a			
        jmp      mode_select_ok 
;-------------------------------------- 豆筋        
key5_get:
		mov      a,45
		mov      press_time,a
		mov      a,11101111b
        mov      disp_ram5,a			
        jmp      mode_select_ok 
;-------------------------------------- 保温        
key6_get:
		clr		 preset_min
		clr		 preset_hour
        jmp      heat_preservation 
;-------------------------------------- 预置时间      
key7_get:
		call	 buzze
		clr      press_time				
		mov      a,0ffh
        mov      disp_ram5,a 
        
        mov      a,5
        addm     a,preset_min			
        mov      a,preset_min
        sub      a,60
		snz		 c
		jmp		 PreSet_BCD
        inc      preset_hour
		clr		 preset_min
preset_hour_chk:        
		mov      a,preset_hour
		sub      a,12
		sz		 acc
		jmp      PreSet_BCD
        clr      preset_hour
PreSet_BCD:
		mov		 a,preset_min
		mov		 min,a
		mov		 a,preset_hour
		mov		 Hour,a        
        call     Time_hex_bcd        
        jmp      start_loop  
;-------------------------------------- 确定/取消        
key8_get:
		call	 buzze
		clr		 preset_min
		clr		 preset_hour
		call	 DispRail
		jmp      start_loop     		
;-------------------------------------- 
mode_select_ok:
		call	 buzze
		jmp		 preTime_program	
;=================================================================== 
; 模式:  预约
;===================================================================
preTime_program:
		sz		 preset_min
		jmp		 preTime_str
		sz		 preset_hour				;判断是否有预约
		jmp		 preTime_str
		jmp		 keep_press	 		
preTime_str:
		set		 led_flash				;Led闪烁
		clr		 msec_cnt1
		clr		 msec_cnt2
		clr		 flag_min			;reset timer
preTime_loop:	
		snz      flag_1ms
        jmp      preTime_loop
        clr      flag_1ms
preTime_chk_0:
		sz		 preset_hour
		jmp		 PreTime_chk_01
		mov		 a,press_time
		sub		 a,preset_min
		sz		 c
		jmp		 keep_press
PreTime_chk_01:
		snz		 flag_min
		jmp		 PreTime_scankey 
		clr		 flag_min 
		sz       preset_min
		jmp		 PreTime_Dec
        jmp      preTime_chk_2
PreTime_Dec:
		dec		 preset_min

⌨️ 快捷键说明

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