这是我编的第一个程序,但是都快一个月了,还是没有反应,请大家一定帮看看啊!其中硬件部分是没有问题的,因为有人用汇编实现过这个程序是用8251扩展串口与电脑通信,其中用8251的Txrdy和Rxrdy或非产生中断信号接89C52的T0端<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 /><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,10,22,32,0,0};<br />uchar i = 0;<br />uchar s;<br />void initmcu(void);<br />void wait(uchar p,q);<br /> <br />void Trans8251() interrupt 1 using 2<br />{<br /> do<br /> {<br /> s = COM8251;<br /> }while((s&0x01)==0);<br /> <br /> DAT8251 = data_temp;//写<br /> i++;<br /> if (i==4)<br /> {<br /> i = 0;<br /> } <br /><br />}<br />void main(void) <br />{ <br /> EA = 0;<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 /> initmcu();<br /> EA = 1;<br /> <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 />void initmcu(void)<br />{<br /> TMOD = 0x06; //9600波特11.0592MHz,方式2<br /> TL0 = 0XFF; TH0 = 0XFF; <br /> IT0 = 0; IP = 0x02; TR0 = 1;ET0 = 1;<br />}<br /><br /><br /> |
|