sonix單片機(jī)做的消毒柜
一、總體說明:
本消毒柜有紫外線和臭氧消毒,烘干廚具的功能。當(dāng)正在消毒時(shí),打開消毒柜門即刻切斷紫外線和臭氧發(fā)生器。當(dāng)消毒柜箱體內(nèi)溫度高于70℃時(shí)自動(dòng)切斷紫外線和臭氧發(fā)生器。
當(dāng)烘干時(shí)間大于30分鐘時(shí)烘20分鐘后自動(dòng)啟動(dòng)風(fēng)機(jī);當(dāng)烘干時(shí)間小于30分鐘時(shí)自動(dòng)啟動(dòng)風(fēng)機(jī)。
二、按鍵功能說明:
待機(jī)狀態(tài)顯示時(shí)鐘,消毒時(shí)到計(jì)時(shí)顯示定時(shí)消毒時(shí)間,烘干時(shí)到計(jì)時(shí)顯示定時(shí)烘干時(shí)間。
開機(jī)默認(rèn)狀態(tài):90分鐘消毒+60分鐘烘干。
1、 開/關(guān)鍵:在待機(jī)條件下按此鍵消毒柜進(jìn)入工作狀態(tài)(默認(rèn)90分鐘消毒)。在工作狀態(tài)下按按此鍵消毒柜進(jìn)入待機(jī)。待機(jī)時(shí),消毒90分鐘鍵、消毒45分鐘鍵,烘干60分鐘鍵、烘干30分鐘鍵無效。
2、 照明鍵:按次鍵開或關(guān)消毒柜箱體照明燈。
3、 小時(shí)鍵:在待機(jī)條件下按此鍵可調(diào)整時(shí)鐘的“時(shí)”;在工作狀態(tài)下按按此鍵,將顯示工作時(shí)間切換為顯示時(shí)鐘,延時(shí)4秒后,回到顯示工作時(shí)間。
4、 分鐘鍵:在待機(jī)條件下按此鍵可調(diào)整時(shí)鐘的“分”;在工作狀態(tài)下按按此鍵工作時(shí)間(以分鐘為單位)。
5、 消毒90分鐘鍵:在工作狀態(tài)下按按此鍵,消毒柜工作與90分鐘定時(shí)消毒,相應(yīng)的LED指示燈亮,顯示工作時(shí)間到計(jì)時(shí)。此時(shí)按分鐘鍵可以調(diào)節(jié)定時(shí)消毒時(shí)間(從90分鐘到240分鐘迴圈調(diào)節(jié))。
6、 消毒45分鐘鍵:在工作狀態(tài)下按按此鍵,消毒柜工作與45分鐘定時(shí)消毒,相應(yīng)的LED指示燈亮,顯示工作時(shí)間到計(jì)時(shí)。此時(shí)按分鐘鍵可以調(diào)節(jié)定時(shí)消毒時(shí)間(從45分鐘到89分鐘迴圈調(diào)節(jié))。
7、 烘干60分鐘鍵:在消毒工作狀態(tài)下按按此鍵一次,顯示時(shí)間切換為閃爍顯示60分鐘(此為默認(rèn)60分鐘烘干時(shí)間),若此時(shí)再按下此鍵,消毒柜進(jìn)入烘干工作狀態(tài);若此時(shí)按下分鐘鍵,可以調(diào)節(jié)烘干時(shí)間(從60分鐘到120分鐘迴圈調(diào)節(jié)),此時(shí)再按下烘干60分鐘鍵(或15秒內(nèi)無按鍵操作)確認(rèn)閃爍時(shí)間為烘干時(shí)間并且回到消毒柜工作狀態(tài)。
8、 烘干30分鐘鍵:在消毒工作狀態(tài)下按按此鍵一次,顯示時(shí)間切換為閃爍顯示30分鐘(此為默認(rèn)30分鐘烘干時(shí)間),若此時(shí)再按下此鍵,消毒柜進(jìn)入烘干工作狀態(tài);若此時(shí)按下分鐘鍵,可以調(diào)節(jié)烘干時(shí)間(從30分鐘到59分鐘迴圈調(diào)節(jié)),此時(shí)再按下烘干30分鐘鍵(或15秒內(nèi)無按鍵操作)確認(rèn)閃爍時(shí)間為烘干時(shí)間并且回到消毒柜工作狀態(tài)。
;************************************
;sterprogram
;Crystal:3.58MHz
Chip sn8p1604a
//{{SONIX_CODE_OPTION
.Code_Option High_Clk 4M_X’tal
.Code_Option High_Clk/2 DISAble
.Code_Option Security Enable
.Code_Option Int_16K_RC Always_ON
.Code_Option Rst_P0.3 Reset
.Code_Option Watch_Dog Enable
//}}SONIX_CODE_OPTION
flag1 equ 00h
flag2 equ 01h
flag3 equ 02h
second equ 03h
hour equ 04h
minute equ 05h
Dminute equ 06h
Dsecond equ 07h
sumbuffer equ 08h
sterbuffer equ 09h
fantime equ 0ah
fanbuffer equ 0bh
databuffer equ 0ch
bufferHH equ 0dh
keybuffer equ 0eh
counter equ 0fh
sterbuffer1 equ 10h
keybuffercopy equ 11h
tonetime equ 12h
bufferH equ 13h
bufferL equ 14h
address equ 15h
delaybuffer equ 16h
timer equ 17h
counter1 equ 18h
P2copy equ 19h
P1copy equ 1ah
keycounter equ 1bh
combuffer equ 1ch
aCCbuffer equ 1dh
pflagbuffer equ 1eh
Dminute_Dry equ 1fh
displaybuffer0 equ 20h
displaybuffer1 equ 21h
displaybuffer2 equ 22h
displaybuffer3 equ 23h
displaybuffer4 equ 24h
displaybuffer5 equ 25h
displaybuffer6 equ 26h
displaybuffer7 equ 27h
displaybuffer8 equ 28h
displaybuffer9 equ 29h
ybuffer equ 2ah
zbuffer equ 2bh
rbuffer equ 2ch
timer2 equ 2dh
P5copy equ 30h
flag4 equ 31h
flashtime equ 32h
keytime equ 33h
;***********
;BITDEFINITION
;*****************
;************
DOOR EQU P0.0
DATA8 EQU P1.0
BUZZER EQU P1.1
KEY1 EQU P1.2
KEY2 EQU P1.3
COM0 EQU P1.4
COM1 EQU P1.5
COM2 EQU P1.6
COM3 EQU P1.7
DOT equ P2.2
LIGHT EQU P5.0 ;OUTPUT
STER EQU P5.1 ;OUTPUT
DRY EQU P5.2 ;OUTPUT
FAN EQU P5.3 ;OUTPUT
;**********
F_FAN EQU flag1.0
F_STER EQU flag1.1
F_DRY EQU flag1.2
F_FLASH1 equ flag1.3
TONE_ENABLE EQU flag1.4
F_NO_DOOR EQU flag1.5
F_NO_TONE equ flag1.6
F_STER90 EQU flag2.2
F_STER45 EQU flag2.3
F_DRY60 EQU flag2.1
F_DRY30 EQU flag2.0
F_ON_OFF EQU flag3.0
F_FLASH EQU flag3.1
F_LIGHT EQU flag3.2
F_KEY EQU flag3.3
F_FINISH EQU flag3.4
F_DISPLAY EQU flag3.5
F_DISPLAY1 EQU flag3.6
F_MINUTE EQU flag3.7
F_DISPLAY_FLASH equ flag4.0
F_DISPLAY_FLASH60 EQU flag4.6
F_DISPLAY_FLASH30 EQU flag4.7
F_DELAY EQU flag4.3
;*****************************************
KPOWER EQU keybuffer.6
KMINUTE EQU keybuffer.0
KLIGHT EQU keybuffer.7
KHOUR EQU keybuffer.1
KDRY60 EQU keybuffer.2
KSTER90 EQU keybuffer.4
KDRY30 EQU keybuffer.3
KSTER45 EQU keybuffer.5
;\\\\\\\\\\\\\\\\\\\
org 0x00
jmp Start
org 0x08
jmp Interrupt
org 0x10
Interrupt:
b0bset FWDRST
b0 MOV accbuffer,a
b0 MOV a,PFLAG
b0 MOV pflagbuffer,a
b0bts1 FTC1IRQ
jmp Interruptend01
MOV a,#131
MOV TC1C,a
b0bts1 DOOR
jmp Testdoor01
Testdoor:
b0bset F_NO_DOOR
b0bclr STER
jmp Testdoor02
Testdoor01:
b0bclr F_NO_DOOR
b0bts0 F_STER
b0bset STER
Testdoor02:
b0 MOV a,keytime
cmprs a,#0
decms keytime
nop
Tone:
b0bts0 TONE_ENABLE
b0bset BUZZER
incms tonetime
nop
b0 MOV a,tonetime
sub a,#30 ;250ms
b0bts1 FC
jmp Notone
clr tonetime
b0bclr BUZZER
b0bclr TONE_ENABLE
Notone:
incms flashtime
nop
b0 MOV a,flashtime
sub a,#125 ;500ms
b0bts1 FC
jmp Timer00
clr flashtime
b0bts0 F_FLASH1
jmp Flashtime01
b0bset F_FLASH1
jmp Timer00
Flashtime01:
b0bclr F_FLASH1
Timer00:
incms timer
nop
b0 MOV a,timer
sub a,#125 ;500ms
b0bts1 FC
jmp KeysCAN
clr timer
b0bts0 F_FLASH
jmp Timer0ok_1
b0bset F_FLASH
jmp Keyscan
Timer0ok_1:
b0bclr F_FLASH
b0bts1 F_DELAY
jmp Timer0ok_1x
decms delaybuffer
jmp Timer0ok_1x
clr flag4
b0bclr F_MINUTE
Timer0ok_1x:
incms second
nop
b0 MOV a,second
sub a,#60
b0bts1 FC
jmp Timer0ok_2
clr second
incms minute
nop
b0 MOV a,minute
sub a,#60
b0bts1 FC
jmp Timer0ok_2
clr minute
incms hour
nop
b0 MOV a,hour
sub a,#12
b0bts1 FC
jmp Timer0ok_2
clr hour
Timer0ok_2:
b0bts1 F_ON_OFF
jmp Keyscan
b0bts1 F_NO_DOOR
jmp Timer0ok_2a
b0bts0 F_STER
jmp Keyscan
Timer0ok_2a:
b0 MOV a,Dsecond
cmprs a,#0x00
jmp Timer0ok_2x
jmp Timer0ok_4
Timer0ok_2x:
decms Dsecond
nop
jmp Keyscan
Timer0ok_4:
b0 MOV a,fantime
cmprs a,#0xff
incms fantime
nop
MOV a,#59
b0 MOV Dsecond,a
decms Dminute
nop
call AdjDisplay
b0 MOV a,Dminute
cmprs a,#0xff
jmp Timer0ok_7
Timer0ok_5:
b0bts1 F_STER
jmp Timer0ok_6
b0 MOV a,Dminute_Dry
b0 MOV Dminute,a
clr Dsecond
clr flag2
clr fantime
b0bset F_DRY60
call Clrstatus01
b0bset F_DRY
b0bset DRY
jmp Keyscan
Timer0ok_6:
b0bset F_FINISH
jmp Interruptend
Timer0ok_7:
b0bts0 F_STER
jmp Keyscan
b0 MOV a,fantime
sub a,#20
b0bts1 FC
jmp Timer0ok_8
b0bset FAN
b0bset F_FAN
Timer0ok_8:
b0 MOV a,Dminute
sub a,#30
b0bts0 FC
jmp Keyscan
clr flag2
b0bset F_DRY30
b0bset FAN
b0bset F_FAN
;\\\\\\
Keyscan:
b0bclr COM0
b0bclr COM1
b0bclr COM2
b0bclr COM3
b0bclr DATA8
incms combuffer
nop
b0 MOV a,combuffer
cmprs a,#0x01
jmp $+2
jmp C2
cmprs a,#0x02
jmp $+2
jmp C3
cmprs a,#0x03
jmp $+2
jmp C4
評(píng)論