📄 步进马达.lst
字号:
C51 COMPILER V7.10 步絖马达 11/17/2011 09:38:50 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 步絖马达
OBJECT MODULE PLACED IN 步进马达.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 步进马达.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************************
2 * 标题: 步进电机试验四 *
3 * *
4 * 通过本例程了解步进马达使用及驱动程序编写 *
5 * 双四拍工作方式: *
6 * AB-BC-CD-DA (即一个脉冲,转 7.5 度) *
7 * *
8 * 请学员一定要消化掉本例程, *
9 *
10 **************************************************************************************/
11
12
13 #include "reg52.h"
14 //Motor
15 sbit F1 = P1^0;
16 sbit F2 = P1^1;
17 sbit F3 = P1^2;
18 sbit F4 = P1^3;
19
20
21
22 ///////////////////////////////////////
23 //步进电机驱动
24 unsigned char MotorStep=0;
25 unsigned int MotorTimer = 0;
26 unsigned int TIM,CT;
27
28 void InitMotor()
29 {
30 1 F1 = 1;
31 1 F2 = 1;
32 1 F3 = 1;
33 1 F4 = 1;
34 1 }
35
36
37
38 void SetMotor()
39 {
40 1 // if(Speed == 0) return;
41 1
42 1
43 1 switch(MotorStep)
44 1 {
45 2 case 0:
46 2 if(TIM)
47 2 {
48 3 F1 = 0;
49 3 F2 = 0;
50 3 F3 = 1;
51 3 F4 = 1;
52 3 MotorStep = 1;
53 3 TIM=0;
54 3 }
55 2 break;
C51 COMPILER V7.10 步絖马达 11/17/2011 09:38:50 PAGE 2
56 2
57 2 case 1:
58 2 if(TIM)
59 2 {
60 3 F1 = 1;
61 3 F2 = 0;
62 3 F3 = 0;
63 3 F4 = 1;
64 3 MotorStep = 2;
65 3 TIM=0;
66 3 }
67 2 break;
68 2
69 2 case 2:
70 2 if(TIM)
71 2 {
72 3
73 3
74 3 F1 = 1;
75 3 F2 = 1;
76 3 F3 = 0;
77 3 F4 = 0;
78 3 MotorStep = 3;
79 3 TIM=0;
80 3 }
81 2 break;
82 2
83 2
84 2 case 3:
85 2 if(TIM)
86 2 {
87 3 F1 = 0;
88 3 F2 = 1;
89 3 F3 = 1;
90 3 F4 = 0;
91 3 MotorStep = 0;
92 3 TIM=0;
93 3 }
94 2 break;
95 2 }
96 1
97 1 }
98
99
100 void system_Ini()
101 {
102 1 TMOD|= 0x11;
103 1 TH0=0xDC; //11.0592M
104 1 TL0=0x00;
105 1 IE = 0x8A;
106 1 TR0 = 1;
107 1
108 1
109 1 }
110
111 main()
112 { system_Ini();
113 1 InitMotor();
114 1 while(1)
115 1 {
116 2 SetMotor();
117 2
C51 COMPILER V7.10 步絖马达 11/17/2011 09:38:50 PAGE 3
118 2 }
119 1
120 1
121 1
122 1 }
123
124 /*************************************
125 [ t1 (0.5ms)中断] 中断中做 PWM 输出
126 ------------1000/(0.02ms*250)=200Hz
127 *************************************/
128 void Tzd(void) interrupt 1
129 {
130 1 TH0 = 0xfe; //11.0592
131 1 TL0 = 0x33;
132 1
133 1 if( CT++==40)
134 1 {TIM=1;
135 2 CT=0;
136 2 }
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 177 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -