| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 811 人关注过本帖
标题:在TC2.0编译很好但用TC3.0就出现问题不知道如何解决
只看楼主 加入收藏
lidq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-2-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
在TC2.0编译很好但用TC3.0就出现问题不知道如何解决
源程序:
#include    <stdio.h>
#include    <math.h>
#include    <dos.h>
#include    <conio.h>

#define    TIME_OUT   300000
#define ID        13

static    int base0=0x3f8;
static    int base1=0x2f8;

static unsigned char SendData[108];
int rec4017[60];
int rec4052[10];
unsigned char ComRecData[11]={""};
int RecLen =0;
int ComDataReady=0;

static    char cmd01[4]={'#','0','1',0x0d};
static    char cmd02[5]={'$','0','2','6',0x0d};
unsigned char CMD=0;

read4017()
{
    int i;
    char flag;
    long  timeout;

    i=0;
    flag=1;
    while (flag)
    {
       outportb(base1,cmd01[i]);
       if(cmd01[i] == 0x0d)
       {
         flag=0;
         i=0;
       }
       i++;
    }

    flag=1;
    timeout=TIME_OUT;
    i=0;
    while (flag)
    {

        if ((inportb(base1+5) &    1) !=0)
        {
           rec4017[i]=inportb(base1);
          if (rec4017[i] == 0x0d)
          {
            /*rec4017[i+1]='\0';*/
            flag=0;
          }
          i++;
        }
        else
        {
            timeout--;
            if (timeout == 0)
            {
                printf("\nTimeout01(read4017)\n");
                flag = 0;
            }
        }
    }
}

read4052()
{
    int i;
    char flag;
    long  timeout;

    i=0;
    flag=1;
    while (flag)
    {
        outportb(base1,cmd02[i]);
        if (cmd02[i] ==    0x0d)
        {
            flag=0;
            i=0;
         }
        i++;
    }

    flag=1;
    timeout=TIME_OUT;
    i=0;
    while (flag)
    {

        if ((inportb(base1+5) &    1) !=0)
        {
          rec4052[i]=inportb(base1);
          if (rec4052[i] == 0x0d)
          {
            /*rec4052[i+1]='\0';*/
            flag=0;
          }
          i++;
        }
        else
        {
            timeout--;
            if (timeout == 0)
            {
                printf("\nTimeout02(read4052)\n");
                flag = 0;
            }
        }
    }
}


readcom()
{
        int i=0;
        int flag=1;
        int timeout=TIME_OUT;
        while (flag)
        {

            if ((inportb(base0+5) &    1) !=0)
            {
                ComRecData[i]=inportb(base0);
                i++;
                if(i>=9)
                {
                   ComRecData[i+1]='\0';
                   printf("Received ID is:%d\n",ComRecData[7]);
                   if(ComRecData[7]==ID)
                   {
                    ComDataReady=1;
                    CMD=ComRecData[4];
                   }
                   flag=0;
                }
            }
            else
            {
                timeout--;
                if (timeout == 0)
                {
                    flag = 0;
                    ComDataReady=0;
                }
            }
        }

}





/*void interrupt com1()
{
    char i;
    disable();


    ComRecData[RecLen]=inportb(0x3f8);
    RecLen++;
    if(RecLen==10)
    {
        if((ComRecData[0]==69 && ComRecData[1]==84 && ComRecData[7]==ID) )
        {
            ComDataReady=1;
            ComRecData[11]='\0';
            if(ComRecData[4]==130 || ComRecData[4]==131)
            {
             CMD=ComRecData[4];
            }
        }
        else
        {
            strcpy(ComRecData,"");
            RecLen=0;
            ComDataReady=0;
            CMD=0;
        }
    }




    enable();
    EOI();
}
set_com1_vect()
{
    setvect(0xc, com1);
}

EOI()
{
    outport(0xff22,0x8FFC);
}

enable_com1_irq()
{
    outport(0xff28,inport(0xff28) &    0xffef);
}

disable_com1_irq()
{
    outport(0xff28,inport(0xff28) |    0x0010);
}              */

wdt_on()
{
    outport(0xff76,inport(0xff76) |    0x2000);    /* output mode */
    outport(0xff78,inport(0xff78) &    0xDFFF);    /* 10 */
    outport(0xff7A,inport(0xff7A) |    0x2000);    /* WDI =1 */
}

wdt_clear()
{
    outport(0xff7A,inport(0xff7A) &    0xDFFF);    /* WDI = 0 */
    outport(0xff7A,inport(0xff7A) |    0x2000);    /* WDI = 1 */
}

wdt_off()
{
    outport(0xff76,inport(0xff76) &    0xDFFF);    /* normal mode */
    outport(0xff78,inport(0xff78) &    0xDFFF);    /* 00 */
}

led_init()
{
    outport(0xff76,inport(0xff76) |    0x0400);    /* output mode */
    outport(0xff78,inport(0xff78) &    0xFBFF);    /* 10 */
}
led_on()
{
    outport(0xff7A,inport(0xff7A) |    0x0400);    /* LED = 1 */
}
led_off()
{
    outport(0xff7A,inport(0xff7A) &    0xFBFF);    /* LED = 0 */
}



