打印

用1602做时钟,出现点问题,求大神帮看看

[复制链接]
1762|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
binbinmcu|  楼主 | 2015-5-25 23:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序就是这样,写的程序会出来一个警告,下载进开发板后数字不会动,看了好多遍没看出警告到底出在哪,求大神指导, 谢谢!!
/****************************************这是编译后的警告*************************/
Build target 'Target 1'
compiling x.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_WRITE_TIME?X
Program Size: data=14.0 xdata=0 code=231
creating hex file from "x"...
"x" - 0 Error(s), 1 Warning(s).
/*******************************************************************************/
/*************************这是程序***********************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit RW=P2^5;
sbit RS=P2^6;
sbit LCDE=P2^7;
uchar code table[]="00:00:00";
uchar num,tt0,shi,fen,miao;
void init();
void write_time(uchar add,uchar shuju);
void write_data(date);
void write_com(com);
void delay(uint z);

void main()
{
        init();
        while(1);
        {
                if(tt0==20)
                {
                        tt0=0;
                        miao++;
                        if(miao==60)
                        {
                                miao=0;
                                fen++;
                                if(fen==60)
                                {
                                        fen=0;
                                        shi++;
                                        if(shi==24)
                                        {
                                                shi=0;
                                        }
                                        write_time(0,shi);
                                }
                                write_time(3,fen);
                        }
                        write_time(6,miao);
                }
        }
}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void write_com(com)
{
        RS=0;
        RW=0;
        P0=com;
        delay(5);
        LCDE=1;
        delay(5);
        LCDE=0;
        delay(5);
        RS=1;
        RW=1;               
}

void write_data(date)
{
        RS=1;
        RW=0;
        P0=date;
        delay(5);
        LCDE=1;
        delay(5);
        LCDE=0;
        delay(5);
        RS=0;
        RW=1;               
}

void write_time(uchar add,uchar shuju)
{
        uchar shi,ge;
        shi=shuju/10;
        ge=shuju%10;
        write_com(0x80+0x40+add);
        write_data(0x30+shi);
        write_data(0x30+ge);               
}
void init()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x80+0x40);
        for(num=0;num<8;num++)
        {
                write_data(table[num]);
                delay(5);
        }
}

void  time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt0++;       
}
/********************************************************************************/

相关帖子

沙发
dirtwillfly| | 2015-5-26 10:41 | 只看该作者
警告的意思是:有函数定义了但没有被调用

使用特权

评论回复
板凳
binbinmcu|  楼主 | 2015-5-26 12:39 | 只看该作者
dirtwillfly 发表于 2015-5-26 10:41
警告的意思是:有函数定义了但没有被调用

谢版主回复!我也知道是没调用,但是没看懂哪出现问题。这是另一个程序,完全相同,但这个是能正常运行的。

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LCDRW=P2^5;
sbit LCDRS=P2^6;
sbit LCDE=P2^7;
void write_com(com);
void write_data(dat);
void delay(uint z);
void init();
void write_time(uchar add,uchar shuju);
uchar tt0,num,shi,fen,miao;
uchar code table[]="00:00:00";

void main()
{
        init();
        while(1)
        {
                if(tt0==20)
                {               
                        tt0=0;
                        miao++;
                        if(miao==60)
                        {
                                miao=0;
                                fen++;
                                if(fen==60)
                                {
                                        fen=0;
                                        shi++;
                                        if(shi==24)
                                        {
                                                shi=0;
                                        }
                                        write_time(0,shi);                                                                               
                                }
                                write_time(3,fen);
                        }
                        write_time(6,miao);
                }       
        }       
}

void init()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x80+0x40);
        for(num=0;num<8;num++)
        {
                write_data(table[num]);
                delay(5);
        }               
}

void write_com(com)
{
        LCDRS=0;
        LCDRW=0;
        P0=com;
        delay(5);
        LCDE=1;
        delay(5);
        LCDE=0;
        delay(5);
        LCDRS=1;
        LCDRW=1;
}

void write_data(dat)
{
        LCDRS=1;
        LCDRW=0;
        P0=dat;
        delay(5);
        LCDE=1;
        delay(5);
        LCDE=0;
        delay(5);
        LCDRS=0;
        LCDRW=1;
}

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt0++;       
}

void write_time(uchar add,uchar shuju)
{
        uchar shi,ge;
        shi=shuju/10;
        ge=shuju%10;
        write_com(0x80+0x40+add);
        write_data(0x30+shi);
        write_data(0x30+ge);               
}

使用特权

评论回复
地板
binbinmcu|  楼主 | 2015-5-26 17:34 | 只看该作者
问题已解决!

使用特权

评论回复
5
dirtwillfly| | 2015-5-27 08:59 | 只看该作者

解决了就好

使用特权

评论回复
6
蹁跹123| | 2016-11-27 19:58 | 只看该作者
能解释一下那个0x30是什么意思吗,谢谢

使用特权

评论回复
7
零三翟邢止胃| | 2019-3-30 10:12 | 只看该作者
能解释一下那个0x30是什么意思吗?

使用特权

评论回复
评论
dirtwillfly 2019-4-2 23:16 回复TA
这个要结合具体的硬件连接来看 
8
tianxj01| | 2019-4-3 08:49 | 只看该作者
WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
给你一个实际意义上面的翻译吧
警告:第16行下面的程序不会运行。大概意思就是这样。

再去看你的程序第16行是
while(1);
下面的程序确实不能得到执行,到这一行死循环了
{.............}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