| 
 
| 一个很奇怪的问题,我把下边的程序烧进单片机后第一次运行成功,在发送区输入4个字符,接收区收到4个字符,.可后来再次运行的时候就有问题了,上位机上接收不到字符了,我重新烧了程序可还是不行,请问这是为什么阿,谢谢! #include <reg51.h>
 #include <string.h>
 #include <stdio.h>
 #define INBUF_LEN 4
 unsigned char inbuf1[INBUF_LEN];
 unsigned char count3=0;
 bit read_flag=0;
 void send_char_com(unsigned char ch)//向串口发送一个字符
 {
 SBUF=ch;
 while(TI==0);
 TI=0;
 }
 
 void send_string_com(unsigned char *str, unsigned int strlen)//向串口发送一个字符串,strlen为该字符串长度
 {
 unsigned int k=0;
 do
 {
 send_char_com(*(str+k));
 k++;
 } while(k<strlen);
 }
 
 
 void main(void)
 {
 SCON=0X50;
 TMOD=0X20;
 TH1=0XE8;
 TL1=0XE8;
 IE=0X90;
 
 TR1=1;
 
 
 while(1)
 {
 
 if(read_flag)
 {
 read_flag=0;
 send_string_com(inbuf1,INBUF_LEN);
 // TI=0;
 }
 }
 
 }
 //串口接收中断函数
 void serial () interrupt 4 using 3
 {
 if(RI)
 {
 unsigned char ch;
 RI=0;
 ch=SBUF;
 inbuf1[count3]=ch;
 count3++;
 if((count3==(INBUF_LEN-1)))
 {
 read_flag=1;
 }
 }
 }
 
 | 
 |