📄 mainokuse.lst
字号:
C51 COMPILER V7.06 MAINOKUSE 09/01/2006 15:13:01 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAINOKUSE
OBJECT MODULE PLACED IN MAINOKUSE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAINOKUSE.c LARGE OMF2 OPTIMIZE(SIZE) BROWSE DEBUG
stmt level source
1 #include "reg52.h"
2 #include "intrins.h"
3 #include "math.h"
4 #include <absacc.h>
5 #include "VIIC_C51.h"
6 #include "ZLG7290.h"
7
8 //端口定义
9 sbit KEY_INT=P3^2;
10 sbit PA1=P2^0;
11 sbit PB1=P2^1;
12 sbit PC1=P2^2;
13 sbit PA2=P2^4;
14 sbit PB2=P2^5;
15 sbit PC2=P2^6;
16
17 //For Tlc2543
18 sbit CLK = P0^0;
19 sbit DIN = P0^1;
20 sbit DOUT = P0^2;
21 sbit CS = P0^3;
22
23 #define Pi 3.141593
24 //#define step (330./1500) //单步距离,mm
25 //#define step (0.21375) //单步距离,mm
26 #define step (119/300.) //单步距离,mm
27 #define pull 0
28 #define push 1
29 #define c 1100. //两滑轮间距,mm
30 #define dx 158. //滑轮到计数点原点投影距离,mm
31 #define dy 158.
32 #define minline 2. //最短直线分段
33 #define motordelay 1 //电机步间延时
34 #define gate 0x3f //传感器门槛
35 //#define gate 0x0f //传感器门槛 //I add
36 #define searth 35 //寻迹步数,35=1cm
37 //#define searthstep 10 //寻迹最小步子,mm
38
39 //#define trace_ru 1 //向右上寻迹
40 //#define trace_rd 2 //向右下寻迹
41 //#define trace_lu 3 //向左上寻迹
42 //#define trace_ld 4 //向左下寻迹
43
44 extern unsigned char ZLG7290_GetKey();
45 void Display(unsigned char *sd); //显示程序
46 void DelayX10ms(int count); //Delay time=count*10ms
47 void Delay(unsigned char no);
48 //void RunA(long num,bit dir); //输入转动的步数、方向,完成电机1转动(相对3相电机)
49 //void RunB(long num,bit dir); //输入转动的步数、方向,完成电机1转动(相对3相电机)
50 //float Pointab_A(float x,float y); //坐标变换xy-a
51 //float Pointab_B(float x,float y); //坐标变换xy-b
52 //float Pointxy_X(float a,float b); //坐标变换xy-a
53 //float Pointxy_Y(float a,float b); //坐标变换xy-b
54 //void Circle(float x,float y,float r); //画圆程序
55 //void Stepto(float x, float y);
C51 COMPILER V7.06 MAINOKUSE 09/01/2006 15:13:01 PAGE 2
56 //void Lineto(float x,float y);
57 //unsigned int ad549(void);
58 //unsigned int TraceA(void);
59 //unsigned int TraceB(void);
60 //void Mypath (void);
61 //void Go_ru(void); //右上
62 //void Go_lu(void); //左上
63 //void Go_rd(void); //右下
64 //void Go_ld(void); //左下
65 //unsigned int ad1(void);
66 //int Disp();
67
68 //int flag_trace;//,Ticks; //0:连续; 1:断开
69
70 //全局变量
71 unsigned char key;
72 unsigned char send[8]={00,00,00,00,00,00,00,00};//定义发送缓冲区 0~3--y 4~6--x 7--sign
73 float alast,blast,xlast,ylast,xkey,ykey;
74 unsigned char disp_buf[8]={0,0,0,0,0,0,0,0};
75 float sita,ad,xo,yo,kk,searthstep,xolast,yolast,Ticks,Traceflag,xbegin,ybegin;
76 int ll; //for trace
77
78 void main()
79 {
80 1
81 1 sita=45;
82 1 searthstep=5;
83 1 Ticks=0;
84 1
85 1 //xo=xlast;
86 1 //yo=ylast;
87 1
88 1
89 1 //int test;
90 1 //电机a初始化
91 1 PA1=0;
92 1 PB1=1;
93 1 PC1=1;
94 1 //random();
95 1 //for(test=0;test<9;test++);
96 1
97 1 //电机b初始化
98 1 PA2=0;
99 1 PB2=1;
100 1 PC2=1;
101 1 Ticks=0;
102 1
103 1 while (1)
104 1 {
105 2 static int i;
106 2 while(KEY_INT);
107 2 key=ZLG7290_GetKey();
108 2 if(key==1)i++;
109 2 if(key==2)i--;
110 2 send[0]=i%10;
111 2 send[1]=i/10%10;
112 2 send[2]=i/100%10;
113 2 send[3]=i/1000%10;
114 2 send[7]=key;
115 2 Display(send);
116 2 }
117 1
C51 COMPILER V7.06 MAINOKUSE 09/01/2006 15:13:01 PAGE 3
118 1 // Circle(400,500,250);
119 1
120 1 /* for(;;)
121 1 {
122 1 P0=0;
123 1 P1=0;
124 1 P2=0;
125 1 P3=0;
126 1 _nop_();
127 1 P0=0xff;
128 1 P1=0xff;
129 1 P2=0xff;
130 1 P3=0xff;
131 1 _nop_();
132 1
133 1 }
134 1 */
135 1 //RunA(3000,1);
136 1 //for(;;);
137 1 //RunB(2500,0);
138 1 //DelayX10ms(1000);
139 1 //RunA(1500,pull);
140 1 //DelayX10ms(1000);
141 1 //RunB(1500,pull);
142 1 //Delay(2);
143 1 //当前点,以la、lb步数为坐标记,拉减放加
144 1 /*
145 1 while (1)
146 1 {
147 1 while(KEY_INT);
148 1 key=ZLG7290_GetKey();
149 1 ykey=send[0]+send[1]*10+send[2]*100+send[3]*1000;
150 1 xkey=send[4]+send[5]*10+send[6]*100;
151 1 switch(key)
152 1 {
153 1 case 1 :send[0]++; //ymm位
154 1 if(send[0]==10)
155 1 {
156 1 send[0]=00;
157 1 }
158 1 break;
159 1 case 2 :send[1]++;//ycm位
160 1 if(send[1]==10)
161 1 {
162 1 send[1]=00;
163 1 }
164 1 break;
165 1 case 3 :send[2]++;//ydm位
166 1 if(send[2]==10)
167 1 {
168 1 send[2]=00;
169 1 }
170 1 break;
171 1 case 4 :send[3]++;//ym位
172 1 if(send[3]==2)
173 1 {
174 1 send[3]=00;
175 1 }break;
176 1 case 5 :send[4]++;//xmm位
177 1 if(send[4]==10)
178 1 {
179 1 send[4]=00;
C51 COMPILER V7.06 MAINOKUSE 09/01/2006 15:13:01 PAGE 4
180 1 }
181 1 break;
182 1 case 6 :send[5]++;//xcm位
183 1 if(send[5]==10)
184 1 {
185 1 send[5]=00;
186 1 }
187 1 break;
188 1 case 7 :send[6]++;//xdm位
189 1 if(send[6]==8)
190 1 {
191 1 send[6]=00;
192 1 }
193 1 break;
194 1 case 8 :send[7]=1;Lineto(xkey,ykey);send[7]=0; break;
195 1 case 9 : //输入当前坐标
196 1 xlast=xkey;
197 1 ylast=ykey;
198 1 alast=Pointab_A(xlast,ylast);
199 1 blast=Pointab_B(xlast,ylast);
200 1 break;
201 1 case 10 :RunB(10,pull); break;
202 1 case 11 :RunB(10,push); break;
203 1 case 12 :RunA(10,pull); break;
204 1 case 13 :RunA(10,push); break;
205 1 case 14 :send[7]=4;
206 1 Ticks=0;
207 1 xo=0;
208 1 yo=0;
209 1 searthstep=5;
210 1 Traceflag=0;
211 1 xolast=xkey;
212 1 yolast=ykey;
213 1 xbegin=xkey;
214 1 ybegin=ybegin;
215 1
216 1 if(send[0]%2==0) TraceB();
217 1 else TraceA();
218 1 send[7]=0;break;
219 1 case 15 :send[7]=3;Mypath();send[7]=0;break;
220 1 case 16 :send[7]=2;Circle(xkey,ykey,250);send[7]=0;break;
221 1 }
222 1 Delay(100);
223 1 Display(send);
224 1 //if (key!=9) continue;//等待按键,输入坐标
225 1 //else break;
226 1 }
227 1 ylast=send[0]+send[1]*10+send[2]*100+send[3]*1000;
228 1 xlast=send[4]+send[5]*10+send[6]*100;
229 1 //*/
230 1
231 1 //xlast=400;
232 1 //ylast=500;
233 1 //alast=Pointab_A(xlast,ylast);
234 1 //blast=Pointab_B(xlast,ylast);
235 1
236 1 //Lineto(0,0);
237 1 Display(send);
238 1 //DelayX10ms(1000);
239 1 //RunA(4000,1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -