|
;-------------------------------------------------------------两键控制豆浆机程序(芯片AT89C2051)------------------------------------------------------------
;P3.2中断口作为水位检测端
;=========================================聚宝工业设计室(2011-12)==============================================
LEDPOWER BIT P1.7 ;电源开关显示
LEDGD BIT P1.6 ;干豆显示
LEDSD BIT P1.5 ;湿豆显示
LEDMH BIT P1.4 ;米糊显示
;----------------------------------------------------------------------------
DM BIT P1.3 ;电机控制端
DH BIT P1.2 ;发热管控制
;----------------------------------------------------------------------------
KG BIT P1.1 ;开关键
GN BIT P1.0 ;功能键
;=========================================================================================
ORG 0000H
JMP START
ORG 00BH
JMP STOP_1 ;水位检测中断服务程序
ORG 0030H
START:
SETB EA
SETB EX0
MOV P1,#00H
ACALL YSH1
ACALL YSH1
ACALL YSH1 ;端口初始化调延时等待
MOV P1,#0FFH
ACALL YSH1
ACALL YSH1
ACALL YSH1
;----------------------------------------------------------------------------
LOOP0:
JB KG,LOOP1 ;开/关功能键检测
ACALL YSH2 ;去抖动延时
JB KG,LOOP1
POWER:
JNB KG,$ ;如果还没有松开按键则等待松开
CPL LEDPOWER ;电源 控制 P1.7
JMP LOOP0
;------------------------------------------------------------------------------------------------------------------------
LOOP1:
CJNE A,#03,GOOD ;判断功能键是否按了3次
MOV A,#00H
GOOD:
JB GN,LOOP0 ;功能选择键检测
ACALL YSH2 ;去抖动延时
JB GN,LOOP0
JNB GN,$ ;等待功能键松开
;----------------------------------------------------------------------------------
JMP THERRSUN ;转向三功能豆浆控制程序
THERRSUN:
CJNE A,#00H,SHI_DOU
INC A
JMP GANG_DOUSTART ;转向干豆程序
SHI_DOU:
CJNE A,#01H,MI_HU
INC A
JMP SHI_DOUSTART ;转向湿豆程序
MI_HU:
CJNE A,#02H,LOOP0 ;循环检测
INC A
JMP MI_HUSTART ;转向米糊程序
;-----------------------------------------------------------------------------------------------------------------------
GANG_DOUSTART:
CLR LEDGD ;煮干豆程序(P1.6口LED显示)
CLR DH ;让发热管加热水
SETB DM ;断开电机
ACALL YS_1 ;调用加热水5分钟延时
CLR DM ;接通过电机,断开发热管,开始打豆浆
SETB DH ;断开发热管
ACALL YS_2 ;调用打豆浆延时5分钟
CLR DH ;接通发热管
SETB DM ;断开电机
ACALL YS_1 ;煮豆浆5分钟
CLR DM
SETB DH
ACALL YS_1 ;再打5分钟豆浆
SETB DM
CLR DH
ACALL YS_1 ;煮豆浆5分钟
JMP STOP ;完成干豆的打磨和煮豆浆,转到停机程序
;-----------------------------------------------------------------------------------------------------------------------
SHI_DOUSTART:
CLR LEDSD ;煮湿豆程序(P1.5口LED显示)
CLR DM ;先打豆后才煮豆浆
SETB DH
ACALL YS_1 ;打豆5分钟
CLR DH ;煮豆浆
SETB DM
ACALL YS_1 ;煮5分钟
CLR DM ;再打豆
SETB DH
ACALL YS_1 ;打豆5分钟
SETB DM ;煮豆浆
CLR DH
ACALL YS_1 ;煮5分钟
JMP STOP
;-----------------------------------------------------------------------------------------------------------------------
MI_HUSTART:
CLR LEDMH ;煮干豆程序(P1.4口LED显示)
CLR DH ;让发热管加热水
SETB DM ;断开电机
ACALL YS_1 ;调用加热水5分钟延时
CLR DM ;接通过电机,断开发热管,开始打豆浆
SETB DH ;断开发热管
ACALL YS_2 ;调用打豆浆延时5分钟
CLR DH ;接通发热管
SETB DM ;断开电机
ACALL YS_1 ;煮豆浆5分钟
CLR DM
SETB DH
ACALL YS_1 ;再打5分钟豆浆
SETB DM
CLR DH
ACALL YS_1 ;煮豆浆5分钟
JMP STOP ;完成干豆的打磨和煮豆浆,转到停机程序
;==========================================================================
STOP:
JMP START
STOP_1:
MOV P1,#00H
JMP $
;========================================端口初始==============
YSH1:
MOV R3,#250
D0: MOV R4,#250
DJNZ R4,$
DJNZ R3,D0
RET
;----------------------------------------------------------------按键去抖----------------------
YSH2:
MOV R3,#10
D1:
MOV R4,#250
DJNZ R4,$
DJNZ R3,D1
RET
;----------------------------------------------------------------5分钟----------------------------
YS_1:
MOV R3,#50
D2: MOV R4,#50
D3: MOV R2,#50
DJNZ R2,$
DJNZ R4,D3
DJNZ R3,D2
RET
;----------------------------------------------------------------2分钟---------------------------
YS_2:
MOV R3,#50
D4: MOV R4,#50
D5: MOV R2,#50
DJNZ R2,$
DJNZ R4,D5
DJNZ R3,D4
RET
END
;以上程序经过试验OK!
|
评分
-
查看全部评分
|