找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2880|回复: 0
收起左侧

单片机汇编语言步进电机,正转反转,加速减速,数码管显示速度和状态

[复制链接]
ID:792214 发表于 2020-6-28 21:19 | 显示全部楼层 |阅读模式
批注 2020-06-24 092400.png
程序:   
SPEED EQU 10H    ;SPEED为转速等级标志,共4级,即1~4
FX EQU 11H          ;FX 为方向标志
COUNT EQU 12H    ;COUNT中断次数标志
ORG 0000H
AJMP MAIN
ORG 0003H          ;外部中断0入口地址,加速子程序
AJMP UP
ORG 0013H          ;外部中断1入口地址,减速子程序
AJMP DOWN
ORG 000BH    ;定时器0中断入口地址,控制中断次数来达到控制转速      
AJMP ZDT0
ORG 0030H
MAIN: MOV SP,#60H
MOV TMOD,#01H        ;工作于定时、软件置位启动,模式1(16 位计时器)
MOV TH0,#0CFH
MOV TL0,#2CH
MOV COUNT,#01H
SETB ET0                  ;定时/计数器允许中断
CLR IT0                    ;外部中断为电平触发方式,低电平有效
CLR IT1
SETB EX0                  ;外部允许中断
SETB EX1
SETB EA                  ;开总中断
MOV R1,#11H    ;四相单四拍运行,共阳数码管方向显示8,速度值显示0
MOV SPEED,#00H
MOV FX,#00H
XIANS: MOV A,SPEED
MOV DPTR,#LED
MOVC A,@A+DPTR            ;查表获取等级对应数码管代码
MOV P2,A                      ;第二个数码管显示转速等级
MOV A,FX                        ;准备判断转向
CJNE A,#11H,ELS
MOV P0, #0F9H              ;第一个数码管显示 1,表示正转
AJMP QD
ELS: CJNE A,#00H,ZHENG
MOV P0,#0C0H                  ;第一个数码管显示 0,表示不转
AJMP QD
ZHENG: MOV P0,#0BFH            ;第一个数码管显示-,表示反转
QD: JB P3.4,DD                  ;P3.4接启动开关 K1,P3.4=1 时启动
CLR TR0                    ;停止定时/计数器
MOV P0,#0C0H             ;第一个数码管显示 0,表示不转
MOV P2,#0C0H            ;第二个数码管显示 0,表示转速为 0
MOV SPEED,#00H            ;重新赋初值
MOV FX,#00H
AJMP QD
DD: MOV A,SPEED
JNZ GO                      ;A 不等于 0,即初始速度不为零,则转移到 GO
CLR TR0                          ;停止定时/计数器
AJMP QD
GO: SETB TR0                    ;开启定时/计数器
ACALL DELAY
AJMP XIANS
DELAY: MOV R6,#10                    ;延时子程序
DEL1: MOV R7,#250
HERE1: DJNZ R7, HERE1
DJNZ R6,DEL1
RET
ZDT0: PUSH ACC
PUSH DPH
PUSH DPL
MOV TH0,#0D8H
MOV TL0,#0F0H
DJNZ COUNT,EXIT
JB P3.5,NIZHUAN            ;查询方向标志,P3.5 接换向开关 K2
MOV FX,#11H
NIZHUAN:MOV A,FX
CJNE A,#11H,FZ        ;若A不等于11,即正转,则转移到 FZ
MOV A,R1                              ;R1 记录上一次电机脉冲状态
MOV P1,A
RR    A                        ;循环右一位
MOV R1,A
MOV P1,A
AJMP RE
FZ: MOV A,R1
MOV P1,A
RL A                        ;循环左移一位
MOV P1,A
MOV R1,A
RE: MOV A,SPEED
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV COUNT,A                                ;把转速级别赋给 COUNT
JB P3.5 ,FFX  ;P3.5 接换向开关K2, 即换向位,若P3.5=1,则跳到 FFX
MOV FX,#11H
AJMP EXIT
FFX: MOV FX,#0FEH;只要FX不等于11H,就可以通过循环左移或右移进行换向
EXIT: POP DPL
POP DPH
POP ACC
RETI
UP: PUSH ACC       ;以下 UP 为加速中断程序
ACALL DELAY                 ;延时防抖
JB P3.2,UPEX   ;P3.2 为外部中断0位,接增速开关S2,低电平有效,若3.2=1,则退出
MOV A,SPEED
CJNE A,#4,SZ            ;最大等级为 4,若 A 不等于 4,则转移到 SZ
AJMP UPEX                ;若 A=4,则退出
SZ: INC SPEED              ;SPEED= SPEED+1
UPEX: POP ACC
HERE2: JNB P3.2,HERE2      ;本条指令为防止开关 S2 按下去后弹不起,导致一直产生中断
RETI
DOWN: PUSH ACC        ;以下 DOWN 为减速中断程序
ACALL DELAY
JB P3.3,DEX ;P3.3 为外部中断1位,接减速开关S3,低电平有效,P3.3=1则退出
MOV A,SPEED
CJNE A,#0,SJ
AJMP DEX
SJ: DEC SPEED                  ;SPEED= SPEED-1
DEX: POP ACC
HERE3: JNB P3.3,HERE3
RETI
TAB: DB 0,60,40,35,30,28,25,21  ;经仿真,小于21时,由于脉冲太快,会出现失步 ;
LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
END

批注 2020-06-24 091706.png
批注 2020-06-24 091529.png
批注 2020-06-24 091440.png
批注 2020-06-24 090345.png

作业说明书.docx

189.4 KB, 下载次数: 32, 下载积分: 黑币 -5

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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