论坛风格切换切换到宽版
  • 4026阅读
  • 3回复

这个编译出错信息是什么意思,求教 [复制链接]

上一主题 下一主题
离线efree
 
发帖
554
只看楼主 倒序阅读 0楼 发表于: 2004-12-07
building lcd.hex...

compiling lcd.c:
command line: "d:\ht-pic\bin\picc.exe -e -16f877 d:\ht-pic\efree\lcd\lcd.c"
d:\ht-pic\efree\lcd\delays.h: 52: unknown pragma romdata (warning)
d:\ht-pic\efree\lcd\delays.h: 52: unknown pragma table=0x1000 (warning)
d:\ht-pic\efree\lcd\lcd.c: 35: unknown pragma romdata (warning)
::undefined symbol: (error)
::_delayms (lcd.obj) (error)
enter picc -help for help
serial number: hcpic-12380
licensed to : team renegade

mplab is unable to find output file "lcd.hex". this may be due to a compile, assemble, or link process failure.

build failed.
离线efree
发帖
554
只看该作者 1楼 发表于: 2004-12-10
'
building lcd.hex...
compiling lcd.c:
command line: "d:\ht-pic\bin\picc.exe -e -16f877 d:\ht-pic\efree\lcd\lcd.c"
d:\ht-pic\efree\lcd\delays.h: 52: unknown pragma romdata (warning)
d:\ht-pic\efree\lcd\delays.h: 52: unknown pragma table=0x1000 (warning)
d:\ht-pic\efree\lcd\lcd.c: 35: unknown pragma romdata (warning)
::undefined symbol: (error)
::_delayms (lcd.obj) (error)
enter picc -help for help
serial number: hcpic-12380
licensed to : team renegade
mplab is unable to find output file "lcd.hex". this may be due to a compile, assemble, or link process failure.
build failed.
'
u                                                           p
离线1259
发帖
373
只看该作者 2楼 发表于: 2004-12-10
把程序贴上来吧。。。。
离线efree
发帖
554
只看该作者 3楼 发表于: 2004-12-13
源程序
#include      "pic1687x.h"
#include      "delays.h"

#pragma romdata table=0x1000
const char table[240]={0x08,0xf8,0x08,0x08,0x08,0x08,0xf0,0x00,
                       0x20,0x3f,0x21,0x01,0x01,0x01,0x00,0x00,//"p",0~15
                       0x00,0x08,0x08,0xf8,0x08,0x08,0x00,0x00,
                       0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,//"i",16~31
                       0xc0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,
                       0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//"c",32~47
                       0x00,0x10,0x10,0xf8,0x00,0x00,0x00,0x00,
                       0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,//"1",48~63
                       0x00,0x70,0x88,0x08,0x00,0x1c,0x22,0x21,//"8"左,64~71
                       0x08,0x88,0x70,0x00,0x21,0x22,0x1c,0x00,//"8"右,72~79
                       0x08,0xf8,0x88,0x88,0xe8,0x08,0x10,0x00,
                       0x20,0x3f,0x20,0x00,0x03,0x00,0x00,0x00,//"f",80~95
                       0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00,
                       0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,//"4",96~111
                       0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00,
                       0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,//"5",112~127
                       0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
                       0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,//"8",128~143
                       0x00,0x10,0x0c,0x04,0x4c,0xb4,0x94,0x05,
                       0xf6,0x04,0x04,0x04,0x14,0x0c,0x04,0x00,
                         0x00,0x82,0x82,0x42,0x42,0x23,0x12,0x0a,
                       0x07,0x0a,0x12,0xe2,0x42,0x02,0x02,0x00,//"实",144~175
                       0x02,0xfa,0x82,0x82,0xfe,0x80,0x40,0x60,
                       0x08,0x04,0x24,0x40,0x3f,0x22,0x2c,0x21,//"验"左,176~191
                       0x58,0x46,0x48,0x50,0x20,0x20,0x20,0x00,
                       0x21,0x2e,0x20,0x30,0x2c,0x23,0x20,0x00,//"验"右,192~207
                       0x10,0x10,0xd0,0xff,0x50,0x90,0x00,0xfe,
                       0x62,0xa2,0x22,0x21,0xa1,0x61,0x00,0x00,
                       0x04,0x03,0x00,0x7f,0x00,0x11,0x0e,0x41,
                       0x20,0x11,0x0a,0x0e,0x31,0x60,0x20,0x00};//"板",208~239      





void      initial()
{
     intcon=0x00;            
     wdtdis;
     adcon1=0x87;           //设置所有与模拟输入共用的引脚为i/o方式
     trise=trisc&0xf0;      //设置rd0,rd1,rd2,rd3为输出
     trisa=trisa&0xfd;      //设置ra1为输出

}


//读液晶显示器状态子程序,行参e代表液晶的边
void      lcdsta1(int      e)
//int      e;
{
     int      e1flag;
     trisc=0xff;                              //设置c口为输入
     while(1)
     {
           if(e==1)
                 {portd=portd|0xf9;      //设置rd2/csa=0,rd3/csb=1,rd0/rw=1,rd1/di=0
                 }
           else      
                 {portd=portd&0xfd;      //设置rd2/csa=1,rd3/csb=0,rd0/rw=1,rd1/di=0      
                 }
           porta=porta|0x02;            //ra1/e=1
           e1flag=portc&0x80;
           porta=porta&0xfd;            //ra1/e=0
           if(e1flag==0x0000)break;
     }
}

//对液晶显示器发指令子程序,行参e代表处理的液晶的边
void trans1(int trans,int e)      //int      trans,e;
{
     lcdsta1(e);
     trisc=0x00;                  //rc为输出
     if(e==1)                        //设置rd2/csa=0,rd3/csb=1,rd0/rw=0,rd1/di=0      
           {portd=portd|0xf8;
           }
     else                              //设置rd2/csa=1,rd3/csb=0,rd0/rw=0,rd1/di=0
           {portd=portd&0xfc;
           }
     portc=trans;
     porta=porta|0x02;      //ra1/e=1
     porta=porta&0xfd;      //ra1/e=0            
}

//对液晶显示器写数据子程序
void      write1(char      write,int      clmadd,int      e)
//int      write,clmadd,e;
{
     trans1(clmadd,e);            //设置列地址
     lcdsta1(e);                        //查询液晶是否为空闲
     trisc=0x00;      //rc为输出
     if(e==1)                        //设置rd2/csa=0,rd3/csb=1,rd0/rw=0,rd1/di=1      
           {portd=portd|0xfa;
           }
     else                              //设置rd2/csa=1,rd3/csb=0,rd0/rw=0,rd1/di=1
           {portd=portd&0xfe;
           }
     portc=write;
     porta=porta|0x02;            //ra1/e=1
     porta=porta&0xfd;            //ra1/e=0
}

//开e边显示子程序
void      disp1(int      e)
//int      e;
{
     int      e1flag;
     while(1)
     {
           trans1(0x03f,e);            //送出控制命令
         lcdsta1(e);                        //判断液晶是否为空闲状态
           trisc=0xff;                        //设置rc为输入
           if(e==1)                  //设置re2/csa=0,ra3/csb=1,re0/rw=1,re1/di=0
                 {portd=portd|0xf9;
                 }
           else                        //设置re2/csa=1,ra3/csb=0,re0/rw=1,re1/di=0
                 {portd=portd&0xfd;
                 }
     porta=porta|0x02;                  //ra1/e=1
     e1flag=portc&0x20;
     porta=porta&0xfd;                  //ra1/e=0
     if(e1flag==0x00)break;                  //如果液晶被打开,则退出循环,否则继续打开
     }
}

//e边清屏子程序
void      clear1(int      e)
//int      e;
{
     int pageadd,pagenum,clmsum;
     for(pagenum=0x08,pageadd=0x0b8;pagenum>0;pagenum--,pageadd++)
       {
           trans1(pageadd,e);            //设置相应的页地址
          for(clmsum=0x40;clmsum<=0x7f;clmsum++)
                 {
                       lcdsta1(e);            //判断液晶空闲状态
                       write1(0x00,clmsum,e);      //送0清屏
                 }
    }
}


//关e边显示子程序
void      disoff1(int      e)
//int      e;
{
     int e1flag;
     while(1)
     {
           trans1(0x3e,e);            //发送控制命令
           lcdsta1(e);                  //判断液晶是否为空闲状态
           trisc=0xff;                  //设置rd为输入
           if(e==1)                  //设置re2/csa=0,ra3/csb=1,re0/rw=1,re1/di=0
                 {portd=portd|0xf9;
                 }
           else                        //设置re2/csa=1,ra3/csb=0,re0/rw=1,re1/di=0
                 {portd=portd&0xfd;
                 }
     porta=porta|0x02;            //ra1/e=1
     e1flag=portd&0x20;
     porta=porta&0xfd;            //ra1/e=0
     if(e1flag==0x20)break;            //如液晶关闭,则推出循环,否则继续关闭
     }
}

//lcd的e边初始化子程序
void      lcd1init(int      e)
{
     disoff1(e);                  //关e区显示
     /*trans1(0x0a4,e);
       trans1(0x0a9,e);  
     trans1(0x0e2,e);  
     trans1(0x0a0,e);*/
       clear1(e);                  //清屏
  lcdsta1(e);                  //判断液晶空闲状态
  disp1(e);                        //开显示
}

