单片机/MCU论坛
直播中

PeterLin

13年用户 104经验值
擅长:可编程逻辑
私信 关注
[问答]

注释的很详细,麻烦高手帮我看看这个warning是什么意思?

warning是这个
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_DISPLAY?3_5_1
Program Size: data=19.0 xdata=0 code=406


#include
#define uint unsigned int
                                                                 
//声明U1锁存器,U2锁存器
***it dula=P2^6;
***it wela=P2^7;
***it led=P1;

//定义显示数字编码
uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x51,0x79,0x71};

//定义变量
int num0,num1,num,shi,ge;

//定义定时器T0
void T0_time() interrupt 1
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num0++;
}

//定义定时器T1
void T1_time() interrupt 3
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num1++;
}

//定义显示函数
void display(uint shi,uint ge)
{
        dula=1;
        P0=table[shi];
        dula=0;
        //消影
        P0=0xff;
       
        wela=1;
        P0=0xfe;
        wela=0;

        dula=1;
        P0=table[ge];
        dula=0xfd;
        //消影
        P0=0xff;

        wela=1;
        P0=0xfd;
        wela=0;
                       
}

//主函数
void main()
{
        TMOD=0x01;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET0=1;
        ET1=1;
        TR0=1;
        TR1=1;
       
        while(1)
        {
                if(num0==4)
                        num0=0;
                        led=~led;
               
                if(num1==20)
                        num1=0;
                        num++;
                        if(num==60)
                                num=0;
                        else
                                shi=num/10;
                                ge=num%10;
        }
       
        while(1)
        {
                display(shi,ge);
        }       
}





回帖(8)

PeterLin

2012-11-3 21:37:40
顶起来
举报

vvg

2012-11-3 23:36:56
这个涉及到单片机的内存优化哦,有点复杂的
1 举报

PeterLin

2012-11-4 08:28:13
那应该怎么修改呢?
举报

姜小文

2012-11-4 08:32:00
#include
#define uint unsigned int
                                                                 
//声明U1锁存器,U2锁存器
***it dula=P2^6;
***it wela=P2^7;
***it led=P1;

//定义显示数字编码
uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x51,0x79,0x71};

//定义变量
int num0,num1,num,shi,ge;

//定义定时器T0
void T0_time() interrupt 1
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num0++;
}

//定义定时器T1
void T1_time() interrupt 3
{
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num1++;
}

//定义显示函数
void display()
{
        dula=1;
        P0=table[shi];
        dula=0;
        //消影
        P0=0xff;
        
        wela=1;
        P0=0xfe;
        wela=0;

        dula=1;
        P0=table[ge];
        dula=0xfd;
        //消影
        P0=0xff;

        wela=1;
        P0=0xfd;
        wela=0;
                        
}

//主函数
void main()
{
        TMOD=0x01;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET0=1;
        ET1=1;
        TR0=1;
        TR1=1;
        
        while(1)
        {
                if(num0==4)
                        num0=0;
                        led=~led;
               
                if(num1==20)
                        num1=0;
                        num++;
                        if(num==60)
                                num=0;
                        else
                                shi=num/10;
                                ge=num%10;
                    display();

        }
         
}
PCB打样找华强 http://www.hqpcb.com/3 样板2天出货
举报

姜小文

2012-11-4 08:33:09
就是你的display();执行不到。
1 举报
  • PeterLin: 为什么放在while里面就执行不到了呢?

王钢力

2012-11-4 11:20:47
顺序执行,在前一个while已经死循环了,不能执行到你第二个while了
举报

lstcspring

2012-11-4 12:02:38
有没有执行不到的程序,还有if条件下的括号加起
举报

张三

2012-11-4 17:10:54
第二个while(1)不可能执行到,代码写的不规范
举报

更多回帖

发帖
×
20
完善资料,
赚取积分