实验八数控工作台“点动” 实验目的 掌握MCS-51单片机应用于输入和输出结合的驱动步进电机的程序设计和调试方法 二.实验设备 1.ME-5103在线仿真器1台: 2. IBM-PC微机1台; 3.直流稳压电源1台; 4.步进电机数控工作台驱动系统1套 三.实验内容 1.实验设计 数控工作台“点动”驱动实验;定时中断程序控制步进电机速度 定时器0于方式1,16位,10ms中断一次键盘上数字分别表示方向,如8为上,7为左上等 如下表示: U-L UP U-R 789 LEFT STOP RIGHT 4 5 6 D-L dOWN D-R 123 当按下对应的数字键时,X轴(左右)和Y轴(上下)的步进电机按三相六拍的工作方式运 Y轴 轴 C B A C B A P1.6P1.5P1.4P1.2P1.1P1.0 用键盘上方的发光二极管(3FH对应指示 Y轴 X轴 D2 DI 参考程序 内存分配 TCER EQU4OH;10ms计数单元 XSTAT EQU 52H YSTAT EQU 53H SM OUT EQU 55H 位地址,工作标志 P EQU 02H X轴正反转 PEQU03H;Y轴正反转 XW EQU04H;X轴工作 YW EQU05H¥Y轴工作 DISP EQU ODE0OH;显示子程序入口 TKB EQU ODE6O;判键子程序 KEYB EQU ODE7OH;键分析子程序
实验八 数控工作台“点动” 一.实验目的 掌握 MCS-51 单片机应用于输入和输出结合的驱动步进电机的程序设计和调试方法。 二.实验设备 1.ME-5103 在线仿真器1台; 2.IBM-PC 微机1台; 3.直流稳压电源1台; 4.步进电机数控工作台驱动系统1套。 三.实验内容 1.实验设计 数控工作台“点动”驱动实验; 定时中断程序控制步进电机速度 定时器 0 于方式 1,16 位,10ms 中断一次键盘上数字分别表示方向, 如 8 为上, 7 为左上等, 如下表示: U-L UP U-R 7 8 9 LEFT STOP RIGHT 4 5 6 D-L DOWN D-R 1 2 3 当按下对应的数字键时,X 轴(左右)和 Y 轴(上下)的步进电机按三相六拍的工作方式运 动: Y 轴 X 轴 C B A C B A P1.6 P1.5 P1.4 P1.2 P1.1 P1.0 用键盘上方的发光二极管(3FH)对应指示: Y 轴 X 轴 D6 D5 D4 D2 D1 D0 2.参考程序 ;内存分配 TCER EQU 40H ;10ms 计数单元 XSTAT EQU 52H YSTAT EQU 53H SM_OUT EQU 55H ; 位地址,工作标志 XP EQU 02H ;X 轴正反转 YP EQU 03H ;Y 轴正反转 XW EQU 04H ;X 轴工作 YW EQU 05H ;Y 轴工作 ; DISP EQU 0DE00H ;显示子程序入口 TKB EQU 0DE60H ;判键子程序 KEYB EQU 0DE70H ;键分析子程序
ORG 0O0OHI STA AJMP ORG000BH;定时器0中断服 AJMP TINT0;务程序入口 DRG 0030H MAIN: MOV RO,#39H;显示缓冲区初始化 MAIN 0: MOV @RO. #0 INC RO CJNE RO, #40H, MAIN 0 MOV XSTAT. #01 MOV YSTAT. #01 MOV SM OUT, #1lH MOV TMOD, #OIH MOV IE,#10000010B MOV THO. #OECH: 10ms: EC78H MOV TLO. #78H SET MAIN1: ACALL CONT;主程序循环 ACALL KEY O SJMP MAIN 1 CONT: MOV 3FH. SM OUT LCALL DISP;控制显示程序 RET KEY0: LCALL TKB;有键? Z KEY 1 CLRW;清标志 CLR YW RET 无键返回 KEY 1: LCALL KEYB JZ KEY O CJNE A, #OAH, KEY 2 KEY 2: JNC KEY 0 >9 CJNE A, #1, KEY 3 SJMP KEYB 1 KEY 3: CJNE A, #2, KEY 4 SJMP KEYB 2 KEY 4: CJNE A, #3, KEY 5 SJMP KEYB 3 KEY 5: CJNE A, #4, KEY 6
; ORG 0000H START: AJMP MAIN ; ORG 000BH ;定时器 0 中断服 AJMP TINT0 ;务程序入口 ; ORG 0030H MAIN: MOV R0,#39H ;显示缓冲区初始化 MAIN_0: MOV @R0,#0 INC R0 CJNE R0,#40H,MAIN_0 MOV XSTAT,#01 MOV YSTAT,#01 MOV SM_OUT,#11H MOV TMOD,#01H MOV IE,#10000010B MOV TH0,#0ECH;10ms:EC78H MOV TL0,#78H SETB TR0 MAIN_1: ACALL CONT ;主程序循环 ACALL KEY_0 SJMP MAIN_1 ; CONT: MOV 3FH,SM_OUT LCALL DISP ;控制显示程序 RET ; KEY_0: LCALL TKB ;有键? JNZ KEY_1 CLR XW ;清标志 CLR YW RET ;无键返回 KEY_1: LCALL KEYB JZ KEY_0 ;=0 CJNE A,#0AH,KEY_2 KEY_2: JNC KEY_0 ;>9 CJNE A,#1,KEY_3 SJMP KEYB_1 KEY_3: CJNE A,#2,KEY_4 SJMP KEYB_2 KEY_4: CJNE A,#3,KEY_5 SJMP KEYB_3 KEY_5: CJNE A,#4,KEY_6
SJMP KEYB 4 EY 6: CJNE A, #5, KEY KEY 7: CJNE A, #6, KEY 8 SJMP KEYB 6 KEY 8: CJNE A, #7, Key 9 SJMP KEYB 7 KEY 9: CJNE A, #8, KEY A SJMP KEy 8 KEY A: SJMP KeyB 9 KEYB 1: SETB XW CLR XP SETB YW SETB YP KEYB 2: CLR XW SETB YW SETB YP KEYB 3: SETB XW CLR XP SETB YW SETB YP KEYB 4: SETB XW SETB XP CLR YW KEYB 6: SETB XW CLR XP CLR YW KEYB 7: SETB XW CLR XP SETB YW CLR YP KEYB 8: CLR XW SETB YW CLR YP KEYB 9: SETB XW CLR XP SETB YW
SJMP KEYB_4 KEY_6: CJNE A,#5,KEY_7 RET KEY_7: CJNE A,#6,KEY_8 SJMP KEYB_6 KEY_8: CJNE A,#7,KEY_9 SJMP KEYB_7 KEY_9: CJNE A,#8,KEY_A SJMP KEYB_8 KEY_A: SJMP KEYB_9 KEYB_1: SETB XW CLR XP SETB YW SETB YP RET KEYB_2: CLR XW SETB YW SETB YP RET KEYB_3: SETB XW CLR XP SETB YW SETB YP RET KEYB_4: SETB XW SETB XP CLR YW RET KEYB_6: SETB XW CLR XP CLR YW RET KEYB_7: SETB XW CLR XP SETB YW CLR YP RET KEYB_8: CLR XW SETB YW CLR YP RET KEYB_9: SETB XW CLR XP SETB YW
CLR YP 定时器0中断服务程序 TINTO: MOV THO. #OECH MOV TLO,#78H PUSH ACC;保护现场 PUSH PSW PUSH O1H INC TCER Mov A, TCER CJNE A, #50, TINTOR MOV TCER #0 JNB XW, TINT 1 ACALL XPD TINT 1: JNB YW, TINTOR ACALL YPD TINTOR:MoP1, SM OUT;输出到P1口 OPO1H;恢复现场 POP PSW RETI 步进电机驱动处理 XPD: CLR 0H=0为X轴 MOV RI. #XSTAT MOV C. XP AJMP PPD YPD:SETB01H;01H=1为Y轴 MOV RI. #YSTAT MOV C. YP JC PPD2 INC ORI CJNE OR1, #OTH, PPD3 MOV ORl, #1 AJMP PPD3 PPD2: DEC RI CJNE OR1, #OOH, PPD3 MOV R1. #O PPD3: MOV A, eRI ADD A, #1 MOVC A, GA+PC AJMP PPD5 SM TAB: DB 33H 11H 55H DB44H,66H,22H
CLR YP RET ; ;定时器 0 中断服务程序 TINT0: MOV TH0,#0ECH MOV TL0,#78H PUSH ACC ;保护现场 PUSH PSW PUSH 01H INC TCER MOV A,TCER CJNE A,#50,TINT0R MOV TCER,#0 JNB XW,TINT_1 ACALL XPD TINT_1: JNB YW,TINT0R ACALL YPD TINT0R: MOV P1,SM_OUT ;输出到 P1 口 POP 01H ;恢复现场 POP PSW POP ACC RETI ;步进电机驱动处理 XPD: CLR 01H ; 01H=0 为 X 轴 MOV R1,#XSTAT MOV C,XP AJMP PPD YPD: SETB 01H ; 01H=1 为 Y 轴 MOV R1,#YSTAT MOV C,YP PPD: JC PPD2 INC @R1 CJNE @R1,#07H,PPD3 MOV @R1,#1 AJMP PPD3 PPD2: DEC @R1 CJNE @R1,#00H,PPD3 MOV @R1,#06 PPD3: MOV A,@R1 ADD A,#1 MOVC A,@A+PC AJMP PPD5 SM_TAB: DB 33H,11H,55H DB 44H,66H,22H
PPD5: JB OlH, PPD6 ANLA,#OFH;X轴低4位新值 ANL SM OUT,#0FOH;Y保持 ORL SM OUT. A PPD6:ANLA,#OFOH;Y轴高4位新值 ANL SM_OUT,#0FH;X保持 ORL SM OUT.A 四.实验报告 1.写出本程序调试过程和运行结果 2.如按某键运动而用5作停止,如何修改?
PPD5: JB 01H,PPD6 ANL A,#0FH ;X 轴低 4 位新值 ANL SM_OUT,#0F0H ;Y 保持 ORL SM_OUT,A RET PPD6: ANL A,#0F0H ;Y 轴高 4 位新值 ANL SM_OUT,#0FH ;X 保持 ORL SM_OUT,A RET ; 四.实验报告 1.写出本程序调试过程和运行结果. 2.如按某键运动,而用 5 作停止,如何修改?