📄 s_ motor-key.lst
字号:
C51 COMPILER V8.05a S__MOTOR_KEY 12/30/2006 13:49:40 PAGE 1
C51 COMPILER V8.05a, 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
line level source
1
2 /******************************************************************
3 /* *
4 /* KT900单片机开发系统演示程序 - 步进电机控制程序 *
5 /* *
6 /* 步进电机启动时,转速由慢到快逐步加速。 *
7 /* *
8 /* 邮箱: 89s51@163.com *
9 /* 网站: http://www.150000.com *
10 /* 作者: 007 *
11 /* 时间: 2006/05/18 *
12 /* *
13 /*【版权】COPYRIGHT(C)南方电子 www.150000.com ALL RIGHTS RESERVED *
14 /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
15 /* *
16 /******************************************************************/
17
18 #include <reg51.h> //51芯片管脚定义头文件
19 #include <intrins.h> //内部包含延时函数 _nop_();
20
21 #define uchar unsigned char
22 #define uint unsigned int
23
24 uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
25 uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
26
27 sbit K1 = P1^4; //正转
28 sbit K2 = P1^5; //反转
29 sbit K3 = P1^6; //停止
30 sbit K4 = P1^7;
31 sbit BEEP = P3^7; //蜂鸣器
32
33 /********************************************************/
34 /*
35 /* 延时t毫秒
36 /* 11.0592MHz时钟,延时约1ms
37 /*
38 /********************************************************/
39 void delay(uint t)
40 {
41 1 uint k;
42 1 while(t--)
43 1 {
44 2 for(k=0; k<125; k++)
45 2 { }
46 2 }
47 1 }
48
49 /**********************************************************/
50 void delayB(uchar x) //x*0.14MS
51 {
52 1 uchar i;
53 1 while(x--)
54 1 {
55 2 for (i=0; i<13; i++)
C51 COMPILER V8.05a S__MOTOR_KEY 12/30/2006 13:49:40 PAGE 2
56 2 { }
57 2 }
58 1 }
59
60 /**********************************************************/
61 void beep()
62 {
63 1 uchar i;
64 1 for (i=0;i<100;i++)
65 1 {
66 2 delayB(4);
67 2 BEEP=!BEEP; //BEEP取反
68 2 }
69 1 BEEP=1; //关闭蜂鸣器
70 1 }
71
72 /********************************************************/
73 /*
74 /*步进电机正转
75 /*
76 /********************************************************/
77 void motor_ffw()
78 {
79 1 uchar i;
80 1 uint j;
81 1 for (j=0; j<12; j++) //转1*n圈
82 1 {
83 2 if(K4==0)
84 2 {break;} //退出此循环程序
85 2 for (i=0; i<8; i++) //一个周期转30度
86 2 {
87 3 P1 = FFW[i]; //取数据
88 3 delay(15); //调节转速
89 3 }
90 2 }
91 1 }
92
93 /********************************************************/
94 /*
95 /*步进电机反转
96 /*
97 /********************************************************/
98 void motor_rev()
99 {
100 1 uchar i;
101 1 uint j;
102 1 for (j=0; j<12; j++) //转1×n圈
103 1 {
104 2 if(K4==0)
105 2 {break;} //退出此循环程序
106 2 for (i=0; i<8; i++) //一个周期转30度
107 2 {
108 3 P1 = REV[i]; //取数据
109 3 delay(15); //调节转速
110 3 }
111 2 }
112 1 }
113
114 /********************************************************
115 *
116 * 主程序
117 *
C51 COMPILER V8.05a S__MOTOR_KEY 12/30/2006 13:49:40 PAGE 3
118 *********************************************************/
119
120 main()
121 {
122 1 uchar r,N=5; //N 步进电机运转圈数
123 1 while(1)
124 1 {
125 2 if(K1==0)
126 2 {
127 3 beep();
128 3 for(r=0;r<N;r++)
129 3 {
130 4 motor_ffw(); //电机正转
131 4 if(K4==0)
132 4 {beep();break;} //退出此循环程序
133 4 }
134 3 }
135 2 else if(K2==0)
136 2 {
137 3 beep();
138 3 for(r=0;r<N;r++)
139 3 {
140 4 motor_rev(); //电机反转
141 4 if(K4==0)
142 4 {beep();break;} //退出此循环程序
143 4 }
144 3 }
145 2 else
146 2 P1 = 0xf0;
147 2 }
148 1 }
149
150 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 209 ----
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 + -