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

📄 bjsdj.asm

📁 用单片机控制步进式电机的转速和转动方向 汇编语言编写
💻 ASM
字号:
程序:DJ 15-4.ASM
01       K1  EQU  P3.2        ; 设定P3.2以K1表示
02       K2  EQU  P3.3        ; 设定P3.3以K2表示
03       K3  EQU  P3.4        ; 设定P3.4以K4表示            引脚用开关表示
04
05  STOP:  MOV  P0,  #0FFH   ; 步进电动机停止
06  LOOP:  JNB  K1,  Z_M2    ; 是否按K1, 是则正转
07       JNB  K2,  F_M2       ; 是否按K2, 是则反转
08       JNB  K3,  STOP1      ; 是否按K3, 是则停止
09       JMP  LOOP           ; 转至LOOP处                  按键扫描
10
11  STOP1: ACALL  DELAY     ; 按K3的消除抖动
12       JNB  K3,  $           ;K3放开否?
13       ACALL  DELAY       ;放开消除抖动
14       JMP    STOP          ;电机停止
15
16  Z_M2:  ACALL  DELAY     ; 按K1的消除抖动
17       JNB  K1, $             ;K1放开否?
18       ACALL  DELAY        ;放开消除抖动
19       JMP    Z_M           ;转至Z_M处
20
21  F_M2:  ACALL  DELAY      ; 按K2的消除抖动 
22       JNB  K2,  $            ;K2放开否?
23       ACALL  DELAY        ;放开消除抖动                按键消除抖动并
24       JMP     F_M           ; 转至F_M处,循环           转至功能子程序
25
26  Z_M:   MOV  R0,#00H  ;正转至TABLE取码指针初值
27  Z_M1:  MOV  A, R0          ;至TABLE取码
28       MOV  DPTR, #TABLE    ;存表
29       MOVC  A,@A+DPTR     ;取表代码
30       JZ   Z_M               ;是否取到结束码(00H)?
31       MOV  P0,  A             ; 输出至P0,正转
32       JNB  K3,  STOP1        ;是否按K3,是则停止运转
33       JNB  K2,  F_M2         ;是否按K2,是反转
34       ACALL  DELAY         ;步进电动机转速
35       INC   R0               ;取下一个码
36       JMP   Z_M1            ;转至Z_M处,循环
37       RET                                                   正转子程序
38
39  F_M:   MOV  R0, #05 ;反转至TABLE取码指针初值
40  F_M1:   MOV  A, R0         ;至TABLE取码
41       MOV  DPTR, #TABLE   ;存表
42       MOVC A, @A+DPTR     ;取表代码
43       JZ    F_M             ;是否取到结束码(00H)?
44       MOV  P0, A            ; 输出至P0, 反转
45       JNB  K3, STOP1       ;是否按K3,是则停止运转
46       JNB  K1,  Z_M2      ;是否按K1,是正转
47       ACALL  DELAY      ;步进电动机转速
48       INC   R0             ;取下一个码
49       JMP   F_M1          ; 转至F_M1处,循环
50       RET                                                  反转子程序
51
52  DELAY: MOV  R6, #40      ; 延时时间20Ms
53  D1:    MOV  R7, #248
54       DJNZ R7,  $
55       DJNZ R6,  D1
56       RET                                                  延时子程序  
57 
58  TABLE:
59       DB  0FCH, 0F9H, 0F3H, 0F6H  ;正转
60       DB  00H                    ;正转结束码
61       DB  0F7H, 0F3H, 0FBH, 0F9H  ; 反转
62       DB  0FDH, 0FCH, 0FEH, 0F6H
63       DB  00H                    ;反转结束码             控制码表
64  
65      END                         ;                         程序结束

⌨️ 快捷键说明

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