标题: 求答疑程序不知道错在哪里 [打印本页]

作者: 付费搜索    时间: 2017-6-6 11:57
标题: 求答疑程序不知道错在哪里
#include<reg51.h>
#include<lcd1602.h>
#define uchar unsigned char
#define uint unsigned int
uchar int_time;
uchar second;
uchar minute;
uchar hour;
uchar code date[]="H.I.T.CHINA";
uchar code time[]="TIME 23:59:55";
uchar second=55,minute=59,hour=23;
void clock_init()
{
uchar i,j;
for(i=0;i<16;i++)
{
write_data(date[i]);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_data(time[j]);
}
}
void clock_write( uint s,uint m,uint h)
{
write_sfm(0x47,h);
write_sfm(0x4a,m);
write_sfm(0x4d,s);
}
void main()\
{
init1602();
clock_init();
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-46483)/256;
TL0=(65536-46483)%256;
TR0=1;
int_time=0;
second=55;
minute=59;
hour=23;
while(1)
{
clock_write(second,minute,hour);
}
}
void T0_interserve(void) interrupt 1 using 1
{ int_time++
if(int_time=0)
{
int_time=0;
second++;
}
if(second==60)
{
second=0;
hour++;
}
if(hour==24)
{
hour=0;
}
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
}

KT9}R(IZ028B%SW`V5NYFGS.png (65.3 KB, 下载次数: 53)

KT9}R(IZ028B%SW`V5NYFGS.png

作者: wc86110    时间: 2017-6-6 13:46
你确定这是完整源代码么?
作者: 13760721640    时间: 2017-6-6 14:07
你的宏定义呢
作者: HC6800-ES-V2.0    时间: 2017-6-6 14:13
我不知道你的程序是哪里来的,从程序头文件来看,应该和1602显示有关,这就是问题的关键了。
第一:你调用了LCD1602.H头文件,你知道它定义了哪些函数吗?
你的截图中可以看到,17行是“写数据”函数,但那不是1602头文件中的函数名称啊。所以报错“找不到该函数”
第二:不仅如此,下面还有很多这样的函数,就是这行不错,其它行也要错,如19、22、27、28、29行。
第三、你提问,但很多信息不全。如:write_sfm()这个函数,我就不知道是干什么用的,因为不知道你的程序功能。你只说程序有问题,但为什么不说清楚——你的程序是干什么用的,什么功能有问题,而且你发的程序不全,所以,也不能判断是不是这个程序的问题,或是其它头文件、其它C文件的问题。

很可能这不是你做的,而且没有好好读一读程序,它需要什么样的其它程序——如你的截图中看到,那个头文件LCD1602.H就没有找开,找不到,那可不是系统头文件,是驱动1602的专用头文件。

作者: zhyanbbs    时间: 2017-6-6 17:17
应该是write_data 这个函数没有定义,查查头文件里面有没有定义
作者: liushuiwuqing    时间: 2017-6-6 20:07
write_data 这个是调用的子程序没有先声明,也就是说你先调用了子程序,后面才声明,这是有误的,这是一种可能。
作者: 小菜鸟加1    时间: 2017-6-6 20:49
你头文件缺了吧,你试一下把用的头文件补上去
作者: lovexeon    时间: 2017-6-6 21:52
是不是没有声明头文件?
作者: meame    时间: 2017-6-6 22:33
这代码对吗?
作者: 瘦不了的繁星    时间: 2017-6-7 08:08
应该是缺定义




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1