步进电机转速控制

上传人:子 文档编号:42914064 上传时间:2018-06-04 格式:DOC 页数:13 大小:61.50KB
返回 下载 相关 举报
步进电机转速控制_第1页
第1页 / 共13页
步进电机转速控制_第2页
第2页 / 共13页
步进电机转速控制_第3页
第3页 / 共13页
步进电机转速控制_第4页
第4页 / 共13页
步进电机转速控制_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《步进电机转速控制》由会员分享,可在线阅读,更多相关《步进电机转速控制(13页珍藏版)》请在金锄头文库上搜索。

1、步进电机转速控制步进电机转速控制 ;* ; 文件名:Demo_Ex04.ASM(汇编程序框架) ; 功 能:在 DP_51PRO 实验仪上利用外部中断控制步进电机转动:每中断一次电机步进 1 步。 ;* ;资源定义 * ;位变量 *;字节变量 * FLAG EQU 26H PHASE_OUT EQU30H;步进电机相位通电状态VAR_ENDEQU30H;最后一个字节变量的位置, ;应根据实际需要修改 ;堆栈定义 * STACK_INIEQUVAR_END+1;须保证足够的空间;程序 * ORG0000H;复位入口 LJMPRESET ORG001BH;定时器/计数器 0 溢出中断服务程序入口

2、LJMP T1INT ORG0040H;复位处理程序 RESET:MOVSP,#STACK_INI;设置栈底指针MOV PHASE_OUT,#01110111BMOV TMOD,#90H MOV FLAG,#0MOV TH1,#9EHMOV TL1,#58H MOV P1,PHASE_OUT SETBEA SETB ET1 SETB TR1 ;主程序 * MAIN: MOV FLAG,#0MOV A,P3JNB ACC.2,KEY1 SJMP MAIN KEY1: LCALL DELAY_10MSMOV A,P3JNB ACC.2,KEY1_Z SJMP MAIN KEY1_Z: MOV FL

3、AG,#1KEY1_ZZ: MOV A,P3JNB ACC.2,KEY1_ZZ SJMPMAIN T1INT: MOV A,PHASE_OUT MOV R0,FLAGCJNE R0,#0,KEY MOV TH1,#9EHMOV TL1,#58HRR ASJMP KEYEND KEY: MOV TH1,#3CHMOV TL1,#0B0HRL A KEYEND: MOV PHASE_OUT,A MOV P1,ARETI DELAY_10MS: MOV R2,#100 ;延时 200ms 以内子程序 DL2: MOV R1,#24 DL1: NOPNOPDJNZ R1,DL1DJNZ R2,DL2R

4、ETEND ;1MS 改 R0=10,R1=24 ;10MS 改 R0=100,R1=24 ;100MS 改 R0=200,R1=112步进输出模拟电压步进输出模拟电压 VAL EQU 28H ORG0000HLJMP MAINORG 0030H MAIN: MOV VAL,#100 L: MOV DPTR,#3C00HMOV A,VALMOVX DPTR,AMOV P1,#0fFHMOV A,P1JNB ACC.7,K0 JNB ACC.6,K1 JMP LK0: LCALL DELAY_10MSMOV A,P1JNB ACC.7,KK0JMP L KK0: LCALL DELAY_10MS

5、 MOV A,P1JNB ACC.7,KK0MOV A,VAL CJNE A,#205,SS JMP L SS: SUBB A,#201 JNC KK0_END MOV A,VALADD A,#5 MOV VAL,A SJMP L KK0_END:JMP L K1: LCALL DELAY_10MS MOV A,P1JNB ACC.6,KK1JMP L KK1: LCALL DELAY_10MS MOV A,P1JNB ACC.6,KK1MOV A,VALCJNE A,#50,SS1 SJMP L SS1: SUBB A,#51 JC KK0_END MOV A,VALSUBB A,#5 MO

6、V VAL,ASJMP LDELAY_10MS: MOV R0,#100 ;延时 200ms 以内子程序 DL2: MOV R1,#24 DL1: NOPNOPDJNZ R1,DL1DJNZ R0,DL2RET ;1MS 改 R0=10,R1=24 ;10MS 改 R0=100,R1=24 ;100MS 改 R0=200,R1=112END 单个模拟电压等级识别单个模拟电压等级识别FLAG EQU 29H AD_VALEQU30H;AD 转换结果值 RANDEQU31H;AD 转换结果值 VAR_ENDEQU32H;最后一个字节变量的位置, STACK_INIEQUVAR_END+1;须保证足

