单片机应用程序  

[ 2007/12/27 11:27:49 | Author: runyu ]

实用的单片机程序,分手动/自动两部分,另有中断服务程序.

控制两个汽缸,用两个五位三通电磁阀.如有疑问,请留言
       ORG    0000H
       AJMP   MAIN
       ORG    0003H
       AJMP   INTEX0
       ORG    0030H

MAIN:
       SETB   EA            
       SETB   EX0     
       CLR     IT0     
       MOV     SP,#60H
       MOV    P0,0FFH
       MOV    P2,0FFH
       JNB      P3.3, ORIGIN
       AJMP   MAN
ORIGIN: 
    
         CLR   P0.0      
          CLR   P2.0      
        JB         P1.0,$
          CLR   P0.2  
            CLR   P2.2  
         JB         P1.2,$
         SETB    P0.0
         SETB    P0.2
          SETB    P2.0
         SETB    P2.2
ORE:
              MOV    P0,0FFH
       MOV    P2,0FFH
           MOV    P1,0FFH
       MOV    P3,0FFH
           SETB   EX0     
           CLR     IT0     
         JB      P3.3,MAIN
        CLR   C
        ORL   C,P3.0
        ORL   C,P3.1
         JC      ORE
        AJMP   START
     
START:  
           JB         P1.0,$
           JB         P1.2,$
             CLR      P0.3
              CLR      P2.3
             JB         P1.3,$
             SETB      P0.3
             SETB      P2.3
             ACALL  DLY05S
             CLR      P0.1
              CLR      P2.1
             JB         P1.1,$
             SETB      P0.1
             SETB      P2.1
           ACALL  DLY05S
              CLR      P0.0
              CLR      P2.0
             JB         P1.0,$
             SETB      P0.0
             SETB      P2.0
               CLR      P0.2
              CLR      P2.2
             JB         P1.2,$
             SETB      P0.2
             SETB      P2.2
         ACALL  DLY05S
        AJMP  MAIN
INTEX0:
     PUSH      ACC
      PUSH     PSW
       CLR       EX0
       MOV    P0,0FFH
       MOV    P2,0FFH
       CLR   P0.0      
          CLR   P2.0      
        JB         P1.0,$
          CLR   P0.2  
            CLR   P2.2  
         JB         P1.2,$
         SETB    P0.0
         SETB    P0.2
          SETB    P2.0
         SETB    P2.2
INT:    JNB     P3.2,  INT
           CLR    P1.3
           CLR    P1.1
           POP     PSW
          POP   ACC
     
           RETI


MAN:
       JNB    P3.4,A0
       JNB    P3.5,B0
       JNB    P3.6,C0
       JNB    P3.7,D0
        JB     P3.3,MAN
      AJMP   MAIN


A0:     CLR    P0.0
          CLR    P2.0
        ACALL  DLY01S
       JB     P3.4,A0OK
       AJMP   MAN 
A0OK:  
        SETB   P0.0
         SETB    P2.0
       AJMP   MAN

B0:     CLR    P0.1
            CLR    P2.1
        ACALL  DLY01S
       JB     P3.5,B0OK
       AJMP   MAN
B0OK:
             SETB   P0.1
           SETB   P2.1
         AJMP   MAN
C0:     CLR    P0.3
          CLR    P2.3
        ACALL  DLY01S
       JB     P3.6,C0OK
       AJMP   MAN 
C0OK:  
        SETB   P0.3
         SETB    P2.3
       AJMP   MAN

D0:     CLR    P0.2
            CLR    P2.2
        ACALL  DLY01S
       JB     P3.7,D0OK
       AJMP   MAN
D0OK:
             SETB   P0.2
           SETB   P2.2
         AJMP   MAN

DLY05S  MOV   R6,#5
DL20    MOV   R4,#250
DL10    MOV   R5,#200
DL50    DJNZ  R5,DL50
       DJNZ  R4,DL10
       DJNZ  R6,DL20
       RET

DLY01S  MOV   R6,#1
DL200   MOV   R4,#250
DL100   MOV   R5,#200
DL500   DJNZ  R5,DL500
       DJNZ  R4,DL100
       DJNZ  R6,DL200
       RET


DLY10S   MOV   R6,#10
DL2      MOV   R4,#250                ;R4=250 (MAX 255)
DL1      MOV   R5,#200                ;R5=200 (MAX 255)
DL5      DJNZ  R5,DL5         
        DJNZ  R4,DL1 
        DJNZ  R6,DL2      
        RET

        END

回复:单片机应用程序

[ 2008/1/30 15:45:23 | Author: qfzousdh(游客) ]
用C编写更简单明了
 

中华工控网 | 联系我们 | 工控论坛首页 | 工控博客首页 | 博客注册 | 博客登陆

工控博客管理联系邮箱:工控博客服务邮箱

中华工控网 © Copyright 2013. All rights reserved.