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