标题: 单片机两键控制豆浆机汇编程序(芯片AT89C2051) [打印本页]

作者: das    时间: 2015-4-5 01:30
标题: 单片机两键控制豆浆机汇编程序(芯片AT89C2051)
;-------------------------------------------------------------两键控制豆浆机程序(芯片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!


作者: dsbk123    时间: 2024-10-24 14:38
楼主辛苦了,虽然看不懂汇编,先赞一个!
作者: wl20020807    时间: 2024-10-26 21:57
楼主有原理图吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1