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

📄 2005-11程序.txt

📁 用8051单片机做的一个洗菜机的程序
💻 TXT
字号:
;控制程序
;1.打开总电源开关,电源指示灯接通。
;2.选择自动控制程序(自动控制程序指示灯接通)
;  单片机运行进入等待状态。按开始程序自动运行
;  按暂停关闭所有电器保护现场,按开始恢复电器状态并运行。
;3.开进水阀-打开进水阀15秒后-启动解毒装置C-水位开关控制-自动;关进水阀。
;4.启动电机a、启动水泵b、-运行220秒-关闭电机a-10秒后-关闭水;泵b。
;5.开排水阀-50秒,再打开进水阀-10秒,然后后关闭排水阀(开排水;阀共60秒)-水位开关控制-自动关进水阀。
;
;6.启动电机a、启动水泵b-运行60秒-关闭电机a-5秒后-关闭水泵b。
;7.开排水阀-50秒,再打开进水阀-10秒,然后后关闭排水阀(开排水;阀共60秒)-水位开关控制-自动关进水阀。
; 8.启动电机a、启动水泵b-运行30秒-关闭电机a-30秒后-关闭水泵b、关闭解毒装置C。
; 9.开排水阀-50秒-关闭排水阀。
;10.接通蜂鸣器-10秒-关闭,同时接通完毕指示灯,启盖关闭。
;11.关总电源。
;
;由89c51接线可知:
;总控开关 由1脚p1.0高电平(置1)开,低电平(置0)关;
;自检完成状态正常等待时,打开总控电源开关
;进水阀 由2脚p1.1高电平(置1)开,低电平(置0)关;
;排水阀 由3脚p1.2高电平(置1)开,低电平(置0)关;
;电机a  由4脚p1.3高电平(置1)开,低电平(置0)关;
;水泵b  由5脚p1.4高电平(置1)开,低电平(置0)关;
;降解装置c  由6脚p1.5高电平(置1)开,低电平(置0)关;
;润滑装置d  由7脚p1.6高电平(置1)开,低电平(置0)关;
;接通蜂鸣器 由8脚p1.7高电平(置1)开,低电平(置0)关;
;水位开关   由27脚p2.6高电平(置1),水满。
;开始开关   由28脚p2.7高电平(置1),开始。


   
      
   

       ORG 0000H
Start: AJMP Main

       ORG 0003H
;外部中断0响应 
       PUSH P1;中断0入口0003H
       PUSH P2        
       MOV  P1,#0H 
       MOV  P2,#0H  
           
Wait0: ACALL Light   ;暂停时闪灯        
       JNB P2.7,Wait0;暂停后判断开始开关
         
       POP P2 ;恢复现场
       POP P1
       RETI;中断返  

Main:
;系统上电程序初始化  
       MOV P0,#0H ;初始化p0端口(0000 0000-p0.7..p0.0)
       MOV P1,#01H
       MOV P2,#0H
       MOV P3,#0H
;外部中断0开       
       SETB IT0;脉冲边沿触发
       SETB EX0;外部中断0允许
       SETB EA ;总中断允许 

;系统自检
       MOV A,P1
       CJNE A,#01H,Error 
       CLR P1.0
       
;等候开始
Wait:  JNB P2.7,Wait;判断开始开关   
     
;工序3  
         
    L3:ACALL ON_InValve
       MOV  R0,#2H
       ACALL DELAY
       ACALL ON_C 
       ACALL CHECK_Water
       ACALL OFF_InValve
        
 
;工序4      
    L4:ACALL ON_A           
       ACALL ON_B
       MOV  R0,#27H;延时39*5.38s=220s    
       ACALL OFF_A
       MOV  R0,#2H
       ACALL DELAY
       ACALL OFF_B
       
;工序5      
    L5:ACALL ON_OutValve       
       MOV  R0,#9H
       ACALL DELAY
       ACALL ON_InValve;
       MOV  R0,#1H
       ACALL DELAY
       ACALL OFF_OutValve
       ACALL CHECK_Water
       ACALL OFF_InValve  

;工序6      
    L6:ACALL ON_A             
       ACALL ON_B
       MOV  R0,#0BH
       ACALL DELAY
       ACALL OFF_A
       MOV  R0,#1H
       ACALL DELAY
       ACALL OFF_B

;工序7
    L7:ACALL ON_OutValve       
       MOV  R0,#9H
       ACALL DELAY
       ACALL ON_InValve;
       MOV  R0,#1H
       ACALL DELAY
       ACALL OFF_OutValve
       ACALL CHECK_Water
       ACALL OFF_InValve  

;工序8
    L8:ACALL ON_A
       ACALL ON_B
       MOV  R0,#5H
       ACALL DELAY
       ACALL OFF_A
       MOV  R0,#5H
       ACALL DELAY
       ACALL OFF_B
       ACALL OFF_C

;工序9    
    L9:ACALL ON_OutValve       
       MOV  R0,#9H
       ACALL DELAY
       ACALL OFF_OutValve

;工序10    
    L10:ACALL ON_Ring            
        MOV  R0,#01H
        ACALL DELAY
        ACALL OFF_Ring
      
        AJMP Main     ;返回

;子程序
;打开进水阀
ON_InValve:
      SETB P1.1
      RET      
;关闭进水阀
OFF_InValve:
      CLR P1.1
      RET
;打开排水阀
ON_OutValve:
      SETB P1.2
      RET
;关闭排水阀
OFF_OutValve:
      CLR P1.2
      RET
;打开电机a
ON_A:
      SETB P1.3
      RET
;关闭电机a
OFF_A:
      CLR P1.3
      RET          
;打开水泵b
ON_B:
      SETB P1.4
      RET
;关闭水泵b
OFF_B:
      CLR P1.4
      RET
          
;打开降解装置c
ON_C:
      SETB P1.5
      RET
;关闭降解装置c
OFF_C:
      CLR P1.5
      RET          
;打开蜂鸣器
ON_Ring:
      SETB P1.7
      RET
;关闭蜂鸣器
OFF_Ring:
      CLR P1.7
      RET
;故障时蜂鸣器
Error:   CLR  P1.0
         MOV  R6,#0CH  
   LOP1: MOV  R2,#0FFH
         CPL  P1.7
   LOP2: MOV  R3,#0FFH 
   LOP3: DJNZ R3,LOP3
	 DJNZ R2,LOP2
	 DJNZ R6,LOP1
	 AJMP Main                 
;暂停时闪灯
Light:   MOV  R5,#0FFH 
         CPL P1.0 
   LOP5: MOV R6,#0FFH 
   LOP6: DJNZ R6,LOP6
	 DJNZ R5,LOP5
         RET 
         
;检查水位开关
CHECK_Water:
;WATER:JNB P2.1,WATER;判断水位开关
;      RET 

   TEST: JB  P2.6,OUT
         JMP TEST
    OUT: CLR P2.6
         RET         
   
;延时 输入参数 R0,延时时间为R0*5 s
;调整R6,R5,R4的值用于调整延时长短,标准是当R0为1时延时为5s
;大约的值的大小((R4*4+2+1)*R5*2+4)*R6*2*一个机器周期
DELAY:
 LOOP4:	MOV R6,#7H              
 LOOP3:	MOV R5,#0FFH ;MOV R5,#0FFH
 LOOP2:	MOV R4,#0FFH ;MOV R4,#0FFH
 LOOP1:	NOP
	NOP
	DJNZ R4,LOOP1
	DJNZ R5,LOOP2
	DJNZ R6,LOOP3
	DJNZ R0,LOOP4
	RET

        END 

⌨️ 快捷键说明

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