打印

有的语句不执行的呢

[复制链接]
489|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lium|  楼主 | 2021-4-12 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在做仿真调试时,怎么有的语句它不执行的呢,编译时也没有提示出错

使用特权

评论回复
沙发
supernan| | 2021-4-12 18:10 | 只看该作者

可能和编译优化级别有关系

使用特权

评论回复
板凳
hanwe| | 2021-4-12 18:11 | 只看该作者
哪条语句不执行

使用特权

评论回复
地板
shimx| | 2021-4-12 18:13 | 只看该作者
优化掉了

使用特权

评论回复
5
午夜粪车| | 2021-4-12 18:15 | 只看该作者
降低优化等级也不行

使用特权

评论回复
6
llia| | 2021-4-12 18:17 | 只看该作者

整合优化到公共部分去了

使用特权

评论回复
7
wangpe| | 2021-4-12 18:18 | 只看该作者
把优化关掉试试看

使用特权

评论回复
8
lium|  楼主 | 2021-4-12 18:20 | 只看该作者
怎么操作才可以关掉优化呢?

使用特权

评论回复
9
stly| | 2021-4-12 18:22 | 只看该作者
源程序看看

使用特权

评论回复
10
wangzsa| | 2021-4-12 18:28 | 只看该作者
sec的值不会变的,不知道怎么回事?

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P1^0;
sbit rw=P1^1;
sbit ne=P1^2;
uchar code table[]="0123456789:";        
uchar num,sec,tcnt,min,h;
void delay_lcd(uchar a)
{
        uchar x,y;
        for(x=a;x>0;x--)
                for(y=110;y>0;y--)
                {}
        
}


void init_lcd()
{
               
        ne=0;
        write_lcdcom(0x38);
        write_lcdcom(0x0c);
        write_lcdcom(0x06);
        write_lcdcom(0x01);

}

void write_lcddata(uchar date)
{  
        rs=1;
        rw=0;
        P2=date;
        delay_lcd(5);
        ne=1;
        delay_lcd(5);        
        ne=0;

               
}


void write_lcdcom(uchar com)
{
                        
        rs=0;
        rw=0;
        P2=com;
        delay_lcd(5);
        ne=1;
        delay_lcd(5);
        ne=0;

}
void tim()
{
                uchar h,min,sec;
        if(tcnt==20)
        {
                tcnt=0;
                sec++;                        
        
                if(sec==60)
                        {
                                sec=0;
                                min++ ;
                                if(min==60)
                                {
                                        min=0;
                                        h++;
                                        if(h==24)
                                        h=0;

                                }
                        }        
               
        }
}

void display(uchar shi,ge)
{
        write_lcdcom(0x80+0x0a);
        write_lcddata(table[ge]);
        write_lcdcom(0x80+0x09);
        write_lcddata(table[shi]);
}

/*void display(uchar h_ch,uchar h_ge,uchar minsh_a,uchar minge_a,uchar sh_a,uchar ge_a)
{
                 
        write_lcdcom(0x80+0x0a);
        write_lcddata(table[ge_a]);
        write_lcdcom(0x80+0x09);
        write_lcddata(table[sh_a]);
               
        write_lcdcom(0x80+0x07);
        write_lcddata(table[minge_a]);
        write_lcdcom(0x80+0x06);
        write_lcddata(table[minsh_a]);

        write_lcdcom(0x80+0x04);
        write_lcddata(table[h_ge]);
        write_lcdcom(0x80+0x03);
        write_lcddata(table[h_ch]);

} */

void main()
{
        

        init_lcd();
        write_lcdcom(0x80+0x08);
        write_lcddata(table[10]);
        write_lcdcom(0x80+0x05);
        write_lcddata(table[10]);


        TMOD=0X01;
        
        TH0=(65535-50000)/255;
        TL0=(65535-50000)%255;
        ET0=1;
        EA=1;
        TR0=1;
               
        while(1)
                {
//                        display(h/10,h%10,min/10,min%10,sec/10,sec%10);
                        tim();
                        display(sec/10,sec%10);
                }
        }

void t0()interrupt 1
{

        TH0=(65535-50000)/255;
        TL0=(65535-50000)%255;
        tcnt++;
        
}

使用特权

评论回复
11
wangzsa| | 2021-4-12 18:29 | 只看该作者
只要KEIL软仿真的测试结果正确无误就可, 没必要纠缠绿色执行程序色标, KEIL IDE也不是百分百准确无误,我用KEIL3也一样, 不影响软仿真测试结果

使用特权

评论回复
12
huwr| | 2021-4-12 18:32 | 只看该作者
sec局部变量与全局变量重名了,优先使用局部变量

使用特权

评论回复
13
lium|  楼主 | 2021-4-12 18:33 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

915

主题

9578

帖子

3

粉丝