7、够的空间 ORG0000H;复位入口 LJMPRESET ORG0040H;复位处理程序 RESET: MOVSP,#60H;设置栈底指针MAIN: MOV R3,#40H ADVAL: MOV DPTR,#3C04H;此处添加读 A/D 转换结果的指令MOVXDPTR,A;此处添加启动 D/A 转换的指令 WAIT: DJNZ R3,WAITMOVXA,DPTR MOVAD_VAL,AMOV B,#26DIV ABLCALL SQRMOV RAND,AMOV P1,RANDSJMP MAIN TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,9

8、0H SQR: MOV DPTR,#TABMOVC A,A+DPTRRET END单个模拟电压监测单个模拟电压监测 AD_VALEQU30H;AD 转换结果值 RANDEQU31H;AD 转换结果值 VAR_ENDEQU32H;最后一个字节变量的位置, STACK_INIEQUVAR_END+1;须保证足够的空间 ORG0000H;复位入口 LJMPRESETORG 000BHLJMP T0INT ORG0040H;复位处理程序 RESET: MOVSP,#60H;设置栈底指针MOV AD_VAL,#0MOV TMOD,#01MOV TH0,#3CHMOV TL0,#0B0H SETB EA

9、SETB ET0 SETB TR0 MAIN: CLR CMOV A,AD_VALSUBB A,#51JNC AMONGMOV P1,#0FEHSJMP MAIN AMONG: CLR CMOV A,AD_VALSUBB A,#205JC AMONG1MOV P1,#0FDHSJMP MAIN AMONG1: MOV P1,#0FFHSJMP MAIN T0INT: MOV TH0,#3CHMOV TL0,#0B0HMOV R3,#40HMOV DPTR,#2006H;此处添加读 A/D 转换结果的指令MOVXDPTR,A;此处添加启动 D/A 转换的指令 WAIT: DJNZ R3,WAIT

10、MOVXA,DPTR MOVAD_VAL,ARETI END 汉字显示汉字显示 ORG 0000H MOV 38H,#00000001B;行编码MOV P1,#00H;端口 P1,关闭显示 MOV R4,#08H;行三面和列扫描每个周期循环 8 MOV SCON,#0;初始化串口 0 MOV R3,#00H;先送地位 LL: MOV A,R3MOV P1,#00H;端口 P1,关闭显示LCALL SQR MOV SBUF,A;串行输出 JNB TI,$;判断串口是否输出数据完毕,没完没了 CLR TI;串口输出数据完毕,软件清 TI,为下次传列数据做准备 MOV A,38H MOV P1,A;

11、输出当前列编码。RL A MOV 38H,A INC R3 LCALL DELAY_1MS;延时 2msDJNZ R4,LL;判断是否扫描完一个周期 MOV R3,#00H;扫描完一个周期,为下一个周期重新扫描做准备 MOV R4,#08H;扫描完一个周期,为下一个周期重新扫描做准备 SJMP LL;扫描完一个周期,进入下一个周期重新扫描 SQR: MOV DPTR,#TABLE ;查表子程序MOVC A,A+DPTR RET DELAY_1MS: MOV R0,#20 ;延时 200ms 以内子程序 DL2: MOV R1,#24 DL1: NOPNOPDJNZ R1,DL1DJNZ R0,

12、DL2RET ;1MS 改 R0=10,R1=24 ;10MS 改 R0=100,R1=24 ;100MS 改 R0=200,R1=112 DELAY_1S: MOV R0,#201;此程序没用到,可以不管,延时 1s 子程序 DS3: MOV R1,#50 DS2: MOV R2,#24 DS1: NOPNOPDJNZ R2,DS1DJNZ R1,DS2DJNZ R0,DS3RET TABLE: DB 10H,10H,0FFH,10H,28H,24H,42H,81H;列编码 ;TABLE1: DB 01H,02H,04H,08H,10H,20H,40H,80H; END 两个模拟信号差超限时报警两个模拟信号差超限时报警 FLAG EQU 29H AD_VALEQU30H;AD 转换结果值 AD_VAL1EQU31H;AD 转换结果值 VAR_ENDEQU32H;最后一个字节变量的位置, STACK_INIEQUVAR_END+1;须保证足够的空间 ORG0000H;复位入口 LJMPRESET ORG0040H;复位处理程序 MOVSP,#60H;设置栈底指针 MOV P1,#0FFHMOV FLAG,#00H RESET: MOV R2,#02HMAIN: MOV R3,#40HMOV R1,FLAGCJNE R1,#00H,AD

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号