PDA

View Full Version : help !!! lỗi Out Of ROM


qloi
07-08-2012, 01:59 PM
mình viết code cho PIC16f59 thì bị lỗi "out of ROM,the segment or program í tô large Main".mặc dù ROM còn rất nhiều(xóa bớt 1 hàm thì còn tới 78% trong khi hàm này tương đương hàm trên) . Mọi người ai biết cách giải quyết chỉ với?


#include <16f59.h>
#device *=8
#fuses xt
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

int1 dat[20];
int i,j;

#bit L0 = 0x06.0
#bit L1 = 0x06.1
#bit L2 = 0x06.2
#bit L3 = 0x06.3
#bit L4 = 0x06.4
#bit L5 = 0x06.5
#bit L6 = 0x06.6
#bit L7 = 0x06.7

#bit L8 = 0x07.0
#bit L9 = 0x07.1
#bit L10 = 0x07.2
#bit L11 = 0x07.3
#bit L12 = 0x07.4
#bit L13 = 0x07.5
#bit L14 = 0x07.6
#bit L15 = 0x07.7

#bit L16 = 0x08.0
#bit L17 = 0x08.1
#bit L18 = 0x08.2
#bit L19 = 0x08.3

void out_dat(char del)
{
L0 = dat[0];
L1 = dat[1];
L2 = dat[2];
L3 = dat[3];
L4 = dat[4];
L5 = dat[5];
L6 = dat[6];
L7 = dat[7];
L8 = dat[8];
L9 = dat[9];
L10 = dat[10];
L11 = dat[11];
L12 = dat[12];
L13 = dat[13];
L14 = dat[14];
L15 = dat[15];
L16 = dat[16];
L17 = dat[17];
L18 = dat[18];
L19 = dat[19];
delay_ms(del);
}
void spl_bit(int32 data)
{
for(i=0;i<20;i++)
{
dat[i] = data >> i&1;;
}
}

/////////////////kieu 1///////////////
void l1()
{
spl_bit(0x00000400);
out_dat(100);
spl_bit(0x00000E00);
out_dat(100);
spl_bit(0x00001F00);
out_dat(100);
spl_bit(0x00003F80);
out_dat(100);
spl_bit(0x00007FC0);
out_dat(100);
spl_bit(0x0000FFE0);
out_dat(100);
spl_bit(0x0001FFF0);
out_dat(100);
spl_bit(0x0003FFF8);
out_dat(100);
spl_bit(0x0007FFFC);
out_dat(100);
spl_bit(0x000FFFFE);
out_dat(100);;
spl_bit(0x000FFFFF);
out_dat(100);

//frame 2
spl_bit(0x000FFBFF);
out_dat(100);
spl_bit(0x000FF1FF);
out_dat(100);
spl_bit(0x000FE0FF);
out_dat(100);
spl_bit(0x000FC07F);
out_dat(100);
spl_bit(0x000F803F);
out_dat(100);
spl_bit(0x000F001F);
out_dat(100);
spl_bit(0x000E000F);
out_dat(100);
spl_bit(0x000C0007);
out_dat(100);
spl_bit(0x00080003);
out_dat(100);
spl_bit(0x00000001);
out_dat(100);
spl_bit(0);
out_dat(100);
}

////////////////kieu 2////////////////
void l2()
{
spl_bit(0x00000401);
out_dat(100);
spl_bit(0x00080601);
out_dat(100);
spl_bit(0x000C0701);
out_dat(100);
spl_bit(0x000E0781);
out_dat(100);
spl_bit(0x000F07C1);
out_dat(100);
spl_bit(0x000F87E1);
out_dat(100);
spl_bit(0x000FC7F1);
out_dat(100);
spl_bit(0x000FE7F9);
out_dat(100);
spl_bit(0x000FF7FD);
out_dat(100);
spl_bit(0x000FFFFF);
out_dat(100);

//frame 2
spl_bit(0x000FFBFE);
out_dat(100);
spl_bit(0x0007F9FE);
out_dat(100);
spl_bit(0x0003F8FE);
out_dat(100);
spl_bit(0x0001F87E);
out_dat(100);
spl_bit(0x0000F83E);
out_dat(100);
spl_bit(0x0000781E);
out_dat(100);
spl_bit(0x0000380E);
out_dat(100);
spl_bit(0x00001806);
out_dat(100);
spl_bit(0x00000802);
out_dat(100);
spl_bit(0);
out_dat(100);

}
/////////////kieu 3////////////////
void l3()
{
spl_bit(0xFFFFFFFF);
out_dat(100);
spl_bit(0);
out_dat(100);
}
////////////////////////////////////
void main()
{
set_tris_b(0);
set_tris_c(0);
set_tris_d(0);
while(1)
{
for(j=0;j<5;j++) {l1();}
for(j=0;j<5;j++) {l2();}
for(j=0;j<15;j++) {l3();}
}
}