凑一个热闹,多年前给一家公司做的推杆控制器,有遥控,正反转,暂停,到位停止,过载保护等等功能
窗户自动开启,电机正反转,升降控制,折叠控制都可以用上。
1.png

2.png


3.png

汇编写的!!单片机源程序如下:
;                       输入端口                                                                       输出端口
  •                                                                                 ;                    2.4    对码输出(确认对码)
  •                                                                                         ;                    2.0    LED输出
  •                         ;                             3.2    手动折叠                                        ;                    2.3    蜂鸣器输出
  •                         ;                             3.3    手动打开                            ;                    2.1    继电器折叠
  •                         ;                             3.4    座位传感器                                ;                    2.2    继电器打开
  •                         ;                      3.5    备用(轮椅车程序用)                                                                                       
  •                         ;                      3.6    备用                                                                                                     
  •                         ;                      1.0    推杆过载                                                   
  •                         ;                      1.1    推杆确认
  •                         ;                      1.2    对码按键
  •                         ;                      1.7    遥控按键折叠
  •                         ;                      1.6    遥控按键打开
  •               ORG   00H
  • L1     :          MOV   61H     ,  #0
  •                           MOV   60H     ,  #0
  •                           MOV   65H      ,  #50
  • ;==========================================================================================                          
  •                           MOV       P3    ,  #0FFH
  •                           MOV       P1    ,  #0FFH
  • W         :   MOV       R7     ,    #2                                ;程序入口
  • W1        :   
  •               ACALL     DKQ
  •                           DJNZ      R7      ,   W1
  •                           CLR       P2.3
  •                           ACALL     K21
  •                           SETB      P2.3
  • ;========================================================================对码入口
  • LOOP     :      ACALL     FM
  •                             JNB       P1.2         ,        LOOP1
  •                             JMP       B2
  • LOOP1     :     MOV      66H      ,   #15
  • LOOP2     :     CLR      P2.0
  •                                 CLR      P2.4
  •                                 ACALL    FM
  •                                 SETB     P2.0
  •                                 ACALL    FM
  •                                 DJNZ     66H           ,       LOOP2
  •                                 SETB     P2.0
  •                                 SETB     P2.4
  •                                 JMP      LOOP4
  • ;========================================================================对码入口
  • LOOP3      :     ACALL     FM
  •                  CLR       P2.3
  •                                  JB        P1.7                   ,       LOOP3
  •                                  JB        P1.6                   ,       LOOP3
  •                                  SETB      P2.3
  •                                  ACALL     FM
  •                                  JMP       B2
  • LOOP4      :      MOV       67H            ,   #40
  • LOOP5      :          ACALL     FM
  •                                   JB        P1.7                   ,       LOOP3
  •                                   JB        P1.6                   ,       LOOP3
  •                                   DJNZ      67H            ,       LOOP5
  •                                   JMP       B2
  • ;=======================================================待机操作
  • B2       :      CLR       P2.0
  •                 ACALL     FM      
  •                 JNB       P3.2               ,        ZHANG1                   ;到折叠程序
  •                                 JNB       P3.3                   ,        ZHANG2                   ;到打开程序
  •                                 JB        P1.7                   ,        ZHANG1                   ;到折叠程序
  •                                 JB        P1.6                   ,        ZHANG2                   ;到打开程序
  •                                 JNB       P1.2         ,        LOOP           ;对码学习
  •                                 JMP       B2                                                               ;停止返回
  • ;=======================================================折叠按键防抖和干扰
  • ZHANG1      :         MOV       R4    ,    #255                                       ;防抖时间设置
  • Z10         :    MOV       R5    ,    #255
  • Z12         :    MOV       R6    ,    #3
  •                  DJNZ      R6    ,    $
  •                                  DJNZ      R5    ,    Z12
  •                                  DJNZ      R4    ,    Z10
  •                  JNB       P3.2                  ,        Z11                   ;比较按键是否按下 ,按下跳转
  •                  JB        P1.7                      ,        Z11                   ;比较按键是否按下 ,按下跳转
  •                                  JMP       B2                                                           ;停止返回
  • ;=======================================================折叠部分                                 
  • Z11                        :     JMP     C1                                                                   ;跳转折叠主程序
  •                                   JMP     B2
  • ;=======================================================打开按键防抖和干扰
  • ZHANG2      :         MOV       R4      ,    #255                               ;防抖时间设置
  • Z20         :    MOV       R5      ,    #255
  • Z22         :    MOV       R6      ,    #3
  •                  DJNZ      R6      ,    $
  •                                  DJNZ      R5      ,    Z22
  •                                  DJNZ      R4      ,    Z20
  •                  JNB       P3.3        ,        Z21                           ;比较按键是否按下 ,按下跳转
  •                  JB        P1.6                   ,        Z21                           ;比较按键是否按下 ,按下跳转
  •                                  JMP       B2
  • ;=======================================================打开部分
  • Z21         :    JMP       D1
  •                                  JMP       B2                                                                                         ;跳转打开主程序
  • ;============================================================================================================以上是按键操作和遥控部分
  • ;===========================================================================================================
  • C1          :           ACALL      DAKAI11
  •                    SETB      P2.0                                                     ;蜂鸣器开始响
  •                                    MOV        R7       ,        #10                 ;折叠延时设置
  •                                    JNB        P3.2           ,        C1                         ;按键确认
  •                    JB         P1.7           ,        C1                         ;按键确认
  • C2          :           
  •                    JNB              P3.4     ,        SS                         ;座位传感器
  •                    CLR        P2.2                                                         ;折叠马达启动
  •                                    ACALL      FM
  •                                    ACALL      ZHEDIE                                                 ;折叠延时程序
  •                                    JNB        P1.0      ,    C3                                 ;检测马达运行
  •                                    ACALL      DWFZ                                                         ;行程到位反转
  •                                    JMP        C4                                                         ;跳到报警子程序
  • SS           :           JMP        E3                  
  •                                    JMP        B2
  • C3           :           DJNZ       R7        ,    C2                                 ;折叠延时
  •                                    ACALL      ZDFZ                                                         ;折叠完成反转
  •                                    JMP        B2                                         ;停止返回
  • C4           :        MOV         61H          ,        #3        ;折叠到位                   (三声)
  •                                           ACALL       DKQ                                                ;蜂鸣器报警
  •                                           ACALL       BJ2                                                ;蜂鸣器报警
  •                                           DJNZ        65H      ,  C5
  •                                           JMP         L1
  • C5           :                  CLR         P2.0
  •                       ACALL       FM
  •                                           JNB         P3.2               ,        C4
  •                                       JNB         P3.3                   ,        ZHANG2
  •                                       JB          P1.7                   ,        C4
  •                                       JB          P1.6                   ,        ZHANG2
  •                                           JMP         C5
  •                                          
  • ;-------------------------------------------------------------------------------------------------------------
  • D1         :            ACALL   DAKAI11
  •                    SETB      P2.0                                           ;蜂鸣器开始响
  •                                    MOV        R7       ,        #10                 ;打开延时设置
  •                                    JNB        P3.3           ,        D1
  •                    JB         P1.6           ,        D1
  • D2           :           CLR        P2.1                                                         ;打开马达启动
  •                                    ACALL      FM
  •                                    ACALL      DAKAI                                                    ;打开延时程序
  •                                    JNB        P1.0        ,      D3
  •                                    ACALL      DKFZ
  •                                    JMP        D4                                       
  •                                    JMP        B2
  • D3          :      DJNZ       R7            ,       D2
  •                                    ACALL      DKFZ
  •                                    JMP        B2                                         ;停止返回
  • D4        :                  MOV         61H          ,        #3                 ;打开到位                   (三声)
  •                                  
  •                                   ACALL       DKQ
  •                                   ACALL       BJ2
  •                                   DJNZ        65H      ,  D5
  •                                   JMP         L1
  • D5      :                  CLR         P2.0
  •                   ACALL       FM
  •                                   JNB         P3.2               ,        D6
  •                                   JNB         P3.3                   ,        D4
  •                                   JB          P1.7                   ,        D6
  •                                   JB          P1.6                   ,        D4
  •                                   JMP         D5
  • D6       :        JMP         ZHANG1
  •                                  
  • ;============================================================================================================以上是马达的驱动部分
  • ;===========================================================================================================
  • ZDGZ     :                          SETB        P2.2                                                                 ;=!!!!折叠过载保护
  •                       SETB        P2.3
  •                                           ACALL       DWFZ
  •                                           
  • GZ       :                          MOV         61H          ,        #4                        ;=!!!!报警设置和子程序                   (四声)
  •                                           
  •                                           ACALL       DKQ
  •                                           ACALL       BJ2
  •                                           
  • GZ2      :                          ACALL       FM
  •                                           JNB         P3.2               ,        GZ
  •                                       JNB         P3.3                   ,        H2
  •                                       JB          P1.7                   ,        GZ
  •                                       JB          P1.6                   ,        H2
  •                                           JMP         GZ2
  • H2      :             JMP         ZHANG2
  •                                           JMP         B2
  • DKGZ    :                          SETB        P2.1                                                                 ;=!!!!打开过载保护
  •                       SETB        P2.3
  •                                           ACALL       DKFZ
  •                                           
  • GZ3       :                          MOV         61H          ,        #4                           ;=!!!!报警设置和子程序                           (四声)
  •                                          
  •                                           ACALL       DKQ
  •                                           ACALL       BJ2
  •                                           
  • GZ4      :                          ACALL       FM
  •                                           JNB         P3.2               ,        H1
  •                                       JNB         P3.3                   ,        GZ3
  •                                       JB          P1.7                   ,        H1
  •                                       JB          P1.6                   ,        GZ3
  •                                           JMP         GZ4
  • H1       :            JMP         ZHANG1
  •                                           JMP         B2
  • ;============================================================================================================以上是过流保护部分
  • ;===========================================================================================================
  • ;=======================================================折叠延时
  • ZHEDIE    :       CLR       P2.3                                          ;改成SETB,取消蜂鸣器
  •                   ACALL     ZD
  •                                    SETB      P2.3
  •                                   ACALL     ZD        
  •                                   RET
  • ZD         :      MOV       R0      ,   #255
  • ZD1        :      MOV       R1      ,   #255
  • ZD2        :      MOV       R2      ,   #15   
  •                   DJNZ      R2      ,    $
  •                                   DJNZ      R1      ,    ZD2
  •                                   JNB       P3.2               ,        E1
  •                                   JNB       P3.3                   ,        E1
  •                                   JB        P1.7                   ,        E1
  •                                   JB        P1.6                   ,        E1
  •                                   JNB            P3.4           ,        E3                                 ;座位传感器
  •                                   JNB       P1.1           ,        ZDGZ                         ;检测电流
  •                                   DJNZ      R0      ,    ZD1
  •                                   RET                                    
  • ;=======================================================打开延时
  • DAKAI     :       CLR       P2.3                                                  ;改成SETB,取消蜂鸣器
  •                   ACALL     DK
  •                                    SETB      P2.3
  •                                   ACALL     DK        
  •                                   RET
  • DK         :      MOV       R0      ,   #255
  • DK1        :      MOV       R1      ,   #255
  • DK2        :      MOV       R2      ,   #15   
  •                   DJNZ      R2      ,    $
  •                                   DJNZ      R1      ,    DK2
  •                                   JNB       P3.2               ,        E2
  •                                   JNB       P3.3                   ,        E2
  •                                   JB        P1.7                   ,        E2
  •                                    JB        P1.6                   ,        E2
  •                                   JNB       P1.1           ,             DKGZ                           ;检测电流
  •                                   DJNZ      R0      ,    DK1
  •                                   RET                                    
  • ;=========================================================================================================以上是马达运行延时程序
  • ;===========================================================================================================
  • DAKAI11     :      CLR       P2.3
  •                    ACALL     DKQ
  •                                     SETB      P2.3
  •                                    ACALL     DKQ        
  •                                    RET
  • DKQ         :      MOV    R0      ,   #255
  • DKQ1        :      MOV    R1      ,   #255
  • DKQ2        :      MOV    R2      ,   #15     
  •                    DJNZ   R2      ,    $
  •                                    DJNZ   R1      ,    DKQ2
  •                                    DJNZ   R0      ,    DKQ1
  •                                    RET                                    
  • ;============================================================================================================以上是允许开始的空程序
  • ;===========================================================================================================
  • ;============  折叠暂停程序
  • E1             :          SETB        P2.2
  •                       SETB        P2.3
  •                                           JNB         P3.2               ,        E1
  •                                       JNB         P3.3                   ,        E1
  •                                       JB          P1.7                   ,        E1
  •                                       JB          P1.6                   ,        E1
  •                                           MOV         61H          ,        #1                        ;=!!!!报警设置和子程序                   (一声)
  •                                           ACALL       ZDFZ
  •                                           ACALL       DKQ
  •                                           ACALL       BJ2
  •                                           JMP         B2
  • ;============  打开暂停程序
  • E2             :          SETB        P2.1
  •                       SETB        P2.3
  •                                           JNB         P3.2               ,        E2
  •                                       JNB         P3.3                   ,        E2
  •                                       JB          P1.7                   ,        E2
  •                                       JB          P1.6                   ,        E2
  •                                           MOV         61H          ,        #1                      ;=!!!!报警设置和子程序
  •                                           ACALL       DKFZ
  •                                           ACALL       DKQ
  •                                           ACALL       BJ2
  •                                           JMP         B2
  • ;============================================================================================================以上是暂停处理部分
  • ;===========================================================================================================
  • ;============ 座位传感器
  • E3              :          SETB        P2.2                                                                 ;=!!!!座位传感器保护
  •                       SETB        P2.3
  •                                           ;ACALL       ZDFZ
  •                                           
  • E31       :                          MOV         61H          ,        #2                        ;=!!!!报警设置和子程序                        (二声)
  •                                           
  •                                           ACALL       DKQ
  •                                           ACALL       BJ2
  •                                           
  • E32      :                          MOV         R7           ,        #15
  • E34      :                          ACALL       FM
  •                       JNB         P3.2               ,        E31
  •                                       JNB         P3.3                   ,        E33
  •                                       JB          P1.7                   ,        E31
  •                                       JB          P1.6                   ,        E33
  •                                           DJNZ        R7           ,        E34
  • E33      :            JMP        ZHANG2
  •                                           JMP        B2
  • ;============================================================================================================以上是座位传感器部分
  • ;===========================================================================================================
  • ;============  折叠反转
  • ZDFZ           :        SETB        P2.2
  •                         ACALL       K01
  •                                                 CLR         P2.1
  •                                                 ACALL       K11
  •                                                 SETB        P2.1
  •                                                 RET
  • ;============  打开反转
  • DKFZ           :        SETB        P2.1
  •                         ACALL       K01
  •                                                 CLR         P2.2
  •                                                 ACALL       K11
  •                                                 SETB        P2.2
  •                                                 RET
  • ;============  打开反转
  • DWFZ           :        SETB        P2.2
  •                         ACALL       K01
  •                                                 CLR         P2.1
  •                                                 ACALL       K21
  •                                                 SETB        P2.1
  •                                                 RET
  • ;=======================================================蜂鸣器程序
  • FMQ       :                  MOV       R3     ,     60H
  • FMQ1      :       CLR       P3.3
  •                   CLR       P2.0
  •                   ACALL     FM
  •                                    SETB      P3.3
  •                                   SETB      P2.0
  •                                   ACALL     FM        
  •                                   DJNZ      60H     ,    FMQ1
  •                                   RET
  • FM         :      MOV    R0      ,   #255
  • FM1        :      MOV    R1      ,   #255
  • FM2        :      MOV    R2      ,   #5      
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    FM2
  •                                   DJNZ   R0      ,    FM1
  •                                   RET                                    
  •                                    
  •                                  
  • ;=======================================================暂停反转延时设置
  • K1                 :        MOV    R0      ,   #255
  • K2       :        MOV    R1      ,   #255
  • K3       :        MOV    R2      ,   #5     
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    K3
  •                                   DJNZ   R0      ,    K2
  •                                   RET                                    
  • K11       :       MOV    R0      ,   #255
  • K12       :       MOV    R1      ,   #255
  • K13       :       MOV    R2      ,   #5       ;=========折叠反转延时设置
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    K13
  •                                   DJNZ   R0      ,    K12
  •                                   RET                                    
  •                                    
  •                                    
  • K21       :       MOV    R0      ,   #255
  • K22       :       MOV    R1      ,   #255
  • K23       :       MOV    R2      ,   #15      ;=========打开反转延时设置3022,3041---10    3051----35              (????????????????)
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    K23
  •                                   DJNZ   R0      ,    K22
  •                                   RET                                    
  • ;===========================================================================================================蜂鸣器的报警设置                                   
  • ;===========================================================================================================                                                   
  • ;=======================================================蜂鸣器报警处理程序
  • BJ       :                  MOV       R3     ,    #6
  • BJ1      :        CLR       P3.3
  •                   ACALL     G1
  •                                    SETB      P3.3
  •                                   ACALL     G1        
  •                                   DJNZ      R3    ,    BJ1
  •                                   RET
  • G1         :      MOV    R0      ,   #200
  • G11        :      MOV    R1      ,   #180
  • G12        :      MOV    R2      ,   #2                         ;==蜂鸣器短声
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    G12
  •                                   DJNZ   R0      ,    G11
  •                                   RET                                                                        
  •                   
  • BJ2       :                                                                                    ;==61H放置报警参数
  • BJ21      :       CLR       P2.3
  •                   CLR       P2.0
  •                   ACALL     G2
  •                                    SETB      P2.3
  •                                   SETB      P2.0
  •                                   ACALL     G2        
  •                                   DJNZ      61H    ,    BJ21
  •                                   RET
  • G2         :      MOV    R0      ,   #255
  • G21        :      MOV    R1      ,   #255
  • G22        :      MOV    R2      ,   #4                         ;==蜂鸣器长声
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    G22
  •                                   DJNZ   R0      ,    G21
  •                                   RET                                                                                                           
  •                                    
  • K01                 :         MOV    R0      ,   #255
  • K02       :        MOV    R1      ,   #255
  • K03       :        MOV    R2      ,   #25     
  •                   DJNZ   R2      ,    $
  •                                   DJNZ   R1      ,    K03
  •                                   DJNZ   R0      ,    K02
  •                                   RET                                                                        
  •                                    
  •                                   END
  • 复制代码