📄 pcckmodbus.lst
字号:
39 //bit yunbiao,tingbiao,up000,down000,lef000,trig000;
40 unsigned char xdata T2buf[30];
41 unsigned char xdata R2buf[60];
42 unsigned char xdata RXbuf[30];
43 unsigned char xdata TXbuf[60];
44 unsigned char xdata debuf[2];
45 //unsigned char xdata dembug[3];
46 unsigned char xdata modbug[3];
47 void int0(void) interrupt 0
48 {
49 1 debuf[0]=0;
50 1 }
51 void int2(void) interrupt 2
52 {
53 1 debuf[0]=2;
54 1 }
55 void int3(void) interrupt 3
56 {
57 1 debuf[0]=3;
58 1 }
59 void int5(void) interrupt 5
60 {
61 1 debuf[0]=5;
62 1 }
63 void int6(void) interrupt 6
64 {
65 1 debuf[0]=5;
66 1 }
67 void int10(void) interrupt 10
68 {
69 1 debuf[0]=10;
70 1 }
71 void int7(void) interrupt 7
72 {
73 1 debuf[0]=7;
74 1 }
75 void int8(void) interrupt 8
76 {
C51 COMPILER V7.01 PCCKMODBUS 07/23/2004 15:55:57 PAGE 6
77 1 debuf[0]=8;
78 1 }
79 void int9(void) interrupt 9
80 {
81 1 debuf[0]=9;
82 1 }
83 /***************************/
84 /* time子程序 */
85 /***************************/
86 void timer0(void) interrupt 1 using 2
87 {
88 1 static unsigned char miaohao;
89 1 TH0=0xf1; //0x83d3
90 1 TL0=0x9c;
91 1 ++miaohao;
92 1 ++click;
93 1 if (miaohao > 8)
94 1 {
95 2 miaohao=0;
96 2 ++click3;
97 2 if (wdog==1)
98 2 {
99 3 wdog=0;
100 3 WFEED1=0xa5;
101 3 WFEED2=0x5a;
102 3 }
103 2 }
104 1 if (click > 3)
105 1 {
106 2 rsbufr=0;
107 2 }
108 1 }
109 /***************************/
110 /* 串口通讯子程序 */
111 /***************************/
112 void comm1(void) interrupt 4 using 1
113 {
114 1 static bit modf10=0;
115 1 static unsigned char modf10len=50;
116 1 if (tsbbb==1)
117 1 {
118 2 if (TI==1)
119 2 {
120 3 TI=0;
121 3 if (tsbufr<tsleng)
122 3 {
123 4 ACC=TXbuf[tsbufr];
124 4 TB8=P;
125 4 SBUF=ACC;
126 4 // SBUF=click;
127 4 // click=0;
128 4 ++tsbufr;
129 4 }
130 3 else
131 3 {
132 4 sipm=0;
133 4 tsbbb=0;
134 4 rsbufr=0;
135 4 RI=0;
136 4 ACC=SBUF;
137 4 }
138 3 }
C51 COMPILER V7.01 PCCKMODBUS 07/23/2004 15:55:57 PAGE 7
139 2 }
140 1 else
141 1 {
142 2 if (RI==1)
143 2 {
144 3 RI=0;
145 3 // click=0;
146 3 sipm=0;
147 3 if (modbjda==0)
148 3 {
149 4 if (rsbufr==0)
150 4 {
151 5 RXbuf[0]=SBUF;
152 5 if (RXbuf[0]==modadder)
153 5 {
154 6 rsbufr=1;
155 6 }
156 5 }
157 4 else if (rsbufr==1)
158 4 {
159 5 RXbuf[1]=SBUF;
160 5 if ((RXbuf[1]==1) || (RXbuf[1]==2) || (RXbuf[1]==4) || (RXbuf[1]==5))
161 5 {
162 6 modf10=0;
163 6 rsbufr=2;
164 6 }
165 5 else
166 5 {
167 6 rsbufr=0; //modf10=1;
168 6 }
169 5 }
170 4 else if (modf10==0)
171 4 {
172 5 RXbuf[rsbufr]=SBUF;
173 5 if (rsbufr>=7)
174 5 {
175 6 modbjda=1;
176 6 rlend=rsbufr;
177 6 }
178 5 else
179 5 {
180 6 ++rsbufr;
181 6 }
182 5 }
183 4 else if (rsbufr==6)
184 4 {
185 5 RXbuf[rsbufr]=SBUF;
186 5 modf10len=RXbuf[rsbufr]+8;
187 5 ++rsbufr;
188 5 if (modf10len>28)modf10len=28;
189 5 }
190 4 else
191 4 {
192 5 RXbuf[rsbufr]=SBUF;
193 5 if (rsbufr>=modf10len)
194 5 {
195 6 modbjda=1;
196 6 rlend=rsbufr;
197 6 modf10=0;
198 6 }
199 5 else
200 5 {
C51 COMPILER V7.01 PCCKMODBUS 07/23/2004 15:55:57 PAGE 8
201 6 ++rsbufr;
202 6 }
203 5 }
204 4 }
205 3 else
206 3 {
207 4 ACC=SBUF;
208 4 }
209 3 click=0; //debug+++++++++++++||||||||||||||||||||||||||||||
210 3 }
211 2 }
212 1 }
213 //===================================================
214 //====================================================================================
215 code unsigned char auchCRCHi[256] = {
216 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
217 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
218 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
219 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
220 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
221 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
222 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
223 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
224 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
225 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
226 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
227 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
228 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
229 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
230 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
231 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
232 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
233 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
234 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
235 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
236 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
237 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
238 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
239 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
240 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
241 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
242 };
243 code unsigned char auchCRCLo[256] = {
244 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
245 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
246 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
247 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
248 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
249 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
250 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
251 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
252 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
253 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
254 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
255 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
256 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
257 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
258 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
259 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
260 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
261 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
262 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
C51 COMPILER V7.01 PCCKMODBUS 07/23/2004 15:55:57 PAGE 9
263 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
264 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
265 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
266 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
267 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
268 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
269 0x43, 0x83, 0x41, 0x81, 0x80, 0x40
270 };
271 //=======================================================================
272 unsigned int CRC16(unsigned char xdata *puchMsg,unsigned char usDataLen)
273 //unsigned char *puchMsg ;/* 要进行CRC校验的消息 */
274 //unsigned short usDataLen ; /* 消息中字节数 */
275 {
276 1 unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
277 1 unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
278 1 unsigned char uIndex ; /* CRC循环中的索引 */
279 1 while (usDataLen--) /* 传输消息缓冲区 */
280 1 {
281 2 uIndex = uchCRCHi ^ *puchMsg; /* 计算CRC */
282 2 puchMsg++;
283 2 uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
284 2 uchCRCLo = auchCRCLo[uIndex];
285 2 }
286 1 return (uchCRCHi * 256 | uchCRCLo);
287 1 }
288 //=============================================================================
289 /////////=====================================================
290 void modbu001()
291 {
292 1 bit Rx12,tfbok;
293 1 unsigned int i;
294 1 unsigned char lm,lk,j,k;
295 1 unsigned long bbiitt;
296 1 if (tsbbb==0)
297 1 {
298 2 Rx12=0;
299 2 tfbok=0;
300 2 wdog=1;
301 2 if (modbjda==1)
302 2 {
303 3 led1^=1;
304 3 puc=&RXbuf[0];
305 3 i=CRC16(puc,rlend-1);
306 3 lm=i/0x100;
307 3 lk=i%0x100;
308 3 if ((RXbuf[rlend-1]==lm) && (RXbuf[rlend]==lk))
309 3 {
310 4 Rx12=1;
311 4 }
312 3 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -