共2条
1/1 1 跳转至页
CCS CCS编程不能使用两个.C文件??

问
我在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申明,没看见定义啊
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 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 |