共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网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |