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