📄 bjsdj.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 + -