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