我现在使用了简单的三线通信,即8251的rxd通过max232后与电脑的txd相连,8251的txd通过max232后与电脑的rxd相连;接地信号相连;然后是电脑自己的rts,cts相连,dsr,dtr相连;8251自己的rts,cts相连,dsr,dtr相连;8251的其他引脚都有信号,为什么txd还是没信号?不能发也不能收,用过去的汇编却通信正常。 #define _TEST_C_ #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[0x8701] #define DAT8251 XBYTE[0x8700] uchar data_temp[10]={0xAA,0x10,0x22,0x32,0x00}; uchar m=0,n=0,k; uchar s; void wait(uchar p,q); void main(void) { wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms COM8251 = 0x00; wait(11,82); COM8251 = 0x00; wait(11,82); COM8251 = 0x00; wait(11,82); COM8251 = 0x40;//以上为8251复位部分 wait(11,82); COM8251 = 0x4e;//9600baud,1停止位,无校验,8位数据,X16 wait(11,82); COM8251 = 0x37; while(1) { DAT8251 = data_temp[m];//写 m++; if (m==4) { m = 0; } } } 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--); }
|