📄 转弯.lst
字号:
C51 COMPILER V7.50 转弯 09/04/2007 12:57:12 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 转弯
OBJECT MODULE PLACED IN 转弯.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 转弯.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************
2 头文件预处理:
3 **************************************************************/
4 #include<reg52.h>
5 #include <absacc.h>
6 #include <intrins.h>
7 #include<stdio.h>
8 /**************************************************************
9 数据类型宏定义:
10 **************************************************************/
11 #define uchar unsigned char
12 #define uint unsigned int
13 /**************************************************************
14 I/O端口说明:
15 **************************************************************/
16 sbit Led_Clk=P1^5; //clock port of 74HC164
17 sbit Led_Dat=P1^6; //data port of 74HC164
18 sbit Led_Cs=P1^7; //Led display controlling(using BJT's base)
19 sbit SDA=P3^4; //I2C数据线
20 sbit SCL=P3^5; //I2C时钟线
21 sbit A0=P1^0;
22 /**************************************************************
23 全局变量声明:
24 **************************************************************/
25 uchar NP1,NP2,temp2,Count;
26 uint temp,temp1,Sec;
27 const uchar motor1[8]={0x30,0x60,0xc0,0x90};
28 const uchar motor2[8]={0x03,0x06,0x0c,0x09};//{0x11,0x99,0x88,0xaa,0x22,0x66,0x44,0x55}; //八拍为一步
29 /**************************************************************
30 函数说明:
31 **************************************************************/
32 void RS232_SendData(uchar d)
33 {
34 1 SBUF=d;while(TI==0);TI=0;
35 1 }
36 /**************************************************************
37 **函数名称:Delay
38 **功能描述:延时
39 ***************************************************************
40 **调用函数:NONE
41 **参 数:NONE
42 **返 回 值:NONE
43 **************************************************************/
44 void delay(uchar t)// 每步延时的子程序
45 {
46 1 uchar i,j,k;
47 1 for (k=0;k<50;k++)
48 1 for (j=0;j<t;j++)
49 1 _nop_();
50 1 }
*** WARNING C280 IN LINE 46 OF 转弯.C: 'i': unreferenced local variable
51 /**************************************************************
52 **函数名称:Delay1
53 **功能描述:延时1ms*t子程序
54 ***************************************************************
C51 COMPILER V7.50 转弯 09/04/2007 12:57:12 PAGE 2
55 **调用函数:NONE
56 **参 数:NONE
57 **返 回 值:NONE
58 **************************************************************/
59 void delay1(uchar t)//
60 {
61 1 uchar j,k;
62 1 for (k=0;k<t;k++)
63 1 for (j=0;j<60;j++)
64 1 _nop_();
65 1 }
66
67 /**********************Delay 函数结束************************/
68
69
70
71 /**************************************************************
72 **函数名称:round_step
73 **功能描述:转弯
74 ***************************************************************
75 **调用函数:delay
76 **参 数:d,t
77 **返 回 值:NONE
78 **************************************************************/
79 void car_round_step(uchar d,uchar t) //步进电机走一步d=0 右转d=1 左转。t 越大转得越慢
80 {
81 1 uchar e;
82 1 if (d&0x01)
83 1 {
84 2 if (NP1==0)
85 2 NP1=3;
86 2 else NP1--; //NP1记录步数,全局变量
87 2 }
88 1 else
89 1 {
90 2 if (NP1==3)
91 2 NP1=0;
92 2 else
93 2 NP1++;
94 2 }
95 1 temp=motor1[NP1];
96 1
97 1 e=!d;
98 1 if (e&0x01)
99 1 {
100 2 if (NP2==0)
101 2 NP2=3;
102 2 else NP2--; //NP2记录步数,全局变量
103 2 }
104 1 else
105 1 {
106 2 if (NP2==3)
107 2 NP2=0;
108 2 else
109 2 NP2++;
110 2 }
111 1 temp1=motor2[NP2];
112 1 P2=temp|temp1;//输出到单片机的P2口
113 1 RS232_SendData(P2);//motortb[NP]);
114 1 delay(t);
115 1 }
116 /**************************************************************
C51 COMPILER V7.50 转弯 09/04/2007 12:57:12 PAGE 3
117 **函数名称:mov_step
118 **功能描述:转弯
119 ***************************************************************
120 **调用函数:delay
121 **参 数:d,t
122 **返 回 值:NONE
123 **************************************************************/
124 void car_movstep(uchar d,uchar t) //步进电机走一步d=0 前进d=1 后退。t 越大转得越慢
125 {
126 1 if (d&0x01)
127 1 {
128 2 if (NP1==0)
129 2 NP1=3;
130 2 else NP1--; //NP1记录步数,全局变量
131 2 }
132 1 else
133 1 {
134 2 if (NP1==3)
135 2 NP1=0;
136 2 else
137 2 NP1++;
138 2 }
139 1 temp=motor1[NP1];
140 1
141 1 if (d&0x01)
142 1 {
143 2 if (NP2==0)
144 2 NP2=3;
145 2 else NP2--; //NP2记录步数,全局变量
146 2 }
147 1 else
148 1 {
149 2 if (NP2==3)
150 2 NP2=0;
151 2 else
152 2 NP2++;
153 2 }
154 1 temp1=motor2[NP2];
155 1 P2=temp|temp1;//输出到单片机的P2口
156 1 RS232_SendData(P2);//motortb[NP]);
157 1 delay(t);
158 1 }
159
160
161 /**************************************************************
162 **函数名称:timer0
163 **功能描述:定时器中断服务程序
164 ***************************************************************
165 **调用函数:NONE
166 **参 数:NONE
167 **返 回 值:NONE
168 **************************************************************/
169
170 void ISR_Tmr0() interrupt 1 using 2
171 {
172 1 uchar i;
173 1 TH0=0x9e; //T0定时25ms
174 1 TL0=0x58; //0xD8F0
175 1 if(!A0)
176 1 {
177 2 }
178 1 else if(!A1)
C51 COMPILER V7.50 转弯 09/04/2007 12:57:12 PAGE 4
*** ERROR C202 IN LINE 178 OF 转弯.C: 'A1': undefined identifier
179 1 {
180 2 }
181 1 // temp2++;
182 1 // RS232_SendData(temp2);
183 1 }
184
185 /**************************************************************
186 **函数名称:timer0
187 **功能描述:定时器中断服务程序
188 ***************************************************************
189 **调用函数:NONE
190 **参 数:NONE
191 **返 回 值:NONE
192 **************************************************************/
193
194 void ISR_Tmr1() interrupt 1 using 3
195 {
196 1 uchar i;
197 1 TH0=0x9e; //T0定时25ms
198 1 TL0=0x58; //0xD8F0
199 1 if(Count==20)
200 1 {
201 2 Count=0;
202 2 Sec++;
203 2 //
204 2 }
205 1 else
206 1 Count++;
207 1 // temp2++;
208 1 // RS232_SendData(temp2);
209 1 }
210
211 /**************************************************************
212 **函数名称:zd_int0()
213 **功能描述:int0中断服务子程序
214 ***************************************************************
215 **调用函数:NONE
216 **参 数:NONE
217 **返 回 值:NONE
218 **************************************************************/
219
220 void zd_int0() interrupt 0 using 2
221 {
222 1 uchar i;
223 1 for(i=0;i<10;i++)
224 1 car_round_step(0,100);
225 1 RS232_SendData(P2);
226 1
227 1 }
228
229
230
231 /**************************************************************
232 **函数名称:main()
233 **************************************************************/
234 void main()
235 { uchar i,j,k,l;
236 1 temp2=0;
237 1 Sec=Count=0;
238 1 init: TMOD=0x11; //设置定时器0,工作方式1,
239 1 TH0=0x9e; //T0定时25ms
C51 COMPILER V7.50 转弯 09/04/2007 12:57:12 PAGE 5
240 1 TL0=0x58; //0xD8F0
241 1 // TH1=0xFE; //T1定时500us
242 1 // TL1=0x0C; //理论值为FE0CH
243 1 ET0=1; //允许定时器0中断
244 1 // ET1=1; //允许定时器1中断
245 1 TR0=1; //关定时器0
246 1 // TR1=1; //关定时器1
247 1 // EA=1; //允许CPU总中断
248 1
249 1 // IE=0x1b; //ET0=ET1=EX0=ES=1;EX1=0;T0,T1,INT0,COM中断允许INT1不允许
250 1 SCON = 0x50; //串口方式1,允许接收
251 1 RCAP2H=0xff;RCAP2L=0x64;T2CON=0x34;//波特率2400 bps
252 1
253 1 EA=1;
254 1 // NP=3;
255 1 while(1)
256 1 {
257 2 for(i=0;i<150;i++)
258 2 for(k=0;k<10;k++)
259 2 {
260 3 car_movstep(0,10);
261 3 // RS232_SendData(temp2);
262 3 }
263 2 for(j=0;j<150;j++)
264 2 car_round_step(0,10);
265 2
266 2 }
267 1 }
C51 COMPILATION COMPLETE. 1 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -