Keil 中为什么函数不能经过多级调用??? 在主函数调用A函数A函数再调用B,编译时去出现无法连接B??

#include<reg51.h>#include<intrins.h>//包含__nop();:函数#defineucharunsignedchar//宏的定义变量类型... #include<reg51.h>
#include <intrins.h> //包含__nop();:函数
#define uchar unsigned char //宏的定义变量类型 uchar 代替 unsigned char
#define uint unsigned int //宏的定义变量类型 uint 代替 unsigned int
unsigned char code tab [5][32]= {
{0x06,0x40,0x38,0x50,0x08,0x48,0x08,0x48,0x08,0x40,0xFF,0xFE,0x08,0x40,0x08,0x48,
0x0E,0x28,0x38,0x30,0xC8,0x20,0x08,0x50,0x09,0x92,0x08,0x0A,0x28,0x06,0x10,0x02},/*"我",0*/
}; // 阴码,高位在前,顺向
sbit X_data=P2^0; //595列数据串行输入脚
sbit X_clk=P2^1; //595列数据脉冲输入脚
sbit X_store=P2^2; //595列数据输出锁存
void delay(unsigned int us); //
void display(uchar i); //
// void senddata(unsigned char dat);
void main()
{
uchar i, j;
while(1)
{
for(i=0;i<5;i++) // 五个字循环显示
{
for(j=0;j<200;j++) //每个字显示的时间
{
display(i);
}
}
}
}
//*****************
void display(uchar i_i)
{
unsigned char i_;
uchar k;
uchar m,n;
for(k=0;k<16;k++) //
{
m=tab[i_i][2*k]; //
n=tab[i_i][2*k+1]; //
X_store=0; // 让锁存时钟变低电平
// 因为是高位在前所以要先送第二个数再送第一个数
for(i_=0;i_<8;i_++)
{ //为什么不能替换??? //
X_clk=0; //当本函数独立写在下方, //
if(n&0x80) //并被display函数调用时 //
X_data=1; //显示不能成功调用, //
else // 为什么??? //
X_data=0; // //
X_clk=1; // //
n=n<<1; //移位使分离为*******************//
}

for(i_=0;i_<8;i_++) //送第一个数
{
X_clk=0; //
if(m&0x80) //
X_data=1; //
else
X_data=0; //
X_clk=1;
m=m<<1; //
}

P1=k;
delay(20); //此处一定要延时
X_store=1; //释放
delay(20); //此处一定要延时
}
}
//
/***************************************************
void sentdata(unsigned char dat)
{

for(i_=0;i_<8;i_++)
{
X_clk=0;
if(dat&0x80)
X_data=1;
else
X_data=0;
X_clk=1;
dat=dat<<1;
}
}
//*************************************/
void delay(unsigned int us)
{
while(us--);
}
展开
 我来答
ghost4063
2012-02-21 · TA获得超过6523个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2786万
展开全部
你仔细看看程序,
1、函数原型是senddata,函数实体的名字成了sentdata
2、senddata实体里,i_没有定义
3、*******************//要注意 ,如果前面有/****,那么编译器会把****//看成两个部分,‘*/’和‘/’,这样就会报错
一剑出血
高粉答主

2012-02-22 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
函数原型与函数声明不符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翰米尔遁
2012-02-21 · TA获得超过172个赞
知道答主
回答量:57
采纳率:0%
帮助的人:37.8万
展开全部
肯定是可以的,多检查下程序。
追问
就是不可以啊,所以我才问,而且它的是警告,提示说不能连接上?
我表示郁闷
而且我把后面要调用的子函数复制到要调用的地方就能用了
追答
你在display(uchar i_i)子程序里先声明一下 delay()函数试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式