|
|
|
用AT89C51单片机控制步进电机的汇编源程序
时间:2015-01-29 14:30:02
标签:单片机(2540)源程序(50)步进电机(282)汇编语言(64)AT89C大电流电感51(89) 下面程序完成的主要功能:实现步进电机的正反转,加速、减速;显示电机转速(转速级别)和工作状态(正转、反转、不转)。 源程序 SPEED EQU 10H ;SPEED为转速等级标志,共7级,即1~7 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 MAI大电流电感N: 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 ;查http://www.ruishen.net.cn/片式电感器表获取等级对应数码管代码 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 标签:单片机(2540)源程序(50)步进电机(282)汇编语言(64)AT89C51(89) ;以下 ZDT0 为定时器中断程序 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 为加速中断程序 UP: PUSH ACC ACALL DELAY ;延时防抖 JB P3.2,UPEX ;P3.2 为外部中断0位,接增速开关S2,低电平有效,若P3.2=1,则退出 MOV A,SPEED CJNE A,#7,SZ ;最大等级为 7,若 A 不等于 7,则转移到 SZ AJMP UPEX ;若 A=7,则退出 SZ: INC SPEED ;SPEED= SPEED+1 UPEX: POP ACC HERE2: JNB P3.2,HERE2 ;本条指令为防止开关 S2 按下去后弹不起,导致一直产生中断 RETI ;以下 DOWN 为减速中断程序 D差模电感
上一篇
便利节能的照明灯延时控制电路
下一篇
深圳世强电讯:AVAGO距离/亮度传感器
|