📄 stepmotor.lst
字号:
C51 COMPILER V7.50 STEPMOTOR 06/11/2008 15:16:27 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE STEPMOTOR
OBJECT MODULE PLACED IN StepMotor.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE StepMotor.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "StepMotor.h"
3 //*********************************步进电机的运行曲线表******
4 code INT8U StepMotorCurve[256]=
5 {
6 0, 2, 3, 5, 6, 8, 9, 11, 13, 14,
7 16, 17, 19, 20, 22, 24, 25, 27, 28, 30,
8 31, 33, 34, 36, 38, 39, 41, 42, 44, 45,
9 47, 48, 50, 51, 53, 55, 56, 58, 59, 61,
10 62, 64, 65, 67, 68, 70, 71, 73, 74, 76,
11 77, 79, 80, 82, 83, 85, 86, 88, 89, 91,
12 92, 94, 95, 97, 98, 99, 101, 102, 104, 105,
13 107, 108, 109, 111, 112, 114, 115, 117, 118, 119,
14 121, 122, 123, 125, 126, 128, 129, 130, 132, 133,
15 134, 136, 137, 138, 140, 141, 142, 144, 145, 146,
16 147, 149, 150, 151, 152, 154, 155, 156, 157, 159,
17 160, 161, 162, 164, 165, 166, 167, 168, 170, 171,
18 172, 173, 174, 175, 177, 178, 179, 180, 181, 182,
19 183, 184, 185, 186, 188, 189, 190, 191, 192, 193,
20 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
21 204, 205, 206, 207, 207, 208, 209, 210, 211, 212,
22 213, 214, 215, 215, 216, 217, 218, 219, 220, 220,
23 221, 222, 223, 224, 224, 225, 226, 227, 227, 228,
24 229, 229, 230, 231, 231, 232, 233, 233, 234, 235,
25 235, 236, 237, 237, 238, 238, 239, 239, 240, 241,
26 241, 242, 242, 243, 243, 244, 244, 245, 245, 245,
27 246, 246, 247, 247, 248, 248, 248, 249, 249, 249,
28 250, 250, 250, 251, 251, 251, 252, 252, 252, 252,
29 253, 253, 253, 253, 254, 254, 254, 254, 254, 255,
30 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
31 255, 255, 255, 255, 255, 255,
32 } ;
33 //*******************************延时一个us**************************
34 void Delay1us(void)
35 {
36 1 _nop_();
37 1 }
38 //*******************************延时n个us**************************
39 void DelayNus(INT16U us)
40 {
41 1 while(us--)
42 1 {
43 2 Delay1us();
44 2 _nop_();
45 2 _nop_();
46 2
47 2 }
48 1 }
49
50 //****************************SPI0串口发送一个字节***************
51 void SPI0SendOneByte(INT8U Value)
52 {
53 1
54 1 }
*** WARNING C280 IN LINE 51 OF STEPMOTOR.C: 'Value': unreferenced local variable
C51 COMPILER V7.50 STEPMOTOR 06/11/2008 15:16:27 PAGE 2
55 //******************************HC595移位两个字节*******************
56 void HC595Shift2Byte(INT8U ShiftData)
57 {
58 1
59 1 Load595Wait;
60 1 SPI0SendOneByte(ShiftData);
61 1 SPI0SendOneByte(ShiftData);//这里要发送2次,因为有两个一样的值
62 1 Load595Execuate; //更新数值
63 1 }
64
65 //****************************依次装入256个曲线值****************
66 void LoadCurveValue(void)
67 {
68 1 INT8U i;
69 1 for(i==0;i<0xff;i++)
70 1 {
71 2 HC595Shift2Byte(StepMotorCurve[i]);
72 2 DelayNus(StepMotorTurnSpeed);//延时越少电机转动得越快
73 2 }
74 1 for(i==0;i<0xff;i++)
75 1 {
76 2 HC595Shift2Byte(StepMotorCurve[0xff-i]);
77 2 DelayNus(StepMotorTurnSpeed);//延时越少电机转动得越快
78 2 }
79 1 //这里要进行半个正弦波的过程
80 1 }
81 //**************************步进电机走一步AB,A/B/,BA,B/A/,AB***********************
82 void StepMotorWalkOneStep(INT8U Direction)
83 {
84 1 if(Direction==0)//向右转过程为AB-B/A/- A/B/-AB-BA-A/B/-B/A/-BA
85 1 {
86 2 StepMotorPhase1H;//相位脚置高
87 2 StepMotorPhase2L;
88 2 LoadCurveValue();//执行了 AB,B/A/,
89 2 StepMotorPhase1H;
90 2 StepMotorPhase2H;
91 2 LoadCurveValue();//执行了 A/B/,AB
92 2 StepMotorPhase1L;//相位脚置高
93 2 StepMotorPhase2H;
94 2 LoadCurveValue();//执行了 BA,A/B/
95 2 StepMotorPhase1L;
96 2 StepMotorPhase2L;
97 2 LoadCurveValue();//执行了 B/A/,BA
98 2 }
99 1 else if(Direction==1)//向左转过程为AB-A/B/-B/A/-AB-BA-B/A-/A/B/-BA
100 1 {
101 2 StepMotorPhase1H;//相位脚置高
102 2 StepMotorPhase2H;
103 2 LoadCurveValue();//执行了 AB,B/A/,
104 2 StepMotorPhase1H;
105 2 StepMotorPhase2L;
106 2 LoadCurveValue();//执行了 A/B/,AB
107 2 StepMotorPhase1L;//相位脚置高
108 2 StepMotorPhase2L;
109 2 LoadCurveValue();//执行了 BA,A/B/
110 2 StepMotorPhase1L;
111 2 StepMotorPhase2H;
112 2 LoadCurveValue();//执行了 B/A/,BA
113 2 }
114 1 }
115
116 //********************** 步进电机走N步****************************
C51 COMPILER V7.50 STEPMOTOR 06/11/2008 15:16:27 PAGE 3
117 void StepMotorWalkNStep(INT8U Direction,INT16U NStep)
118 {
119 1 while(NStep--)
120 1 {
121 2 StepMotorWalkOneStep(Direction);
122 2 }
123 1 }
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 216 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -