c语言,程序结构的问题

2019-03-24 17:44发布

本帖最后由 brain发烧友 于 2016-3-13 18:29 编辑

哪位大神帮我看看,if内的程序怎么占用了100多个字节,感觉有点不正常。

if(a==6)
                {
                          lcd_mesg_zhongwen(ziku,0,10,3,3);                 //号
                          lcd_mesg_zhongwen(ziku,0,10,3,4);                 //柜
                         lcd_mesg_zhongwen(ziku,0,10,2,2);                 //号
                          lcd_mesg_zhongwen(ziku,0,12,2,3);                 //门
                          lcd_mesg_zhongwen(ziku,0,14,2,4);                 //已
                          lcd_mesg_zhongwen(ziku,0,16,2,5);                 //打
                          lcd_mesg_zhongwen(ziku,0,17,2,6);                 //开
                }

void lcd_mesg_zhongwen(uchar code *adder1,uchar m,uchar n,uchar x,uchar y) // m=1显示一行,m=0单字显示
{
            uchar i,j;
            if(m==1)
                        {
                                set_pox(x,y);
                                delay(100);
                                for(j=0;j<16;j++)
                                {
                                                TransferData(*(adder1+n));
                                }
                                m=0;
                  }
                        else
                        {
                                        set_pox(x,y);
                                        delay(100);
                                        for(i=0;i<2;i++)
                                        {
                                                        TransferData(*(adder1+n));
                                                        adder1++;
                                        }
                        }

}

用如下的方式写,怎么if语句内的也占用rom,按道理我的数据都是写进同一个数组,所占的字节应该只有64个字节,增加一个if语句应该也就几个字节,为什么还是有100多个字节,多个if语句就好几百个字节了。我们公司的同事用汇编写这种代码就不会占用这么多字节,只是占其中一个if语句的空间。有大神了解这种情况吗?

void dis_first(uchar a)                                               //                  
{
         uchar i;
         for(i=0;i<16;i++)
        {
                dis_buff=ziku[140];                                          //*  
        }       
         dis_buff[16]=ziku[140];dis_buff[17]=ziku[143];
         dis_buff[18]=ziku[143];dis_buff[19]=ziku[143];
         dis_buff[20]=ziku[120];dis_buff[21]=ziku[121];
         dis_buff[22]=ziku[122];dis_buff[23]=ziku[123];
         dis_buff[24]=ziku[124];dis_buff[25]=ziku[125];
         dis_buff[26]=ziku[126];dis_buff[27]=ziku[127];
         dis_buff[28]=ziku[143];dis_buff[29]=ziku[143];
         dis_buff[30]=ziku[143];dis_buff[31]=ziku[140];
       
         if(a==1)
         {
                 dis_buff[32]=ziku[140];dis_buff[33]=ziku[143];              
                 dis_buff[34]=ziku[54];dis_buff[35]=ziku[55];                 //I               
                 dis_buff[36]=ziku[56];dis_buff[37]=ziku[57];                 //C               
                 dis_buff[38]=ziku[32];dis_buff[39]=ziku[33];                 //卡
                 dis_buff[40]=ziku[68];dis_buff[41]=ziku[69];                 //智
                 dis_buff[42]=ziku[70];dis_buff[43]=ziku[71];                 //能
                 dis_buff[44]=ziku[72];dis_buff[45]=ziku[73];                 //柜
                 dis_buff[46]=ziku[143];dis_buff[47]=ziku[140];
         }
         
         if(a==2)
         {
           dis_buff[32]=ziku[140];dis_buff[33]=ziku[143];              
                 dis_buff[34]=ziku[58];dis_buff[35]=ziku[59];                 //指              
                 dis_buff[36]=ziku[64];dis_buff[37]=ziku[65];                 //静               
                 dis_buff[38]=ziku[66];dis_buff[39]=ziku[67];                 //脉
                 dis_buff[40]=ziku[68];dis_buff[41]=ziku[69];                 //智
                 dis_buff[42]=ziku[70];dis_buff[43]=ziku[71];                 //能
                 dis_buff[44]=ziku[72];dis_buff[45]=ziku[73];                 //柜
                 dis_buff[46]=ziku[143];dis_buff[47]=ziku[140];
         
         }
           if(a==3)
         {
           dis_buff[32]=ziku[140];dis_buff[33]=ziku[143];              
                 dis_buff[34]=ziku[148];dis_buff[35]=ziku[149];               //三              
                 dis_buff[36]=ziku[150];dis_buff[37]=ziku[151];               //合              
                 dis_buff[38]=ziku[152];dis_buff[39]=ziku[153];               //一
                 dis_buff[40]=ziku[68];dis_buff[41]=ziku[69];                 //智
                 dis_buff[42]=ziku[70];dis_buff[43]=ziku[71];                 //能
                 dis_buff[44]=ziku[72];dis_buff[45]=ziku[73];                 //柜
                 dis_buff[46]=ziku[143];dis_buff[47]=ziku[140];
         }
          if(a==4)
         {
           dis_buff[32]=ziku[140];dis_buff[33]=ziku[143];              
                 dis_buff[34]=ziku[58];dis_buff[35]=ziku[59];                 //指              
                 dis_buff[36]=ziku[60];dis_buff[37]=ziku[61];                 //纹              
                 dis_buff[38]=ziku[68];dis_buff[39]=ziku[69];                 //智
                 dis_buff[40]=ziku[70];dis_buff[41]=ziku[71];                 //能
                 dis_buff[42]=ziku[72];dis_buff[43]=ziku[73];                 //柜
                 dis_buff[44]=ziku[136];dis_buff[45]=ziku[137];               //!
                 dis_buff[46]=ziku[143];dis_buff[47]=ziku[140];
         }
           if(a==5)
         {
           dis_buff[32]=ziku[140];dis_buff[33]=ziku[143];              
                 dis_buff[34]=ziku[50];dis_buff[35]=ziku[51];                 //密            
                 dis_buff[36]=ziku[52];dis_buff[37]=ziku[53];                 //码            
                 dis_buff[38]=ziku[68];dis_buff[39]=ziku[69];                 //智
                 dis_buff[40]=ziku[70];dis_buff[41]=ziku[71];                 //能
                 dis_buff[42]=ziku[72];dis_buff[43]=ziku[73];                 //柜
                 dis_buff[44]=ziku[136];dis_buff[45]=ziku[137];               //!
                 dis_buff[46]=ziku[143];dis_buff[47]=ziku[140];
         }
         
                 for(i=48;i<64;i++)
        {
     dis_buff=ziku[140];                                 //*
        }       
        lcd_mesg(dis_buff,1,0);
}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。