📄 step motor.lst
字号:
C51 COMPILER V7.06 STEP_MOTOR 12/04/2007 01:27:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE STEP_MOTOR
OBJECT MODULE PLACED IN step motor.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE step motor.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #define uchar unsigned char
3
4 #define positive 0
5 #define minus 1
6 sbit direction_select=P3^6;
7 bit dir_flag=1;
8 uchar code Pulse_table[4]={0xf8,0xf4,0xf2,0xf1};//{0xfc,0xf6,0xf3,0xf9};
9 uchar code Pulse_table_m[4]={0xf1,0xf2,0xf4,0xf8};//{0xf9,0xf3,0xf6,0xfc};
10 extern bit reset_flag;
11 sbit key_cycleless=P3^3;
12 sbit key_pause=P3^5;
13 sbit key_start=P3^4;
14 extern delay();
15 extern bit Glint_enable_flag;
16 extern bit Pause_flag;
17
18 /*
19 void delaymotorf()//////////////////////////////////////////
20 {
21 int k;
22 for(k=0;k<3000;k++);
23 }
24 */
25 void delaymotor()//////////////////////////////////////////
26 {
27 1 int k;
28 1 for(k=0;k<4000;k++);
29 1 }
30
31
32
33 void step_motor()///////////////////////////转90度
34 {
35 1 bit direction;
36 1 uchar i,j;
37 1 TR0=0;
38 1 if(direction_select==0&&dir_flag==1)
39 1 {
40 2 direction=positive;
41 2 dir_flag=0;
42 2 }
43 1 if(direction_select==1&&dir_flag==1)
44 1 {
45 2 direction=minus;
46 2 dir_flag=0;
47 2 }
48 1 if(direction==positive)
49 1 {
50 2
51 2 for(j=0;j<24;j++)//13
52 2 {
53 3 for(i=0;i<4;i++)
54 3 {
55 4
C51 COMPILER V7.06 STEP_MOTOR 12/04/2007 01:27:32 PAGE 2
56 4 P0=Pulse_table[i];
57 4 /*
58 4 if(j<2||j>22)
59 4 delaymotor();
60 4 else
61 4 */
62 4 delaymotor();
63 4
64 4 if(key_pause==0)
65 4 {
66 5 delay();
67 5 if(key_pause==0)
68 5 {
69 6 Pause_flag=1;
70 6 Glint_enable_flag=1;
71 6 TR0=0;
72 6 while(1)
73 6 {
74 7 if(key_start==0)
75 7 {
76 8 Pause_flag=0;
77 8 Glint_enable_flag=0;
78 8 //TR0=1;
79 8 break;
80 8 }
81 7 if(reset_flag==1)
82 7 {
83 8 //reset_flag=0;
84 8 break;
85 8 }
86 7 }
87 6 }
88 5 }
89 4
90 4 }
91 3 }
92 2 P0=0;
93 2 direction=minus;
94 2 }
95 1 else
96 1 if(direction==minus)
97 1 {
98 2 /*
99 2 P0=0xf3;//@@@@@@@@@@@@@@@@@@@@@2
100 2 delaymotor();
101 2 P0=0xf6;
102 2 delaymotor();
103 2 P0=0xfc;
104 2 delaymotor();
105 2 */
106 2 for(j=0;j<24;j++)//12
107 2 {
108 3 for(i=0;i<4;i++)
109 3 {
110 4 P0=Pulse_table_m[i];
111 4 /*
112 4 if(j<2||j>22)
113 4 delaymotor();
114 4 else
115 4 */
116 4 delaymotor();
117 4
C51 COMPILER V7.06 STEP_MOTOR 12/04/2007 01:27:32 PAGE 3
118 4
119 4 if(key_pause==0)
120 4 {
121 5 delay();
122 5 if(key_pause==0)
123 5 {
124 6 Pause_flag=1;
125 6 Glint_enable_flag=1;
126 6 TR0=0;
127 6 while(1)
128 6 {
129 7 if(key_start==0)
130 7 {
131 8 Pause_flag=0;
132 8 Glint_enable_flag=0;
133 8 //TR0=1;
134 8 break;
135 8 }
136 7 if(reset_flag==1)
137 7 {
138 8 //reset_flag=0;留待外面置0
139 8 break;
140 8 }
141 7 }
142 6 }
143 5 }
144 4
145 4 }
146 3 }
147 2 P0=0;//@@@@@@@@@@@22
148 2 direction=positive;
149 2 }
150 1 if(reset_flag==1)
151 1 {
152 2 TR0=0;
153 2 if(key_cycleless==1)//不是无限循环状态,则外面不会用到reset_flag,置0
154 2 reset_flag=0;
155 2 }
156 1 else
157 1 TR0=1;//正常,开启计时
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 193 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -