📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 06/25/2007 11:30:50 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include<Waking_machine.h>
3 #include<math.h>
4
5 extern void initial(void);
6 extern FuncRotate(bit BClockWise,uint step,int *PRegAngle);
7 extern void send(uchar *temp,uint j);
8 extern void delay(uint k);
9
10 uint delaycount = 20;
11 char XPulse=0, YPulse =0; //记录上一个100ms中X.Y方向的脉冲值
12 char XPulseTemp=0,YPulseTemp=0; //累加计数脉冲值
13
14 uchar rcvdata=0;
15 uchar debugtime=0;
16 uchar workmode=2;
17
18 bit EvRcv=FAULT; //接收中断(串口)标志位
19 bit EvTimer=FAULT; //定时时间满标志位
20
21 void main(void)
22 {
23 1 int RegAngle=0,RegNewAngle=0,temp=0;
24 1 int Xtmp=0,Ytmp=0;
25 1 int *Angle;
26 1 Angle=&RegAngle;
27 1
28 1 initial(); //初始化
29 1
30 1
31 1 CP=VALID; //步进脉冲信号输出有效,低电平有效
32 1 LampNormally=FAULT; //工作状态正常指示灯
33 1 PinRotIndicator=FAULT; //为1转动操作正在进行 ,转动指示灯
34 1 LampDebug=FAULT; //调试控制指示灯
35 1 LampError=FAULT; //致命错误指示灯
36 1 LampFlood=FAULT; //溢出指示灯
37 1 LampComm=FAULT; //通信指示灯
38 1
39 1 OPTO=VALID; //总控制端
40 1 OutFree=VALID; //脱机电平信号输出端
41 1
42 1 delay(2);
43 1
44 1 while(1)
45 1 {
46 2 while(InFree==VALID)
47 2 {
48 3 TR0=0; //关定时器0
49 3 OutFree=INVALID;
50 3 while(ClockWiseRot==VALID) //按钮控制顺时针转动
51 3 {
52 4 OutFree=VALID;
53 4 FuncRotate(ConstClockWise,1,Angle);
54 4 delay(500);
55 4 }
C51 COMPILER V7.06 MAIN 06/25/2007 11:30:50 PAGE 2
56 3 while(AntiClockRot==VALID)
57 3 {
58 4 OutFree=VALID;
59 4 FuncRotate(ConstAntiClock,1,Angle);
60 4 delay(500);
61 4 }
62 3 TR0=1;
63 3 EvTimer=FAULT;
64 3 }
65 2
66 2 OutFree=VALID;
67 2 if(EvRcv)
68 2 {
69 3 delaycount=rcvdata&0x1f;
70 3 workmode=(rcvdata&0xe0)/32;
71 3 EvRcv=FAULT;
72 3 }
73 2
74 2 if(EvTimer)
75 2 {
76 3 ++debugtime;
77 3 if(debugtime==5)
78 3 {
79 4 LampNormally=TRUE;
80 4 }
81 3 else if(debugtime==10)
82 3 {
83 4 LampNormally=FAULT;
84 4 debugtime=0;
85 4 }
86 3
87 3 RegNewAngle=XPulse*XPulse+ YPulse*YPulse ;
88 3 RegNewAngle=(uint)sqrt((float)RegNewAngle);
89 3
90 3 temp=RegNewAngle-RegAngle;
91 3 if( temp>HALFMAXSTEPS)
92 3 {
93 4 temp=temp-HALFMAXSTEPS;
94 4 }
95 3 else if(temp<-HALFMAXSTEPS)
96 3 {
97 4 temp=temp+HALFMAXSTEPS;
98 4 }
99 3 if(temp>0)
100 3 {
101 4 FuncRotate(ConstAntiClock,temp,Angle);
102 4 }
103 3 if(temp<0)
104 3 {
105 4 FuncRotate(ConstAntiClock,-temp,Angle);
106 4 }
107 3
108 3 if(workmode==1)
109 3 {
110 4 send((uchar*)&RegAngle,2);
111 4 }
112 3 else if (workmode==2)
113 3 {
114 4 send((uchar*)&RegAngle,2);
115 4 send((uchar*)&XPulse,4);
116 4 send((uchar*)&YPulse,4);
117 4 }
C51 COMPILER V7.06 MAIN 06/25/2007 11:30:50 PAGE 3
118 3
119 3 EvTimer=FAULT;
120 3 }
121 2 }
122 1 }
123
124
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 433 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 13
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -