📄 start.lst
字号:
C51 COMPILER V8.12 START 05/26/2009 09:07:39 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE START
OBJECT MODULE PLACED IN start.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE start.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<start.h>
3 #include<key.h>
4
5 void delay500us(float count) //100us*count
6 {
7 1 unsigned int i,j;
8 1 for(j=0;j<count;j++)
9 1 for(i=0;i<17;i++)
10 1 ;
11 1 }
12
13 ////////////////////////刹车、反转、正转都可以写成函数
14
15 void shache(void)
16 {
17 1 P2_2=1;
18 1 P2_0=1;
19 1 P2_5=1;
20 1 P2_4=1; //两个电机刹停
21 1 P2_2=1;
22 1 P2_0=1;
23 1 P2_5=1;
24 1 P2_4=1;
25 1 }
26 void zheng(float a)
27 {
28 1 float z=a;
29 1 P2_2=1;
30 1 P2_0=0;
31 1 P2_5=1;
32 1 P2_4=0;
33 1 delay500us(z); //正转
34 1 P2_2=0;
35 1 P2_0=0;
36 1 P2_5=0;
37 1 P2_4=0;
38 1 delay500us(z);
39 1 }
40 void fan(float b)
41 {
42 1 float z=b;
43 1 P2_2=0;
44 1 P2_0=1;
45 1 P2_5=0;
46 1 P2_4=1;
47 1 delay500us(z);
48 1 P2_2=0;
49 1 P2_0=0;
50 1 P2_5=0;
51 1 P2_4=0;
52 1 delay500us(z);
53 1 }
54 void maichong0(unsigned int x,unsigned int y,float z) //x和y分别是脉冲的周期个数,z是脉冲的周期
55 {
C51 COMPILER V8.12 START 05/26/2009 09:07:39 PAGE 2
56 1
57 1 float a;
58 1 z=2000*z;//计算count
59 1 a=z; // 500us*count
60 1 P2_1=1; //两个使能端有效;
61 1 P2_3=1;
62 1 if(zhengbujin==1||fanbujin==1)
63 1 {
64 2 if(zhengbujin==1) //先正传后反转
65 2 {
66 3 unsigned int j;
67 3 for(j=0;j<x;j++) //正传
68 3 {
69 4 zheng(a);
70 4 }
71 3 shache();
72 3 for(j=0;j<y;j++) //反转
73 3 {
74 4 fan(a);
75 4 }
76 3
77 3 }
78 2
79 2 else if(fanbujin==1) //先反后正
80 2 {
81 3 unsigned int j;
82 3 for(j=0;j<y;j++) //反传
83 3 {
84 4 fan(a);
85 4 }
86 3 shache();
87 3 for(j=0;j<x;j++) //正转
88 3 {
89 4 zheng(a);
90 4 }
91 3
92 3 }
93 2 }
94 1 else if(zhengjuli==1||fanjuli==1)
95 1 {
96 2
97 2 if(zhengjuli==1) //先正传后反转
98 2 {
99 3 unsigned int j;
100 3 for(j=0;j<x;j++) //正传
101 3 {
102 4 zheng(a);
103 4 }
104 3 shache();
105 3 for(j=0;j<y;j++) //反转
106 3 {
107 4 fan(a);
108 4
109 4 }
110 3 }
111 2
112 2 else if(fanjuli==1)//先反后正
113 2 {
114 3 unsigned int j;
115 3 for(j=0;j<y;j++) //反传
116 3 {
117 4 fan(a);
C51 COMPILER V8.12 START 05/26/2009 09:07:39 PAGE 3
118 4 }
119 3 shache();
120 3 for(j=0;j<x;j++) //正转
121 3 {
122 4 zheng(a);
123 4 }
124 3 }
125 2 }
126 1 }
127
128 void startset(void)
129 {
130 1 float sudu;
131 1 switch(csudu)
132 1 {
133 2 case 1: sudu=1.0;break;
134 2 case 2: sudu=2.0;break;
135 2 case 3: sudu=3.0;break;
136 2 case 4: sudu=4.0;break;
137 2 case 5: sudu=5.0;break;
138 2 case 6: sudu=6.0;break;
139 2 case 7: sudu=7.0;break;
140 2 case 8: sudu=8.0;break;
141 2 case 9: sudu=9.0;break;
142 2 default:break;
143 2 }
144 1
145 1
146 1 if(zhengbujin==1||fanbujin==1)
147 1 {
148 2
149 2 sudu=0.45/(sudu*20);//求得高电平低电平的时间
150 2 maichong0(czhengbujin,cfanbujin,sudu);
151 2 }
152 1
153 1 else if(zhengjuli==1 || fanjuli==1)
154 1 {
155 2 unsigned int czhengjuli0=czhengjuli*10/0.45; //把距离转化成步数
156 2 unsigned int cfanjuli0=cfanjuli*10/0.45; //把距离转化成步数,一步就是一个周期的脉冲
157 2 sudu=0.45/(sudu*20);//求得高电平低电平的时间
158 2 maichong0(czhengjuli0,cfanjuli0,sudu) ;
159 2 }
160 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 896 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 36
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 + -