这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » CCS CCS编程不能使用两个.C文件??

共2条 1/1 1 跳转至

CCS CCS编程不能使用两个.C文件??

院士
2006-09-17 18:14:16     打赏
CCS CCS编程不能使用两个.C文件??



关键词: 编程     不能     使用     两个     文件    

院士
2006-12-22 22:43:00     打赏
2楼
问 我在CCS上的一个工程里编写了两.C文件,编译时都没有错误,但就是烧写程序后,运行不正常,请问这是什么原因, 是不是在CCS里不能有两个.C文件,程序都写在一个文件里,那多麻烦阿,哪位高手指点指点。 1: 可以,c会自动链接 2: CCS编程不能使用两个.C文件??对阿,我这是这样想的,我编译后也通过了,没有任何错误与警告,但运行结果就不正确了,而我不分开时运行是正确的,都是一样的程序。 3: 可以编译N个C/C++文件可以编译N个C/C++文件,你可以在反汇编窗口检查一下各函数的地址.我个人感觉你可能有没有区分开的局部或全局变量或函数 4: CCS编程不能使用两个.C文件??我觉得自己的那个例子已经够简单了,但就是不行,请问有谁玩过C51的,我以前用的编译器是keil51,请问一下,CCS跟keil有什么不一样。我是指在编译多个c文件时??? 5: CCS编程不能使用两个.C文件??下面是我写的两个c文件,包括一个头文件,请各位高手帮我看一下。

LCD头文件LCM12864ZK.H
//---------------------------------------------------------//

#ifndef _LCM12864ZK_H_
#define _LCM12864ZK_H_

#define WRITE0()    { port8002=0x0004; port8002=0x0006; } //写0
#define WRITE1()    { port8002=0x0005; port8002=0x0007; } //写1
#define READY()    { port8002=0x0004;}   //准备好
                      
ioport unsigned port8002;

extern void delay(unsigned int j);                     //延时子程序
extern void WriteCommand(unsigned char command);     //写命令子程序
extern void WriteData(unsigned char data);             //写数据子程序
extern void LcdInit();                      //初始化程序
                            
#endif


LCM12864ZK.C文件
//------------------------------------------------------//

#include "LCM12864ZK.H"

//---------------------------------------------------------
//延时子程序
void delay(unsigned int j)
{
    unsigned int i;
    for(i=1;i<j;i++) ;
}

//---------------------------------------------------------
//写命令子程序
void WriteCommand(unsigned char command)
{
    unsigned char i;
    //unsigned char temp;
    for(i=0;i<5;i++)    //写5个1;
    {
        WRITE1();
    }
    for(i=0;i<3;i++)    //写3个0,rw=0,rs=0;
    {
        WRITE0();
    }
    for(i=0;i<4;i++)    //写入命令字的高4位;
    {
        if(command&1)
        {
            WRITE1();
        }
        else
        {
            WRITE0();
        }
        command>>=1;
    }
    for(i=0;i<4;i++)    //写4个0;
    {
        WRITE0();
    }
    for(i=0;i<4;i++)    //写入命令字的低4位;
    {
        if(command&1)
        {
            WRITE1();
        }
        else
        {
            WRITE0();
        }
        command>>=1;
    }
    for(i=0;i<4;i++)    //写4个0;
    {
        WRITE0();
    }
    delay(5);            //延时100us;    
}

//---------------------------------------------------------
//写数据子程序
void WriteData(unsigned char data)
{
    unsigned char i;
    //unsigned char temp;
    for(i=0;i<5;i++)    //写5个1;
    {
        WRITE1();
    }
    
    WRITE0();            //写入0,rw=0;
    WRITE1();            //写入1,rs=1;
    WRITE0();
    
    for(i=0;i<4;i++)    //写入数据的高4位;
    {
        if(data&1)
        {
            WRITE1();
        }
        else
        {
            WRITE0();
        }
        data>>=1;
    }
    for(i=0;i<4;i++)    //写4个0;
    {
        WRITE0();
    }
    for(i=0;i<4;i++)    //写入数据的低4位;
    {
        if(data&1)
        {
            WRITE1();
        }
        else
        {
            WRITE0();
        }
        data>>=1;
    }
    for(i=0;i<4;i++)    //写4个0;
    {
        WRITE0();
    }
    delay(5);            //延时100us;    
}

//-------------------------------------------------------------
//初始化程序
void LcdInit()
{
    WriteCommand(0x30);
    WriteCommand(0x30);
    WriteCommand(0x0c);
    WriteCommand(0x01);
    WriteCommand(0x06);
}

LCD.C文件
//---------------------------------------------------------//
#include "exp1_2407.h"
#include "LCM12864ZK.H"

//---------------------------------------------------------
//ioport unsigned port8002;


//-------------------------------------------------------------
//系统初始化
void SystemInit()
{
    asm(" setc INTM");    //禁止所有中断
    asm(" setc SXM");    //抑制符号位扩展
    asm(" clrc OVM");    //累加器中结果正常溢出    
    *WDCR=0x00ef;        //禁止看门狗
    *IFR=0xffff;        //清除所有中断标志位
}

//-------------------------------------------------------------
//显示子程序
void WordDisplay()
{
    READY();
    LcdInit();
    delay(3000);
    //显示"理"
    WriteData(0xc0);
    WriteData(0xed);
    //显示"工"
    WriteData(0xb9);
    WriteData(0xa4);
}

//-------------------------------------------------------------
//空中断子程序
void nothing()
{
    asm(" clrc INTM");    //开总中断
}

//-------------------------------------------------------------
//main
void main()
{
    SystemInit();
    while(1)
    {
        WordDisplay();
    }
} 6: 可以包括多个.c程序的。但不要重复包括。 7: 头文件有问题外部变量只有extern申明,没看见定义啊

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]