fish198868 发表于 2013-3-16 16:57:05

AVR采用MODBUS与人机界面通信的问题

在做通信实验的时候,上网下了高手发的C语言源程序,有些问题很奇怪!就是定义的一些各功能函数,这些函数在main()里面不用写吗?难道不用执行吗??硬件会自动执行!如下断程序:

///////从机响应主机问询函数,function code : 03,读取多个寄存器值
void readRegisters(void)
{
        uint8 addr;
        uint8 tempAddr;
        uint16 result;
        uint16 crcData;
        uint8 readCount;
        uint8 byteCount;
        uint8finsh;        //1完成0出错
        uint16 i;
        uint16 tempData = 0;       
       
        //addr = (receBuf<<8) + receBuf;
        //tempAddr = addr & 0xfff;       
        addr = receBuf;   
        tempAddr = addr;

        //readCount = (receBuf<<8) + receBuf;        //要读的个数
        readCount = receBuf;   

        byteCount = readCount * 2;
       
        for(i=0;i<byteCount;i+=2,tempAddr++)
        {
                getRegisterVal(tempAddr,&tempData);                       
                sendBuf = tempData >> 8;                                          
                sendBuf = tempData & 0xff;                       
        }
       
        //设备回应
        sendBuf = localAddr;   
        sendBuf = 3;         
        sendBuf = byteCount;   
        byteCount += 3;         
        crcData = crc16(sendBuf,byteCount);
        sendBuf = crcData >> 8;
        byteCount++;
        sendBuf = crcData & 0xff;
       
        sendCount = byteCount + 1;
        beginSend();
}//void readRegisters(void)


哪位大侠能解说下吗??就是以上程序需不需要在主函数中查询!

mcu_lover 发表于 2013-3-16 17:34:41

当然不会自动执行了。肯定在某个地方调用了,直接或者间接。

fish198868 发表于 2013-3-16 17:46:49

mcu_lover 发表于 2013-3-16 17:34 static/image/common/back.gif
当然不会自动执行了。肯定在某个地方调用了,直接或者间接。

但是我找遍整个程序,包括相关联的C程序,都没发现,没有调用!很奇怪啊!!就是这个附件,麻烦你看下!!

fish198868 发表于 2013-3-16 18:31:03

mcu_lover 发表于 2013-3-16 17:34 static/image/common/back.gif
当然不会自动执行了。肯定在某个地方调用了,直接或者间接。

真的非常谢谢你啊,是有的,由于程序太多,刚才没找到!!现在已经找到了!!{:smile:}

et009tw 发表于 2013-3-16 18:40:10

在 main.c 裡的 checkComm0Modbus() 呼叫 .
页: [1]
查看完整版本: AVR采用MODBUS与人机界面通信的问题