以下是我做的89C52简单的发送和接收程序,我在电脑上用串口调试助手进行调试,示波器发现8251的rxd,txd只能有一个有波形,就是发送和接收只能进行其中一个.(新电脑串口绝对没问题,换了好几块正确的电路板都是这个问题) 第二个问题是DAT8251 = data_temp[m];这句话有问题,发送不出数据,只有写成比如:DAT8251 =0X52才能发送一个字母 R, DAT8251 =0X48发送一个字母 H ;为什么我写成DAT8251 = data_temp[0]就不能发送字母R呢? 请各位老师和大虾们指导一下! #include "reg52.h" #include "stdlib.h" #include "absacc.h" #include "intrins.h" #include "test.h" #include "math.h" #define uchar unsigned char #define uint unsigned int #define COM8251 XBYTE[0x8601] #define DAT8251 XBYTE[0x8600] uchar data_temp[10]={0x52,0x55,0x56,0x57,0x58,0x00}; uchar temp[10]={11,22}; uchar m=0,n=0,k; uchar s; void initmcu(void); void wait(uchar p,q); void main(void) { COM8251 = 0x00; DAT8251 = 0x00; DAT8251 = 0x00; COM8251 = 0x40;//以上为8251复位部分 wait(11,82); COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16 wait(11,82); COM8251 = 0x35; wait(11,82); while(1) { m=0; while(data_temp[m]!=0x00) { DAT8251 = data_temp[m];//写 temp[m] = DAT8251; m++; } } } void wait(uchar p,q) { uchar i,j; //(2*j+3)*i+4 for (i=p;i>0;i--) for (j=q;j>0;j--); } |