当前位置: 代码迷 >> C语言 >> [求助]我下面的程序的解释有没弄错
  详细解决方案

[求助]我下面的程序的解释有没弄错

热度:230   发布时间:2006-10-19 13:31:50.0
[求助]我下面的程序的解释有没弄错

SIGNAL(SIG_UART1_RECV) //不明白??
{
UART1_RxBuf[Rx1_Point]=inp(UDR1); //不明白??
if(Rx1_Point==0) //如果Rx1_Point=0
{ //那就是
Rx1_Checksum=0; // Rx1_Checksum=0
Rx1_Length=UART1_RxBuf[Rx1_Point]; // Rx1_Length=UART1_RxBuf[Rx1_Point]
Rx1_Point++; // Rx1_Point= Rx1_Point +1
return; 函数的结果返回
} //如果上面的Rx1_Point=0不成立,则执行下面的,
if(Rx1_Point==(Rx1_Length+1)) //即如果Rx1_Point不等于0并且Rx1_Point==(Rx1_Length+1)
{ //那就是
if(Rx1_Checksum==UART1_RxBuf[Rx1_Point]) //如果Rx1_Checksum==UART1_RxBuf[Rx1_Point]
Rx1_end=1; // 就Rx1_end=1
Rx1_Point=0; //不明白??这个结果是对应那个如果出来的??
return; //函数的结果返回
} //二个如果都不成立的情况下,则执行下面三行
Rx1_Checksum+=UART1_RxBuf[Rx1_Point]; //Rx1_Checksum+=UART1_RxBuf[Rx1_Point]
Rx1_Checksum&=0xff; // Rx1_Checksum&=0xff
Rx1_Point++; // Rx1_Point+1
}

第一、二、十五行是什么意思?
每一次RETURN的时候,是都把Rx1_Point、Rx1_Length、Rx1_Point的值都保留下来?以方便以后调用还是说返回的是空的值?
上面的解释有没有错误?请指正。因为我才刚刚学,好多地方都不明白,所以可能有些地方把程序的意义弄错。


[此贴子已经被作者于2006-10-19 13:32:32编辑过]

搜索更多相关的解决方案: 弄错  解释  SIGNAL  

----------------解决方案--------------------------------------------------------

因为是自学当中,有好多地方点样睇书都不明白呀。


----------------解决方案--------------------------------------------------------

这些标识符定义的好烦啊,很难看


----------------解决方案--------------------------------------------------------

好像是嵌入式方面的编程吧?


----------------解决方案--------------------------------------------------------

对呀,是嵌入式方面的编程,其实我最想知道的是,我对这个程式的理解有没有错误?例如SIGNAL(SIG_UART1_RECV)和inp(UDR1),括号是代表了什么意思呢?这两句要如何理解?UART1_RxBuf[Rx1_Point]这个是代表UART1_RxBuf的一维数组是[Rx1_Point]吗?第八行的return意思是函数的返回,那是返回空值吗?还是返回的是Rx1_Checksum、Rx1_Length、Rx1_Point这三个的值?还是只返回Rx1_Point这个值?我看过不少关于return的解释,但就是不太明白,所以想通过例子,能让我明白这个应该怎样用。


----------------解决方案--------------------------------------------------------
对嵌入式方面编程没有研究,不太清楚。请高手来给解释解释!
----------------解决方案--------------------------------------------------------
  相关解决方案