//显示"pic18"
display1(int      e,int      pagadd,int      clmadd)
{
     int k,m,n=0;
  char temp;
     trans1(0x0c0,e);
       trans1(pagadd,e);
  for(m=0;m<4;m++)
     {  
           for(k=0;k<8;k++,clmadd++)
             {
               temp=table[k+n];
               write1(temp,clmadd,e);
          }
           clmadd=clmadd-8;
        pagadd=pagadd+1;
        trans1(pagadd,e);
        for(;k<16;k++,clmadd++)
               {
                     temp=table[k+n];
                     write1(temp,clmadd,e);
               }
           trans1(0x0c0,e);
           pagadd=pagadd-1;
       trans1(pagadd,e);
           n=n+16;
     }
     for(k=0;k<4;k++,clmadd++)
       {
         temp=table[k+64];
         write1(temp,clmadd,e);
    }
     clmadd=clmadd-4;
  pagadd=pagadd+1;
  trans1(pagadd,e);
  for(;k<8;k++,clmadd++)
         {
               temp=table[k+64];
               write1(temp,clmadd,e);
         }
}

//显示"8f458"
display2(int      e,int      pagadd,int      clmadd)
{
     int k,m,n=80;
  char temp;
  trans1(0x0c0,e);
  trans1(pagadd,e);
     for(k=0;k<4;k++,clmadd++)
       {
         temp=table[k+72];
         write1(temp,clmadd,e);
    }
     clmadd=clmadd-4;
  pagadd=pagadd+1;
  trans1(pagadd,e);
  for(;k<8;k++,clmadd++)
         {
               temp=table[k+72];
               write1(temp,clmadd,e);
         }
 
     for(m=0;m<4;m++)
     {
           trans1(0x0c0,e);
           pagadd=pagadd-1;
       trans1(pagadd,e);      
           for(k=0;k<8;k++,clmadd++)
             {
               temp=table[k+n];
               write1(temp,clmadd,e);
          }
           clmadd=clmadd-8;
        pagadd=pagadd+1;
        trans1(pagadd,e);
        for(;k<16;k++,clmadd++)
               {
                     temp=table[k+n];
                     write1(temp,clmadd,e);
               }
           n=n+16;
     }

}

//显示"实验"
display3(int      e,int      pagadd,int      clmadd)
{
     int k;
  char temp;
  trans1(0x0c0,e);            //从0行开始显示
  trans1(pagadd,e);
  for(k=0;k<16;k++,clmadd++)
       {  
                 temp=table[k+144];
         write1(temp,clmadd,e);
         }
     clmadd=clmadd-16;
  pagadd=pagadd+1;
  trans1(pagadd,e);
  for(;k<32;k++,clmadd++)
         {
                 temp=table[k+144];
               write1(temp,clmadd,e);
    }
     trans1(0x0c0,e);
     pagadd=pagadd-1;
  trans1(pagadd,e);
     for(k=0;k<8;k++,clmadd++)
        {
          temp=table[k+176];
          write1(temp,clmadd,e);
        }
     clmadd=clmadd-8;
     pagadd=pagadd+1;
     trans1(pagadd,e);
     for(;k<16;k++,clmadd++)
        {
               temp=table[k+176];
               write1(temp,clmadd,e);
        }
}

//显示"验板"
display4(int      e,int      pagadd,int      clmadd)
{
     int k;
  char temp;
  trans1(0x0c0,e);            //从0行开始显示
  trans1(pagadd,e);
     for(k=0;k<8;k++,clmadd++)
        {
          temp=table[k+192];
          write1(temp,clmadd,e);
        }
     clmadd=clmadd-8;
     pagadd=pagadd+1;
     trans1(pagadd,e);
     for(;k<16;k++,clmadd++)
        {
               temp=table[k+192];
               write1(temp,clmadd,e);
        }
     trans1(0x0c0,e);
     pagadd=pagadd-1;
  trans1(pagadd,e);
  for(k=0;k<16;k++,clmadd++)
       {  
                 temp=table[k+208];
         write1(temp,clmadd,e);
         }
     clmadd=clmadd-16;
  pagadd=pagadd+1;
  trans1(pagadd,e);
  for(;k<32;k++,clmadd++)
         {
                 temp=table[k+208];
               write1(temp,clmadd,e);
    }
}

//主函数
main()
{  
     int      j;

     for(j=0;j<5;j++)
     {      
           initial();
       lcd1init(1);
             lcd1init(2);

       display1(1,0xbc-j,0x5c);
       display2(2,0xbc-j,0x40);
       display3(1,0xbe-j,0x68);
           display4(2,0xbe-j,0x40);

           delayms(255);                  /*暂停 (255 * 10,000 cycles) */
     }
}