找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2378|回复: 0
打印 上一主题 下一主题
收起左侧

单片机直流电机控制器制作 汇编语言程序

[复制链接]
跳转到指定楼层
楼主
凑一个热闹,多年前给一家公司做的推杆控制器,有遥控,正反转,暂停,到位停止,过载保护等等功能
窗户自动开启,电机正反转,升降控制,折叠控制都可以用上。

汇编写的!!




单片机源程序如下:

  ;                       输入端口                                                                       输出端口
                                                                                ;                    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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表