📄 hand_serial_all.lst
字号:
199 2 }
200 1 ES0=1;
201 1 }
202
203 void putstring_com_0(BYTE *c)
204 {
205 1 for (;*c!=0;c++) //遇到停止符0结束
206 1 putbyte_com_0(*c);
207 1 }
208
209 void puthex_com_0(BYTE c)
210 {
211 1 int ch;
212 1 putbyte_com_0(' ');
213 1 putbyte_com_0('0');
214 1 putbyte_com_0('x');
215 1 ch=(c>>4)&0x0f;
216 1 putbyte_com_0(hex_[ch]);
217 1 ch=c&0x0f;
218 1 putbyte_com_0(hex_[ch]);
219 1 }
220
221 BYTE getbyte_com_0(void)
222 {
223 1 char c;
224 1 ES0=0;
225 1 while(recv_buff_com_0.empty);
226 1 // c=get_char_from_buff(&recv_buff_com_0);
227 1
228 1 c=recv_buff_com_0.buffer_ptr[recv_buff_com_0.read_index++];
229 1 recv_buff_com_0.read_index = recv_buff_com_0.read_index%recv_buff_com_0.ring_buffer_len;
230 1 if(recv_buff_com_0.read_index==recv_buff_com_0.write_index)
231 1 recv_buff_com_0.empty=1;
232 1 else recv_buff_com_0.empty=0;
233 1
234 1 ES0=1;
235 1 return(c);
236 1 }
237
238 //串口1函数
239 void putbyte_com_1(char c)
240 {
241 1 ES1_OFF;
C51 COMPILER V7.02a HAND_SERIAL_ALL 07/08/2003 15:36:23 PAGE 5
242 1 send_buff_com_1.buffer_ptr[send_buff_com_1.write_index++] = c;
243 1 send_buff_com_1.write_index = send_buff_com_1.write_index%send_buff_com_1.ring_buffer_len;
244 1 if(send_buff_com_1.read_index==send_buff_com_1.write_index)
245 1 send_buff_com_1.empty=1;
246 1 else send_buff_com_1.empty=0;
247 1
248 1 if(send_idle_com_1==1)
249 1 {
250 2 TI1_ON;
251 2 send_idle_com_1=0;
252 2 }
253 1 ES1_ON;
254 1 }
255
256 void putstring_com_1(BYTE *c)
257 {
258 1 for (;*c!=0;c++) //遇到停止符0结束
259 1 putbyte_com_1(*c);
260 1 }
261
262 void puthex_com_1(BYTE c)
263 {
264 1 int ch;
265 1 putbyte_com_1(' ');
266 1 putbyte_com_1('0');
267 1 putbyte_com_1('x');
268 1 ch=(c>>4)&0x0f;
269 1 putbyte_com_1(hex_[ch]);
270 1 ch=c&0x0f;
271 1 putbyte_com_1(hex_[ch]);
272 1 }
273
274 BYTE getbyte_com_1(void)
275 {
276 1 char c;
277 1 ES1_OFF;
278 1 while(recv_buff_com_1.empty);
279 1 // c=get_char_from_buff(&recv_buff_com_0);
280 1
281 1 c=recv_buff_com_1.buffer_ptr[recv_buff_com_1.read_index++];
282 1 recv_buff_com_1.read_index = recv_buff_com_1.read_index%recv_buff_com_1.ring_buffer_len;
283 1 if(recv_buff_com_1.read_index==recv_buff_com_1.write_index)
284 1 recv_buff_com_1.empty=1;
285 1 else recv_buff_com_1.empty=0;
286 1
287 1 ES1_ON;
288 1 return(c);
289 1 }
290
291
292 //处理定时器函数-begin
293 void init_timer(type_of_timer *l_timer)
294 {
295 1 l_timer->active=0;
296 1 l_timer->timer_off=0;
297 1 l_timer->timer_value=0;
298 1 }
299
300 void opentimer(type_of_timer *l_timer,int l_timer_value)
301 {
302 1 l_timer->active=1;
303 1 l_timer->timer_value=l_timer_value;
C51 COMPILER V7.02a HAND_SERIAL_ALL 07/08/2003 15:36:23 PAGE 6
304 1 l_timer->timer_off=0;
305 1 }
306
307 void closetimer(type_of_timer *l_timer)
308 {
309 1 l_timer->active=0;
310 1 l_timer->timer_off=0;
311 1 }
312 //处理定时器函数-end
313
314 void delay_10ms(BYTE l_10ms_times)
315 {
316 1 Count10ms=l_10ms_times;
317 1 while(Count10ms);
318 1 }
319
320
321
322 /*
323 void PORT_Init (void)
324 {
325 XBR0 = 0x07; // Enable UART0
326 XBR1 = 0x00;
327 XBR2 = 0x04; //enable UART1
328
329 XBR2 |= 0x40; // Enable crossbar and weak pull-ups
330
331 P0MDOUT |= 0x01; // enable TX0 as a push-pull output
332 P1MDOUT |= 0x01; // enable P1 as push-pull output
333 P2MDOUT |= 0x3e;
334 P3MDOUT |= 0xff;
335
336 EMI0CF=0x23; //只使用内部XRAM P53
337 }
338
339 void SYSCLK_Init (void)
340 {
341 int i; // delay counter
342
343 OSCXCN = 0x27; // start external oscillator with
344 for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
345 // while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
346 OSCICN = 0x08; // select external oscillator as SYSCLK
347 // source and enable missing clock
348 // detector
349 CKCON =0x00; //定义4个定时器的时钟滴答为系统钟的12分频 p187
350 //CKCON=0x78;
351 }
352
353
354
355 void main(void)
356 {
357 BYTE idata l_char;
358
359 WDTCN = 0xde; // disable watchdog timer
360 WDTCN = 0xad;
361
362 SYSCLK_Init (); // initialize oscillator
363 PORT_Init();
364
365 serial_init();
C51 COMPILER V7.02a HAND_SERIAL_ALL 07/08/2003 15:36:23 PAGE 7
366
367 EA=1;
368
369 putstring_com_0("1,com0,9600,n/8/1 ");
370 putstring_com_1("2,com0,9600,n/8/1 ");
371
372 while(1)
373 {
374 PCON|=0x01; //idle模式
375
376 if(!if_empty_com_0())
377 {
378 l_char=getbyte_com_0();
379 putbyte_com_0(l_char);
380 }
381 if(!if_empty_com_1())
382 {
383 l_char=getbyte_com_1();
384 putbyte_com_1(l_char);
385 }
386 }
387 }
388 */
389
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2231 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = 1071 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 3 ----
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 + -