你定义的接收数组Rec_Buf[100]; 这已经超过了内存容量,编译是不能通过的。为了能编译,估计存储模式你是选的外部数据存储器了吧。这要求必须外部扩展数据存储器,可实际上却没有,那接收数据就等于存放在空虚的存储器了,当然就不会保存下来了,就等于没有接收到数据。其实也没必要定义那么大的数组。10~20个单元就够了。如果,单片机是52的,就可以用高128字节的内部RAM存储空间了,但需要定义成间址存储区idata。unsigned char idata Rec_Buf[100];