📄 s_ motor-key.lst
字号:
C51 COMPILER V7.10 S__MOTOR_KEY 04/12/2009 20:07:59 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE S__MOTOR_KEY
OBJECT MODULE PLACED IN S_ MOTOR-key.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE S_ MOTOR-key.C BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include <reg52.h> //51芯片管脚定义头文件
4 #include <intrins.h> //内部包含延时函数 _nop_();
5
6 #define uchar unsigned char
7 #define uint unsigned int
8
9 uchar code FFW[8]={0x1F,0x3F,0x2F,0x6F,0x4F,0xCF,0x8F,0x9F};
10 uchar code REV[8]={0x9F,0x8F,0xCF,0x4F,0x6F,0x2F,0x3F,0x1F};
11 //uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
12 //uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
13
14 sbit K1 = P3^4; //正转
15 sbit K2 = P3^5; //反转
16 sbit K3 = P3^6;
17 sbit K4 = P3^7; //停止
18 sbit BEEP = P2^3; //蜂鸣器
19
20 /********************************************************/
21 /*
22 /* 延时t毫秒
23 /* 11.0592MHz时钟,延时约1ms
24 /*
25 /********************************************************/
26 void delay(uint t)
27 {
28 1 uint k;
29 1 while(t--)
30 1 {
31 2 for(k=0; k<125; k++)
32 2 { }
33 2 }
34 1 }
35
36 /**********************************************************/
37 void delayB(uchar x) //x*0.14MS
38 {
39 1 uchar i;
40 1 while(x--)
41 1 {
42 2 for (i=0; i<13; i++)
43 2 { }
44 2 }
45 1 }
46
47 /**********************************************************/
48 void beep()
49 {
50 1 uchar i;
51 1 for (i=0;i<180;i++)
52 1 {
53 2 delayB(5);
54 2 BEEP=!BEEP; //BEEP取反
55 2 }
C51 COMPILER V7.10 S__MOTOR_KEY 04/12/2009 20:07:59 PAGE 2
56 1 BEEP=1; //关闭蜂鸣器
57 1 }
58
59 /********************************************************/
60 /*
61 /*步进电机正转
62 /*
63 /********************************************************/
64 void motor_ffw()
65 {
66 1 uchar i;
67 1 uint j;
68 1 for (j=0; j<12; j++) //转1*n圈
69 1 {
70 2 if(K4==0)
71 2 {break;} //退出此循环程序
72 2 for (i=0; i<8; i++) //一个周期转30度
73 2 {
74 3 P2 = FFW[i]; //取数据
75 3 delay(10); //调节转速
76 3 }
77 2 }
78 1 }
79
80 /********************************************************/
81 /*
82 /*步进电机反转
83 /*
84 /********************************************************/
85 void motor_rev()
86 {
87 1 uchar i;
88 1 uint j;
89 1 for (j=0; j<12; j++) //转1×n圈
90 1 {
91 2 if(K4==0)
92 2 {break;} //退出此循环程序
93 2 for (i=0; i<8; i++) //一个周期转30度
94 2 {
95 3 P2 = REV[i]; //取数据
96 3 delay(10); //调节转速
97 3 }
98 2 }
99 1 }
100
101 /********************************************************
102 *
103 * 主程序
104 *
105 *********************************************************/
106
107 main()
108 {
109 1 uchar r,N=5; //N 步进电机运转圈数
110 1 P2=0xDF;
111 1 while(1)
112 1 {
113 2 if(K1==0)
114 2 {
115 3 beep();
116 3 for(r=0;r<N;r++)
117 3 {
C51 COMPILER V7.10 S__MOTOR_KEY 04/12/2009 20:07:59 PAGE 3
118 4 motor_ffw(); //电机正转
119 4 if(K4==0)
120 4 {beep();break;} //退出此循环程序
121 4 }
122 3 }
123 2 else if(K2==0)
124 2 {
125 3 beep();
126 3 for(r=0;r<N;r++)
127 3 {
128 4 motor_rev(); //电机反转
129 4 if(K4==0)
130 4 {beep();break;} //退出此循环程序
131 4 }
132 3 }
133 2 else
134 2 P2 = 0x0F;
135 2 }
136 1 }
137
138 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 212 ----
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 + -