InitSerial()
{
    outportb((0x3f8+2),0x03);     /*        enable COM1    FIFO */
    outportb((0x2f8+2),0x03);     /*        enable COM2    FIFO */

    outportb(0x3f8+3,0x80);                /* set DLAB=1 */
    outportb(0x3f8    ,0x0c);    outportb(0x3f8+1,0x0);    /* set buad = 9600   */
    outportb(0x3f8+3,0x03);                /* set data=8 stop=1 no parity */
    outportb(0x3f8+1,0x00);                /* enable COM1 interrupt */

    outportb(0x2f8+3,0x80);                /* set DLAB=1 */
    outportb(0x2f8    ,0x0C);    outportb(0x2f8+1,0x0);    /* set buad = 9600   */
    outportb(0x2f8+3,0x03);                /* set data=8 stop=1 no parity */
    outportb(0x2f8+1,0x00);                /* disable COM2 interrupt */

}
InitSendData()
{
    SendData[0]=69;
    SendData[1]=84;
    SendData[2]=0;
    SendData[3]=0;
    SendData[4]=130;
    SendData[5]=4;
    SendData[6]=0;
    SendData[7]=ID;
    SendData[8]=0;
    SendData[9]=0;

}
void main()
{
    int i=0;
    char ch;
    long int j=0;

    disable();
    /*set_com1_vect();*/

    InitSerial();
    InitSendData();
    enable();
    /*enable_com1_irq();*/
    led_init();
    printf("StationID is: %d\n",ID);
    printf("System is listing on Com1 Port....... \n");
    while(1)
    {
       if(kbhit())
       {
         ch=getch();
         if((ch=='Q')||(ch=='q'))
         {
           exit(0);
         }
       }
        wdt_on();

        readcom();

        if(ComDataReady==1 && ComRecData[7]==ID)
        {
            led_off();
            ComDataReady=0;
            printf("CMD is: %d\n",CMD);
            SendData[4]=CMD;
            CMD=0;
            printf("Receive CMD OK!!! \n");

            read4017();
            for(i=0;i<=56;i++)
            SendData[10+i]=rec4017[i];

            read4052();
            for(i=0;i<=7;i++)
            {
            SendData[67+i]=rec4052[i];
            }
            for(j=0;j<65535;j++)
            {
            }

            for(i=0;i<=108;i++)
            {
            outportb(0x3f8,SendData[i]);
            while((inportb(0x3f8+5) & 0x60)!=0x60);
            }
            printf("Transmite Done!!! \n");
            printf("Press 'Q' or 'q' to Quit......\n");
            strcpy(rec4017,"");
            strcpy(rec4052,"");
            led_on();
        }
        wdt_off();
     }

}

出错信息Function should return a value 我是新手 请老师给看看 谢谢
有11条都是同样的错误信息

[ 本帖最后由 lidq 于 2011-2-17 16:17 编辑 ]
搜索更多相关主题的帖子: 源程序 
2011-02-17 16:15
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:7 
应该是函数返回值问题,如果没有返回值,在函数前加void

小代码,大智慧
2011-02-17 18:00
lidq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-2-17
收藏
得分:0 
我试过不行 但不知道问题出在什么地方。在TC2.0编译和运行没有问题。到用TC3.0编译不能通过。希望各位高手帮帮我看看问题出在什么地方。
2011-02-18 08:46
洛云
Rank: 5Rank: 5
等 级:职业侠客
帖 子:204
专家分:356
注 册:2010-2-3
收藏
得分:7 
额,没装TurboC,也没想装,不能在自己机子上调试。

请问楼主,那些错误都提示在哪些行?
记得听说TurboC3比TurboC2要求多的其中一点是函数要有返回值,你试着给没有返回值的函数声明为void类型,或者给个返回类型然后在后面返回0

QQ群:C语言初级群:31066229
   JAVA2自学交流群(筹备中):31066388
UC群:C语言学习:10051714
2011-02-18 16:40
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:7 
楼主好没耐心!二楼的点线面兄弟已经给出正确答案了啊!
楼主中毒好深!你需要更改的地方可不是一点点啊!
楼主,请按如下格式“编织”程序:
/*第1部分:
#include ...*/

/*第2部分:
#define ...*/

/*第3部分:
自定义数据类型
typedef ...;*/

/*第4部分
这个C语言程序中所用到的所有函数的声明
返回值类型(或者void)  函数名称(形参类型列表);
*/

/*第5部分
各函数定义
*/

如果楼主还想将程序设计进行到底,如果楼主不想到了公司被主管训斥,那就请赶紧改掉不关注程序组织形式、滥用全局变量、函数功能分类随意等等不良习惯吧。
虽然明知这样会惹怒楼主,但相信楼主是知道什么叫“良药苦口”,“忠言逆耳”的聪明人。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-18 17:00
洛云
Rank: 5Rank: 5
等 级:职业侠客
帖 子:204
专家分:356
注 册:2010-2-3
收藏
得分:0 
以下是引用犬虫门心在2011-2-18 17:00:54的发言:

楼主好没耐心!二楼的点线面兄弟已经给出正确答案了啊!
楼主中毒好深!你需要更改的地方可不是一点点啊!
楼主,请按如下格式“编织”程序:
/*第1部分:
#include ...*/

/*第2部分:
#define ...*/

/*第3部分:
自定义数据类型
typedef ...;*/

/*第4部分
这个C语言程序中所用到的所有函数的声明
返回值类型(或者void)  函数名称(形参类型列表);
*/

/*第5部分
各函数定义
*/

如果楼主还想将程序设计进行到底,如果楼主不想到了公司被主管训斥,那就请赶紧改掉不关注程序组织形式、滥用全局变量、函数功能分类随意等等不良习惯吧。
虽然明知这样会惹怒楼主,但相信楼主是知道什么叫“良药苦口”,“忠言逆耳”的聪明人。
这位仁兄说得好啊。另外建议楼主看看网上的一些编程规范的电子书。

QQ群:C语言初级群:31066229
   JAVA2自学交流群(筹备中):31066388
UC群:C语言学习:10051714
2011-02-18 17:41
快速回复:在TC2.0编译很好但用TC3.0就出现问题不知道如何解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040477 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved