?? s_ motor-key.lst
字號:
C51 COMPILER V6.10 S__MOTOR_KEY 08/11/2007 13:42:33 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE S__MOTOR_KEY
OBJECT MODULE PLACED IN .\S_ MOTOR-key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\S_ MOTOR-key.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 /******************************************************************
3 /* *
4 /* ME300B單片機開發系統演示程序-步進電機鍵控正反轉實驗 *
5 /* *
6 /* 郵箱: gguoqing@willar.com *
7 /* 網站: http://www.willar.com *
8 /* 作者: gguoqing *
9 /* 時間: 2006/05/30 *
10 /* *
11 /*【版權】COPYRIGHT(C)偉納電子 www.willar.com ALL RIGHTS RESERVED *
12 /*【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息! *
13 /* *
14 /******************************************************************/
15
16 #include <reg51.h> //51芯片管腳定義頭文件
17 #include <intrins.h> //內部包含延時函數 _nop_();
18
19 #define uchar unsigned char
20 #define uint unsigned int
21
22 uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
23 uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
24
25 sbit K1 = P1^4; //正轉
26 sbit K2 = P1^5; //反轉
27 sbit K3 = P1^6;
28 sbit K4 = P1^7; //停止
29 sbit BEEP = P3^7; //蜂鳴器
30
31 /********************************************************/
32 /*
33 /* 延時t毫秒
34 /* 11.0592MHz時鐘,延時約1ms
35 /*
36 /********************************************************/
37 void delay(uint t)
38 {
39 1 uint k;
40 1 while(t--)
41 1 {
42 2 for(k=0; k<125; k++)
43 2 { }
44 2 }
45 1 }
46
47 /**********************************************************/
48 void delayB(uchar x) //x*0.14MS
49 {
50 1 uchar i;
51 1 while(x--)
52 1 {
53 2 for (i=0; i<13; i++)
54 2 { }
55 2 }
C51 COMPILER V6.10 S__MOTOR_KEY 08/11/2007 13:42:33 PAGE 2
56 1 }
57
58 /**********************************************************/
59 void beep()
60 {
61 1 uchar i;
62 1 for (i=0;i<100;i++)
63 1 {
64 2 delayB(4);
65 2 BEEP=!BEEP; //BEEP取反
66 2 }
67 1 BEEP=1; //關閉蜂鳴器
68 1 }
69
70 /********************************************************/
71 /*
72 /*步進電機正轉
73 /*
74 /********************************************************/
75 void motor_ffw()
76 {
77 1 uchar i;
78 1 uint j;
79 1 for (j=0; j<12; j++) //轉1*n圈
80 1 {
81 2 if(K4==0)
82 2 {break;} //退出此循環程序
83 2 for (i=0; i<8; i++) //一個周期轉30度
84 2 {
85 3 P1 = FFW[i]; //取數據
86 3 delay(100); //調節轉速
87 3 }
88 2 }
89 1 }
90
91 /********************************************************/
92 /*
93 /*步進電機反轉
94 /*
95 /********************************************************/
96 void motor_rev()
97 {
98 1 uchar i;
99 1 uint j;
100 1 for (j=0; j<12; j++) //轉1×n圈
101 1 {
102 2 if(K4==0)
103 2 {break;} //退出此循環程序
104 2 for (i=0; i<8; i++) //一個周期轉30度
105 2 {
106 3 P1 = REV[i]; //取數據
107 3 delay(100); //調節轉速
108 3 }
109 2 }
110 1 }
111
112 /********************************************************
113 *
114 * 主程序
115 *
116 *********************************************************/
117
C51 COMPILER V6.10 S__MOTOR_KEY 08/11/2007 13:42:33 PAGE 3
118 main()
119 {
120 1 uchar r,N=5; //N 步進電機運轉圈數
121 1 while(1)
122 1 {
123 2 if(K1==0)
124 2 {
125 3 beep();
126 3 for(r=0;r<N;r++)
127 3 {
128 4 motor_ffw(); //電機正轉
129 4 if(K4==0)
130 4 {beep();break;} //退出此循環程序
131 4 }
132 3 }
133 2 else if(K2==0)
134 2 {
135 3 beep();
136 3 for(r=0;r<N;r++)
137 3 {
138 4 motor_rev(); //電機反轉
139 4 if(K4==0)
140 4 {beep();break;} //退出此循環程序
141 4 }
142 3 }
143 2 else
144 2 P1 = 0xf0;
145 2 }
146 1 }
147
148 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 213 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -