| 什么生产者,消费者,环形送缓存区都冒出来了。 
 void SendDataViaSerialPort(char* buffer, char length)
 {
 char i;
 for (i=0; i<length; i++) {
 SBUF = *buffer++;
 while (! TI);
 TI=0;
 }
 }
 
 使用:
 SendDataViaSerialPort(a, sizeof(a));
 SendDataViaSerialPort(b, sizeof(b));
 
 也可以像 16楼handrap 那样使用中断:
 typedef struct SSerialTransfer
 {
 char*     buffer;
 char    length;
 
 }  SerialTransfer;
 
 
 void SendDataViaSerialPort(char* buffer, char length)
 {
 tx.buffer = buffer + 1;
 tx.lenght = length;
 SBUF = *buffer;
 }
 
 void serial_int(void) interrupt 4 using 2
 {
 if (RI) { }
 if (TI) {
 TI = 0;
 tx.length--;
 if (tx.length != 0) {
 SBUF = *tx.buffer++;
 }
 }
 }
 
 使用:
 SerialTransfer tx;
 
 SendDataViaSerialPort(a, sizeof(a));
 while (tx.length != 0); //waiting for complete
 
 |