帮帮忙啊!各位大侠!

keenking2009 2010-10-17 06:37:43


请各位大侠帮忙看看小女师弟的程序。此程序是用80C51通过433MHZ与电脑上的C#程序通信。为什么我的shujvfasong()最多只能发28个数据。而且收发的都只是字符型。

void main (void)
{
u8 query=0,acq=0;
u16 tem;

Init_Mcu(); //初始化MCU

while(1)
{
PCA0CPH5 = 0x00; //喂狗



if(flag.flagBits.standbyFlgQuery)
{
query=1;
kongzhifasong(16,uartBuf.txBuf);
flag.flagBits.standbyFlgQuery=FALSE;


}

if(flag.flagBits.standbyFlgParaSet)
{

kongzhifasong(16,uartBuf.txBuf);
flag.flagBits.standbyFlgParaSet=FALSE;
}



if((flag.flagBits.standbyFlgStartAcq==1)&&(query==1))
{
acq=1;
for(tem=0;tem<5;tem++)
{
shujvfasong(32,uartBuf.txBuf);
}
flag.flagBits.standbyFlgStartAcq=FALSE;
}

if(flag.flagBits.standbyFlgPauseAcq)
{

kongzhifasong(16,uartBuf.txBuf);
flag.flagBits.standbyFlgPauseAcq=FALSE;
}

if(flag.flagBits.standbyFlgResumeStart)
{

shujvfasong(32,uartBuf.txBuf);
flag.flagBits.standbyFlgResumeStart=FALSE;
}

if(flag.flagBits.standbyFlgStopAcq)
{

kongzhifasong(16,uartBuf.txBuf);
flag.flagBits.standbyFlgStopAcq=FALSE;
}
#include"uart.h"

INTERRUPT(UART0_ISR, INTERRUPT_UART0)
{
if(RI0==1) //recieve
{
RI0 = 0; //clear the Interrupt flag
Byte = SBUF0;
//字节超时处理
if(flag.flagBits.rxTimeOutFlg)
{
//清标志
flag.flagBits.rxTimeOutFlg = FALSE;
//清接收计数
uartBuf.rxCnt = 0;
chkSum = 0;
//重新启动接收超时处理
flag.flagBits.rxTimeOutEnFlg = TRUE;
}
else
{
//计数清0
rxDelayCnt = 0;
//启动接收超时处理
flag.flagBits.rxTimeOutEnFlg = TRUE;
}
//数据的接收处理
switch( uartBuf.rxCnt)
{
case 0 :
{
if(Byte=='w')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 1:
{
if(Byte=='h')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 2:
{
if(Byte=='l')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 3:
{
if(Byte=='g')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 4:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 5:

{
uartBuf.kzBuf[0] = Byte;
uartBuf.rxCnt++;
chkSum += Byte;
}
break;
case 6:

{
uartBuf.kzBuf[1] = Byte;
uartBuf.rxCnt++;
chkSum += Byte;
}
break;
case 7:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 8:
{
if(Byte=='5')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 9:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 10:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 11:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 12:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 13:
{
if(Byte=='0')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

case 14:
{
if(Byte=='g')
{
uartBuf.rxCnt++;
chkSum += Byte;
}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;
case 15:
{
if(Byte=='j')
{
uartBuf.rxCnt++;
chkSum += Byte;
if(uartBuf.kzBuf[0]=='c'&uartBuf.kzBuf[1]=='x')
flag.flagBits.standbyFlgQuery=TRUE;

if(uartBuf.kzBuf[0]=='c'&uartBuf.kzBuf[1]=='s')
flag.flagBits.standbyFlgParaSet=TRUE;

if(uartBuf.kzBuf[0]=='c'&uartBuf.kzBuf[1]=='j')
flag.flagBits.standbyFlgStartAcq=TRUE;

if(uartBuf.kzBuf[0]=='z'&uartBuf.kzBuf[1]=='t')
flag.flagBits.standbyFlgPauseAcq=TRUE;

if(uartBuf.kzBuf[0]=='h'&uartBuf.kzBuf[1]=='f')
flag.flagBits.standbyFlgResumeStart=TRUE;

if(uartBuf.kzBuf[0]=='t'&uartBuf.kzBuf[1]=='z')
flag.flagBits.standbyFlgStopAcq=TRUE;

}
else
{
uartBuf.rxCnt=0 ;
chkSum=0;
}
}
break;

}
}
void kongzhifasong(u16 i,u8 *backData)
{
u16 j;

uartBuf.txLen = i;
uartBuf.txCnt = 0 ;





backData[0]='w';
backData[1]='h';
backData[2]='l';
backData[3]='g';
backData[4]=SLAVER;
if(flag.flagBits.standbyFlgQuery)
{
backData[5]='d';
backData[6]='l';
// backData[5]='p';
//backData[6]='q';
}
if(flag.flagBits.standbyFlgParaSet)
{
backData[5]='s';
backData[6]='z';
}

if(flag.flagBits.standbyFlgPauseAcq)
{
backData[5]='t';
backData[6]='z';
}
backData[7]='0';
backData[8]='5';
backData[9]='0';
backData[10]='0';
backData[11]='0';
backData[12]='0';
backData[13]='0';
backData[14]='g';
backData[15]='j';

for(j=0;j<uartBuf.txLen;j++)
{
SBUF0= backData[j] ;
/*uartBuf.txBuf[j] = backData[j] ;*/
while(TI0!=1);
TI0= 0;
}
for(j=0;j<uartBuf.txLen;j++)
{
uartBuf.txBuf[j] = backData[j];
}
TI0 = 1;
}
void shujvfasong(u16 i,u8 *backData)
{
u16 j,pp;
// u16 delay1,delay2;
uartBuf.txLen = i;
uartBuf.txCnt = 0;


backData[0]='w';
backData[1]='h';
backData[2]='l';
backData[3]='g';
backData[4]=SLAVER;
backData[5]='s';
backData[6]='j';
backData[7]='0';
backData[8]='5';

for(j=0;j<21;j++)
{
backData[j+9]='0';
}
backData[20+10]='g';
backData[20+11]='j';

for(j=0;j<32;j++)
{
uartBuf.txBuf[j] = backData[j] ;
SBUF0= uartBuf.txBuf[j] ;

/*uartBuf.txBuf[j] = backData[j] ;*/
while(TI0!=1);

TI0= 0;

}
...全文
47 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小魔菇 2010-10-17
  • 打赏
  • 举报
回复
小女师弟 有歧义

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