你的通讯程序写的有问题,如下:
1 你的程序中的D20是接收区,因此初始化的时候赋值为0就可以了,它将来接受的是你通讯的对方设备传输的数据,不需要你去赋值,只需要初始化就可以了;
2 你的程序中的D70应该是接收数据暂存缓冲区,就是你的D20中接收的数据暂存到这个寄存器区,然后做一些运算处理,比如这些数据是要显示用的等等;
3 你的程序中的D10是发送缓冲区,当数据给定了之后,就可以直接置位M8122,启动发送,发送完成后,M8122会自动复位,然后通过M8123这个接收完成标志去接受数据,如你的程序所写;
个人感觉你应该是看了一些相关的通讯程序,但是并没有吃透这些程序中的各个寄存器及标志位如何使用,建议参照相关的通讯手册中的例子再看看。