现在在做载波通信,用的是晓程的PL4000,内嵌8051.外部晶振是9.6M的,分频给8051为4.8M,写了简单的测试程序,但是串口一直都只能收到一般的数据或者数据包(数据包完整)。
#include <PL3107.h>
#define u8 unsigned char
#define u16 unsigned int
u8 flag ,rec_flag=0;
u8 ser_rec[20];
void init()
{
PCON = 0x0C0;
TMOD = 0x20; //定时器1工作在方式2,定时器0工作在方式1
// TMOD1 = 0x32; //定时器2工作在方式2,定时器0工作在方式1
// TH2=0xE1; //实现波特率4800(系统时钟9.6MHZ) (F6/ 2400)
// TL2=0xE1; //实现波特率4800(系统时钟9.6MHZ) (FB/FA 4800)
TH1=0x0FB; //实现波特率4800(系统时钟9.6MHZ) (F6/ 2400)
TL1=0x0FB; //实现波特率4800(系统时钟9.6MHZ) (FB/FA 4800)
TCON=0x50; //启动定时器
// TCON1=0x10; //启动定时器
SCON = 0x50;
// SCON1 = 0x50;
EA=1; //单片机中断允许
ES=1; //允许串行口中断
}
void sendonebyte(u8 dat)
{
// ES = 0;
SBUF = dat;
while(!TI);
TI=0;
// ES = 1;
}
void main()
{
init();
while(1)
{
// sendonebyte(0x65);
/* if(flag == 1)
{
sendonebyte(0x65);
flag=0;
//for(i=0;i<14;i++)
//{
// sendonebyte(ser_rec[i]);
//}
} */
}
}
void ser() interrupt 4
{
u8 temp;
RI = 0;
temp = SBUF;
sendonebyte(temp);
}用串口助手看发送数据量时,大概发送100个但是返回接收到的只有50多一点
|