📄 uart.lst
字号:
C51 COMPILER V7.08 UART 04/10/2005 22:25:31 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND
line level source
1 ////WorkState(F:充电,C:放电,E:无操作,N:无电池)
2 //将缓冲池中的数据取走,调整缓冲池的数据个数、头指针、尾指针
3 #include "uart.h"
4 unsigned char DoWithCommand(void)
5 {
6 1 unsigned char R_command=0,reply=0,i=0 ;
7 1 Current=0x05DC; //1.5a
*** ERROR C202 IN LINE 7 OF UART.C: 'Current': undefined identifier
8 1 Voltage=0x41A0; //16.8v
*** ERROR C202 IN LINE 8 OF UART.C: 'Voltage': undefined identifier
9 1 TimeRemain=0x0040; //64min
*** ERROR C202 IN LINE 9 OF UART.C: 'TimeRemain': undefined identifier
10 1 Edition=1;
*** ERROR C202 IN LINE 10 OF UART.C: 'Edition': undefined identifier
11 1 RStepNo=1;
*** ERROR C202 IN LINE 11 OF UART.C: 'RStepNo': undefined identifier
12 1 R_command=RData[(Head+3)%RBUFSIZE]; //命令代码
*** ERROR C202 IN LINE 12 OF UART.C: 'Head': undefined identifier
13 1
14 1 switch (R_command)
15 1 {
16 2 case CONNECT: //A:连接
*** ERROR C202 IN LINE 16 OF UART.C: 'CONNECT': undefined identifier
17 2 SData[0]=14;
*** ERROR C202 IN LINE 17 OF UART.C: 'SData': undefined identifier
18 2 SData[1]=ADDRESS;
*** ERROR C202 IN LINE 18 OF UART.C: 'SData': undefined identifier
19 2 SData[2]=R_command;
*** ERROR C202 IN LINE 19 OF UART.C: 'SData': undefined identifier
20 2 SData[3]=WorkType;
*** ERROR C202 IN LINE 20 OF UART.C: 'SData': undefined identifier
21 2 SData[4]=Edition;
*** ERROR C202 IN LINE 21 OF UART.C: 'SData': undefined identifier
22 2 SData[5]=WorkState; //(&RunStep[RStepNo])->action;
*** ERROR C202 IN LINE 22 OF UART.C: 'SData': undefined identifier
23 2 SData[6]=RStepNo;
*** ERROR C202 IN LINE 23 OF UART.C: 'SData': undefined identifier
24 2 SData[7]=Current%256;
*** ERROR C202 IN LINE 24 OF UART.C: 'SData': undefined identifier
25 2 SData[8]=Current>>8;
*** ERROR C202 IN LINE 25 OF UART.C: 'SData': undefined identifier
26 2 SData[9]=Voltage%256;
*** ERROR C202 IN LINE 26 OF UART.C: 'SData': undefined identifier
27 2 SData[10]=Voltage>>8;
*** ERROR C202 IN LINE 27 OF UART.C: 'SData': undefined identifier
28 2 SData[11]=VolumeRatio;
*** ERROR C202 IN LINE 28 OF UART.C: 'SData': undefined identifier
29 2 SData[12]=TimeRemain%256;
*** ERROR C202 IN LINE 29 OF UART.C: 'SData': undefined identifier
30 2 SData[13]=TimeRemain>>8;
*** ERROR C202 IN LINE 30 OF UART.C: 'SData': undefined identifier
31 2 SData[14]=OutCheckSum();
*** ERROR C202 IN LINE 31 OF UART.C: 'SData': undefined identifier
32 2 reply=1;
33 2 break;
C51 COMPILER V7.08 UART 04/10/2005 22:25:31 PAGE 2
34 2
35 2 case ACONTROL: // 'F'传送动作控制代码
*** ERROR C202 IN LINE 35 OF UART.C: 'ACONTROL': undefined identifier
36 2 if (RData[(Head+4)%RBUFSIZE]=='A')
*** ERROR C202 IN LINE 36 OF UART.C: 'Head': undefined identifier
37 2 {
38 3 (&RunStep[0])->action=RData[(Head+6)%RBUFSIZE];
*** ERROR C202 IN LINE 38 OF UART.C: 'RunStep': undefined identifier
39 3 (&RunStep[0])->ref_exe=RData[(Head+7)%RBUFSIZE]+RData[(Head+8)%RBUFSIZE]*256;
*** ERROR C202 IN LINE 39 OF UART.C: 'RunStep': undefined identifier
40 3 (&RunStep[0])->ref_stp=RData[(Head+9)%RBUFSIZE]+RData[(Head+10)%RBUFSIZE]*256;
*** ERROR C202 IN LINE 40 OF UART.C: 'RunStep': undefined identifier
41 3 TStepNo=1;
*** ERROR C202 IN LINE 41 OF UART.C: 'TStepNo': undefined identifier
42 3 }
43 2 else if(RData[(Head+4)%RBUFSIZE]=='B')
*** ERROR C202 IN LINE 43 OF UART.C: 'Head': undefined identifier
44 2 {
45 3 (&RunStep[TStepNo])->action=RData[(Head+6)%RBUFSIZE];
*** ERROR C202 IN LINE 45 OF UART.C: 'TStepNo': undefined identifier
46 3 (&RunStep[TStepNo])->ref_exe=RData[(Head+7)%RBUFSIZE]+RData[(Head+8)%RBUFSIZE]*256;
*** ERROR C202 IN LINE 46 OF UART.C: 'TStepNo': undefined identifier
47 3 (&RunStep[TStepNo])->ref_stp=RData[(Head+9)%RBUFSIZE]+RData[(Head+10)%RBUFSIZE]*256;
*** ERROR C202 IN LINE 47 OF UART.C: 'TStepNo': undefined identifier
48 3 TStepNo++;
*** ERROR C202 IN LINE 48 OF UART.C: 'TStepNo': undefined identifier
49 3 }
50 2 else
51 2 {
52 3 //command length + address +command type[F传送动作控制代码]+
53 3 //command data[命令状态(A:第一条命令;B:后续命令;J:跳转指令)+序号 +
54 3 //动作代码CONTROL type [E] +跳转到指定的序号+循环的次数] +chechsum
55 3 if(RData[(Head+4)%RBUFSIZE]=='J')
*** ERROR C202 IN LINE 55 OF UART.C: 'Head': undefined identifier
56 3 {
57 4 (&RunStep[TStepNo])->action=RData[(Head+6)%RBUFSIZE];
*** ERROR C202 IN LINE 57 OF UART.C: 'TStepNo': undefined identifier
58 4 (&RunStep[TStepNo])->ref_exe=RData[(Head+7)%RBUFSIZE];
*** ERROR C202 IN LINE 58 OF UART.C: 'TStepNo': undefined identifier
59 4 (&RunStep[TStepNo])->ref_stp=RData[(Head+8)%RBUFSIZE];
*** ERROR C202 IN LINE 59 OF UART.C: 'TStepNo': undefined identifier
60 4 TStepNo++;
*** ERROR C202 IN LINE 60 OF UART.C: 'TStepNo': undefined identifier
61 4 }
62 3 }
63 2 SData[0]=5;
*** ERROR C202 IN LINE 63 OF UART.C: 'SData': undefined identifier
64 2 SData[1]=ADDRESS;
*** ERROR C202 IN LINE 64 OF UART.C: 'SData': undefined identifier
65 2 SData[2]=R_command;
*** ERROR C202 IN LINE 65 OF UART.C: 'SData': undefined identifier
66 2 SData[3]='O';
*** ERROR C202 IN LINE 66 OF UART.C: 'SData': undefined identifier
67 2 SData[4]='K';
*** ERROR C202 IN LINE 67 OF UART.C: 'SData': undefined identifier
68 2 SData[5]=SData[1]+SData[2]+SData[3]+SData[4];
*** ERROR C202 IN LINE 68 OF UART.C: 'SData': undefined identifier
69 2 reply=2;
70 2 break;
71 2
72 2 case LSAMPLE: //'S':采样数据
*** ERROR C202 IN LINE 72 OF UART.C: 'LSAMPLE': undefined identifier
C51 COMPILER V7.08 UART 04/10/2005 22:25:31 PAGE 3
73 2 SData[0]=12;
*** ERROR C202 IN LINE 73 OF UART.C: 'SData': undefined identifier
74 2 SData[1]=ADDRESS;
*** ERROR C202 IN LINE 74 OF UART.C: 'SData': undefined identifier
75 2 SData[2]=R_command;
*** ERROR C202 IN LINE 75 OF UART.C: 'SData': undefined identifier
76 2 SData[3]=WorkState; //(&RunStep[RStepNo])->action;
*** ERROR C202 IN LINE 76 OF UART.C: 'SData': undefined identifier
77 2 SData[4]=RStepNo;
*** ERROR C202 IN LINE 77 OF UART.C: 'SData': undefined identifier
78 2 SData[5]=Current%256;
*** ERROR C202 IN LINE 78 OF UART.C: 'SData': undefined identifier
79 2 SData[6]=Current>>8;
*** ERROR C202 IN LINE 79 OF UART.C: 'SData': undefined identifier
80 2 SData[7]=Voltage%256;
*** ERROR C202 IN LINE 80 OF UART.C: 'SData': undefined identifier
81 2 SData[8]=Voltage>>8;
*** ERROR C202 IN LINE 81 OF UART.C: 'SData': undefined identifier
82 2 SData[9]=VolumeRatio;
*** ERROR C202 IN LINE 82 OF UART.C: 'SData': undefined identifier
83 2 SData[10]=TimeRemain%256;
*** ERROR C202 IN LINE 83 OF UART.C: 'SData': undefined identifier
84 2 SData[11]=TimeRemain>>8;
*** ERROR C202 IN LINE 84 OF UART.C: 'SData': undefined identifier
85 2 SData[12]=OutCheckSum();
*** ERROR C202 IN LINE 85 OF UART.C: 'SData': undefined identifier
86 2 reply=3;
87 2 break;
88 2
89 2 //command length +address +command type[G] +command data["on" or "off"] (1 B) +chechsum
90 2
91 2 case LCONTROL: //'L':通道控制
*** ERROR C202 IN LINE 91 OF UART.C: 'LCONTROL': undefined identifier
92 2 if(RData[Head+4]==1)
*** ERROR C202 IN LINE 92 OF UART.C: 'Head': undefined identifier
93 2 Action_Control=1;
*** ERROR C202 IN LINE 93 OF UART.C: 'Action_Control': undefined identifier
94 2 else
95 2 Action_Control=0;
*** ERROR C202 IN LINE 95 OF UART.C: 'Action_Control': undefined identifier
96 2 SData[0]=5;
*** ERROR C202 IN LINE 96 OF UART.C: 'SData': undefined identifier
97 2 SData[1]=ADDRESS;
*** ERROR C202 IN LINE 97 OF UART.C: 'SData': undefined identifier
98 2 SData[2]=R_command;
*** ERROR C202 IN LINE 98 OF UART.C: 'SData': undefined identifier
99 2 SData[3]='O';
*** ERROR C202 IN LINE 99 OF UART.C: 'SData': undefined identifier
100 2 SData[4]='K';
*** ERROR C202 IN LINE 100 OF UART.C: 'SData': undefined identifier
101 2 SData[5]=SData[1]+SData[2]+SData[3]+SData[4];
*** ERROR C202 IN LINE 101 OF UART.C: 'SData': undefined identifier
102 2 reply=4;
103 2 break;
104 2
105 2 //以上情况为同种类型的应答
106 2 case HDATA: //'H': 历史操作数据
*** ERROR C202 IN LINE 106 OF UART.C: 'HDATA': undefined identifier
107 2 ReadFlash();//
108 2 SData[0]=13;
109 2 SData[1]=ADDRESS;
110 2 SData[2]=R_command;
C51 COMPILER V7.08 UART 04/10/2005 22:25:31 PAGE 4
111 2 SData[3]=WorkState; //(&RunStep[RStepNo])->action;
112 2 SData[4]=RStepNo;
113 2 SData[5]=Current%256;
114 2 SData[6]=Current>>8;
115 2 SData[7]=Voltage%256;
116 2 SData[8]=Voltage>>8;
117 2 SData[9]=VolumeRatio;
118 2 SData[10]=TimeRemain%256;
119 2 SData[11]=TimeRemain>>8;
120 2 SData[12]= 0x00;//01表示还有后续的数据;00表示无后续数据 及所有数据传送完毕
121 2 SData[13]=OutCheckSum();
122 2 reply=5;
123 2 break;
124 2
125 2 case ROMREAD: //'R':读,
126 2 //SM_Receive (0x16, RData[(Head+4)%RBUFSIZE],RData[(Head+5)%RBUFSIZE]+1) ;
127 2 SData[0]=2+RData[(Head+5)%RBUFSIZE];
128 2 SData[1]=ADDRESS;
129 2 SData[2]=R_command;
130 2 //添加相应的代码,从EEPROM中读出数据,并填写在ReplayMessage从3开始的单元中
131 2 for(i=0;i<RData[(Head+5)%RBUFSIZE];i++)
132 2 SData[3+i]=RECVCHARS[i];
133 2 SData[3+i]=OutCheckSum();
134 2 reply=6;
135 2 break;
136 2
137 2 case ROMWRITE: //'W':写
138 2 //添加相应的代码,将要写入的数据写入EEPROM中
139 2 //SM_Send (0x16, RData[(Head+4)%RBUFSIZE], RData[(Head+5)%RBUFSIZE]+1) ;
140 2 SData[0]=5;
141 2 SData[1]=ADDRESS;
142 2 SData[2]=R_command;
143 2 SData[3]='O';
144 2 SData[4]='K';
145 2 SData[5]=SData[1]+SData[2]+SData[3]+SData[4];
146 2 reply=7;
147 2 break;
148 2
149 2 default:
150 2 break;
151 2 }
152 1 if(reply>=1 &&reply<=7 )
153 1 {
154 2
155 2 //DataSended=0;
156 2 SBUF=SData[0];
157 2 DataSended=1;//表示当前已传送字节位置
158 2
159 2 }
160 1 ES0=0;
161 1 //DataNo=DataNo-(RData[(Head+1)%RBUFSIZE]+1);
162 1 //Head=(Head+RData[(Head+1)%RBUFSIZE]+2)%RBUFSIZE ;
163 1 DataNo=0;
164 1 Head=0;
165 1 Pos=0;
166 1 ES0=1;
167 1 return reply;
168 1 }
169
170
171
172 /********************************************************************************/
C51 COMPILER V7.08 UART 04/10/2005 22:25:31 PAGE 5
173
174
175
176 //在缓冲池中检验,是否有自己的数据。如果检查到别人的数据要清除。如果事自己的数据且正确就返回一个为1的值
177 //若校验错误返回2;
178
179 unsigned char RBufJudge()
180 {
181 1 unsigned char my_message=0;
182 1 int Rcurrentp=0,temp_no,check_sum,tempacc=0;
183 1 unsigned char temp_pos=0;
184 1
185 1 temp_no =DataNo;//缓冲数据个数
186 1 temp_pos=Head;
187 1
188 1 if (temp_no >2)
189 1 {
190 2 if(!(RData[(temp_pos)%RBUFSIZE]==0xff && RData[(temp_pos+1)%RBUFSIZE]!=0xff))
191 2 {
192 3 temp_no--;
193 3 temp_pos=(++temp_pos)%RBUFSIZE ;
194 3 }
195 2 else
196 2 {
197 3 //TR2 =1; //开定时器2,启动超时检测
198 3 if(RData[(temp_pos+2)%RBUFSIZE]==ADDRESS)
199 3 {
200 4 TestVar=RData[(temp_pos)%RBUFSIZE];
201 4 TestVar1=RData[(temp_pos+1)%RBUFSIZE];
202 4 TestVar2=DataNo;
203 4 TestVar3=Pos;
204 4 if ((Pos+RBUFSIZE-temp_pos)%RBUFSIZE<RData[(temp_pos+1)%RBUFSIZE]+2) //若当前数据‘个数小于指定长
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -