一个很奇怪的问题,我把下边的程序烧进单片机后第一次运行成功,在发送区输入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; } } }
|