?? motor.lst
字號:
C51 COMPILER V7.06 MOTOR 05/03/2007 09:38:49 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MOTOR
OBJECT MODULE PLACED IN motor.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE motor.c BROWSE DEBUG OBJECTEXTEND SRC(.\motor.SRC)
stmt level source
1 /******************************************************************/
2 /*****************************************************************/
3 /*
-
4 /* 步進電機加減速運行程序
-
5 /* 步進電機啟動時,轉速由慢到快逐步加速。
-
6 /* 步進電機勻速運行
-
7 /* 步進電機由快到慢逐步減速到停止
8 /*
-
-
9 /******************************************************************/
10
11 #include <reg52.h>
12 #include <string.h>
13
14 #define uchar unsigned char
15 #define uint unsigned int
16
17 sbit addr0 = P1^4;
18 sbit addr1 = P1^5;
19 sbit addr2 = P1^6;
20 sbit addr3 = P1^7;
21
22 uchar code FFW[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//正轉數組
23 uchar code REV[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//反轉數組
24 uchar rate ;
25 /********************************************************/
26 /*
27 /* 延時
28 /* 11.0592MHz時鐘,
29 /*
30 /********************************************************/
31 void delay()
32 {
33 1 uchar k;
34 1 uint s;
35 1 k = rate;
36 1 do
37 1 {
38 2 for(s = 0 ; s <100 ; s++) ;
39 2 }while(--k);
40 1 }
41
42
43 void delay2(uchar k)
44 {
45 1
46 1 uchar s;
47 1 for(s = 0 ; s <k ; s++) ;
48 1
49 1 }
C51 COMPILER V7.06 MOTOR 05/03/2007 09:38:49 PAGE 2
50
51 /********************************************************/
52 /*
53 /*步進電機正轉
54 /*
55 /********************************************************/
56 void motor_ffw()
57 {
58 1 uchar i;
59 1
60 1 for (i=0; i<8; i++) //一個周期轉30度
61 1 {
62 2 P0 = FFW[i];//取數據
63 2 addr0 = 1;
64 2 addr1 = 0;
65 2 addr2 = 1;
66 2 addr3 = 1;
67 2 addr3 = 0;
68 2 delay(); //調節轉速
69 2 }
70 1 }
71
72 /********************************************************/
73 /*
74 /*步進電機反轉
75 /*
76 /********************************************************/
77 void motor_rev()
78 {
79 1 uchar i;
80 1
81 1 for (i=0; i<8; i++) //一個周期轉30度
82 1 {
83 2 P0 = REV[i]; //取數據
84 2 addr0 = 1;
85 2 addr1 = 0;
86 2 addr2 = 1;
87 2 addr3 = 1;
88 2 addr3 = 0;
89 2 delay(); //調節轉速
90 2 }
91 1 }
92
93 /********************************************************
94 *
95 *步進電機運行
96 *
97 *********************************************************/
98 void motor_turn()
99 {
100 1 uchar x;
101 1 rate=0x30;
102 1 x=0xf0;
103 1 do
104 1 {
105 2 motor_ffw(); //正轉加速
106 2 rate--;
107 2 }while(rate!=0x0a);
108 1
109 1 do
110 1 {
111 2 motor_ffw(); //正轉勻速
C51 COMPILER V7.06 MOTOR 05/03/2007 09:38:49 PAGE 3
112 2 x--;
113 2 }while(x!=0x01);
114 1
115 1 do
116 1 {
117 2 motor_ffw(); //正轉減速
118 2 rate++;
119 2 }while(rate!=0x30);
120 1 do
121 1 {
122 2 motor_rev(); //反轉加速
123 2 rate--;
124 2 }while(rate!=0x0a);
125 1
126 1 do
127 1 {
128 2 motor_rev(); //反轉勻速
129 2 x--;
130 2 }while(x!=0x01);
131 1
132 1 do
133 1 {
134 2 motor_rev(); //反轉減速
135 2 rate++;
136 2 }while(rate!=0x30);
137 1 }
138
139 /********************************************************
140 *
141 * 主程序
142 *
143 *********************************************************/
144 main()
145 {
146 1
147 1 P1=0xf0;
148 1
149 1 while(1)
150 1 {
151 2 P0 = 0x00;//ULN2003輸出高電平
152 2 addr0 = 1;
153 2 addr1 = 0;
154 2 addr2 = 1;
155 2 addr3 = 1;
156 2 addr3 = 0;
157 2 delay2(255);
158 2
159 2 motor_turn();
160 2
161 2 }
162 1 }
163
164
165
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 156 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
C51 COMPILER V7.06 MOTOR 05/03/2007 09:38:49 PAGE 4
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 + -