?? 步進電機.lst
字號:
C51 COMPILER V8.05a 步絖電籣 10/23/2010 16:06:23 PAGE 1
C51 COMPILER V8.05a, 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 使用芯片:AT89S52 或者 STC89C52
6 晶振:11.0592MHZ
7 編譯環境:Keil
8 作者:zhangxinchunleo
9 網站:www.ourhc.cn
10 淘寶店:匯誠科技 http://shop36330473.taobao.com
11 【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!
12
13 *********************************************************************/
14
15 #include<reg52.h>
16 #define uchar unsigned char
17 #define uint unsigned int
18
19 //電機控制專用數據
20 /*****P1.0=A ;P1.1=B ;P1.2=B' ; P1.3=A'****/
21
22 /*******************************正轉數組**************************************************/
23 code uchar runz[8]={
24 0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04
25 };
26 //兩相四線八拍工作方式
27 /*******************************反轉數組**************************************************/
28 code uchar runf[8]={
29 0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05
30 };
31 //兩相四線八拍工作方式
32 uchar keycan=0; //鍵值
33 uchar i,j,k,z;
34 unsigned char receive_count; //用于存儲單片機接收發送緩沖寄存器SBUF里面的內容
35 uchar add_temp=0,rdu_temp=0;//定義加減速的控制值
36 uchar oper_temp=0;
37
38 int y=10;//定義轉動速度,數值越大電機轉速越慢反之則快
39
40 sbit P2_0=P2^0;//正轉按鍵
41 sbit P2_1=P2^1;//反轉按鍵
42 sbit P2_2=P2^2;//電機加圈
43 sbit P2_3=P2^3;//電機減圈
44
45 /***************************************************************************
46 函數聲明
47 ***********************************************************************/
48 void delay(i) ;
49 void zrun();
50 void frun() ;
51 void Init_Com(void);
52
53 /********************************************************************
54 主程序
55 *********************************************************************/
C51 COMPILER V8.05a 步絖電籣 10/23/2010 16:06:23 PAGE 2
56 main()
57 {
58 1 Init_Com();
59 1 while(1)
60 1 {
61 2
62 2 if ( RI ) //掃描判斷是否接收到數據,
63 2 {
64 3 receive_count = SBUF;
65 3 RI=0; //RI
66 3 //判斷串口接收的字符類型
67 3 switch( receive_count)
68 3 {
69 4 case 'A': keycan=1;break; //接收到的字符為B 是keycan=1
70 4 case 'B': keycan=2;break; //接收到的字符為C 是keycan=1
71 4 case 'C': add_temp=1;break; //接收到的字符為D 是電機加速add_temp=1
72 4 case 'D': rdu_temp=1;break; //接收到的字符為E是 電機加減速rdu_temp=1
73 4 case 'E':
74 4 keycan=0;
75 4 rdu_temp=0;
76 4 add_temp=0;
77 4 break; //接收到的字符為F 是keycan=0
78 4 }
79 3 }
80 2 switch (keycan) //判斷電機的工作狀態
81 2 {
82 3 case 0: break;
83 3 case 1:
84 3 {
85 4 zrun();
86 4 }
87 3 break;
88 3 case 2:
89 3 {
90 4 frun();
91 4 }
92 3 break;
93 3 }
94 2 if(P2_0==0) //如果電機正轉按鍵按下
95 2 {
96 3 keycan=1; //鍵值等于1
97 3 }
98 2 if(P2_1==0) //如果電機反轉按鍵按下
99 2 {
100 3 keycan=2; //鍵值等于2
101 3 }
102 2
103 2 if((P2_2==0)||(rdu_temp==1)) // 電機加速
104 2 {
105 3 delay(200);
106 3 y=y+2;
107 3 rdu_temp=0;
108 3 }
109 2 if((P2_3==0)||(add_temp))
110 2 {
111 3 delay(200); // 電機減速
112 3 y=y-2;
113 3 add_temp=0;
114 3 }
115 2 }
116 1 }
117
C51 COMPILER V8.05a 步絖電籣 10/23/2010 16:06:23 PAGE 3
118 /***************************************************************************************
119 串口初始化函數
120 ***************************************************************************************/
121 void Init_Com(void)
122 {
123 1 TMOD = 0x20;
124 1 PCON = 0x00;
125 1 SCON = 0x50;
126 1 TH1 = 0xFd;
127 1 TL1 = 0xFd;
128 1 TR1 = 1;
129 1 }
130
131 /********************************************************************
132 延時程序
133 *********************************************************************/
134 void delay(i)//延時函數
135 {
136 1 for(j=0;j<i;j++)
137 1 for(k=0;k<150;k++);
138 1 }
139
140 /********************************************************************
141 步進電機正傳程序
142 *********************************************************************/
143
144 void zrun()// 正轉運行
145 {
146 1
147 1 for(z=0;z<8;z++)
148 1 {
149 2 P1=runz[z];
150 2 delay(y);
151 2 }
152 1 }
153 /********************************************************************
154 步進電機反轉程序
155 *********************************************************************/
156 void frun()// 反轉運行
157 {
158 1 for(z=0;z<8;z++)
159 1 {
160 2 P1=runf[z];
161 2 delay(y);
162 2 }
163 1 }
164
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -