📄 step.lst
字号:
C51 COMPILER V7.07 STEP 11/14/2007 10:28:44 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE STEP
OBJECT MODULE PLACED IN Step.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE Step.c INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTEXTEND
stmt level source
1 #include "Step.h"
2 #include"viic_c51.h"
3 #include"zlg7290.h"
4 //--------------------------------变量定义-------------------------------------------
5 /*sbit KEY_INT=P3^2; //将p3.2外部中断0
6 unsigned int FLAG=0; //数码管闪烁标志位
7 unsigned int FLAG1=0; //显示切换标志位 1---速度,0---坐标
8 unsigned int FLAG2=0; //电机正反转切换标志位 1---正转,0---反转
9 unsigned char KEY; //键值
10 unsigned int circle=1; //坐标单位1的步进圈数
11 int Fm=0; //加工点偏差
12 unsigned int Xe=0; //终点横坐标
13 unsigned int Ye=0; //终点纵坐标
14 unsigned int Nxy=0; //总步数
15 unsigned int Xi=0; //实时横坐标
16 unsigned int Yi=0; //实时纵坐标
17 unsigned int SpeedX=0; //X电机速度(步/秒)
18 unsigned int SpeedY=0; //Y电机速度(步/秒)
19 //unsigned int time0_tmp=0xe880; //2ms定时显示初值
20 //unsigned int time1_tmp=0; //速度控制定时初值
21 //unsigned int fosc=12; //单片机晶振(MHz)
22 unsigned char Speed[8]={0,0,0,0,0,0,0,0}; //两个4位数码管数值(速度)
23 unsigned char Place[8]={0,0,0,0,0,0,0,0}; //两个4位数码管数值(坐标)
24 unsigned char StepX1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//X步进电机正转节拍
25 unsigned char StepY1[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//Y步进电机反转节拍
26 unsigned char StepX2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//X步进电机正转节拍
27 unsigned char StepY2[]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};//Y步进电机反转节拍
28 //unsigned char Led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0x86};//数码管0—9,H,E
29 //unsigned char Led_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x79};//数码管0—9,A,E
30
31 //--------------------------------函数声明-------------------------------------------
32 //void System_init(void); //设定INT0的工作方式,供主程序调用
33 void delay(unsigned int); //延时程序
34 void delay10ms(unsigned int);
35 //void INT0_int(void); //外部中断0处理程序
36 //void time0_int(void); //定时器0中断
37 //void time1_int(void); //定时器1定时
38 //void Key_Scaning(void); //扫描键盘
39 //void dispxy(unsigned int,unsigned int,unsigned int);//数码管显示子程序
40 //void display(void); //数码管显示
41 void Key_Control(void); //键盘控制
42 void Go_line(void); //直线差补算法---前进
43 void Back_line(void); //直线差补算法---回零 */
44 //-----------------------------------------------------------------------------------
45 main()
46 {
47 1
48 1 while(1)
49 1 {
50 2 Key_Control(); //键盘控制
51 2 }
52 1 }
53
54 //-----------------------------------------------------------------------------------
55 void delay(unsigned int i)
C51 COMPILER V7.07 STEP 11/14/2007 10:28:44 PAGE 2
56 {
57 1 for(;i>0;i--);
58 1 }
59
60 void delay10ms(unsigned int i) //延时程序????10ms有问题?????
61 {
62 1 unsigned int j;
63 1 for(;i>0;i--)
64 1 for(j=0;j<1000;j++);
65 1 }
66 //------------------------------------------------------------------------------------
67 // 函数名称:Key_Control()
68 // 函数功能:键盘控制
69 //------------------------------------------------------------------------------------
70 void Key_Control(void)
71 {
72 1 unsigned char i;
73 1 while(1)
74 1 {
75 2 if(KEY_INT==0)
76 2 {
77 3 KEY=ZLG7290_GetKey();
78 3 delay(200);
79 3 if(KEY==1)
80 3 {
81 4 KEY=0; //清键值
82 4 for(i=0;i<8;i++)
83 4 {
84 5 Speed[i]=0;
85 5 }
86 4 for(i=0;i<8;i++)
87 4 {
88 5 Place[i]=0;
89 5 }
90 4 ZLG7290_SendBuf(Place,8);
91 4 delay10ms(1);
92 4 //Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
93 4 // Led2[0]=0;Led2[1]=0;Led2[2]=0;Led2[3]=0;Led2[4]=0;Led2[5]=0;Led2[6]=0;Led2[7]=0;
94 4 Go_line(); //前进
95 4 }
96 3 else if(KEY==2)
97 3 {
98 4 KEY=0; //清键值
99 4 FLAG1=0; //显示切换标志位0(显示坐标)
100 4 Back_line(); //回零
101 4 }
102 3 else if(KEY==3)
103 3 {
104 4 //FLAG1=1; //显示切换标志位1(显示速度)
105 4 Speed[0]=SpeedX%10;Speed[1]=(SpeedX%100)/10;Speed[2]=SpeedX/100;Speed[3]=10;//显示当前速度
106 4 Speed[4]=SpeedY%10;Speed[5]=(SpeedY%100)/10;Speed[6]=SpeedY/100;Speed[7]=10;
107 4 ZLG7290_SendBuf(Speed,8);
108 4 delay10ms(1);
109 4 while(1)
110 4 {
111 5 KEY=0; //清键值
112 5 FLAG=1; //数码管闪烁标志位1(第1位闪烁)
113 5 if(KEY==5)
114 5 {
115 6 KEY=0; //清键值
116 6 Speed[0]+=1;
117 6 while(Speed[0]>9)
C51 COMPILER V7.07 STEP 11/14/2007 10:28:44 PAGE 3
118 6 Speed[0]=0;
119 6 }
120 5 else if(KEY==3)
121 5 break;
122 5 }
123 4 while(1)
124 4 {
125 5 KEY=0; //清键值
126 5 FLAG=2; //数码管闪烁标志位2(第2位闪烁)
127 5 if(KEY==5)
128 5 {
129 6 KEY=0; //清键值
130 6 Speed[1]+=1;
131 6 while(Speed[1]>9)
132 6 Speed[1]=0;
133 6 }
134 5 else if(KEY==3)
135 5 break;
136 5 }
137 4 while(1)
138 4 {
139 5 KEY=0; //清键值
140 5 FLAG=3; //数码管闪烁标志位3(第3位闪烁)
141 5 if(KEY==5)
142 5 {
143 6 KEY=0; //清键值
144 6 Speed[2]+=1;
145 6 while(Speed[2]>9)
146 6 Speed[2]=0;
147 6 }
148 5 else if(KEY==3)
149 5 break;
150 5 }
151 4 while(1)
152 4 {
153 5 KEY=0; //清键值
154 5 FLAG=5; //数码管闪烁标志位5(第5位闪烁)
155 5 if(KEY==5)
156 5 {
157 6 KEY=0; //清键值
158 6 Speed[4]+=1;
159 6 while(Speed[4]>9)
160 6 Speed[4]=0;
161 6 }
162 5 else if(KEY==3)
163 5 break;
164 5 }
165 4 while(1)
166 4 {
167 5 KEY=0; //清键值
168 5 FLAG=6; //数码管闪烁标志位6(第6位闪烁)
169 5 if(KEY==5)
170 5 {
171 6 KEY=0; //清键值
172 6 Speed[5]+=1;
173 6 while(Speed[5]>9)
174 6 Speed[5]=0;
175 6 }
176 5 else if(KEY==3)
177 5 break;
178 5 }
179 4 while(1)
C51 COMPILER V7.07 STEP 11/14/2007 10:28:44 PAGE 4
180 4 {
181 5 KEY=0; //清键值
182 5 FLAG=7; //数码管闪烁标志位7(第7位闪烁)
183 5 if(KEY==5)
184 5 {
185 6 KEY=0; //清键值
186 6 Speed[6]+=1;
187 6 while(Speed[6]>9)
188 6 Speed[6]=0;
189 6 }
190 5 else if(KEY==3)
191 5 break;
192 5 }
193 4 KEY=0; //清键值
194 4 // FLAG=0; //数码管闪烁标志位0(无闪烁)
195 4 SpeedX=Speed[0]+Speed[1]*10+Speed[2]*100;//计算并存储所设速度
196 4 SpeedY=Speed[4]+Speed[5]*10+Speed[6]*100;
197 4 }
198 3 else if(KEY==4)
199 3 {
200 4 Place[0]=Xe%10;Place[1]=Xe/10;Place[2]=11;Place[3]=11;//显示当前坐标
201 4 Place[4]=Ye%10;Place[5]=Ye/10;Place[6]=11;Place[7]=11;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -