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