F
flystehu
Guest
Hullo,
Ik probeer weer te geven op maat met behulp van tekens op het LCD PIC 16F877.
De compiler die ik gebruik is IAR.
Toen ik compileren, is het ok.Hewever, bij het maken van het programma en produceren. Hex.
Een fout komt, zeggende:
Making doelgroep Release ...
Link ...
Fout [e104]: Failed to fit alle segmenten in bepaalde reeksen.Probleem ontdekt in segment OVERLAY0.Niet in staat om 3 blok (s) (0x95 byte (s) totaal) in 0x5a byte (s) van het geheugen.Het probleem opgetreden bij het verwerken van het segment plaatsing commando "-P (gegevens) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", waar op het moment van plaatsing van het beschikbare geheugen reeksen zijn "20-79"
Totaal aantal fouten: 1
Totaal aantal waarschuwingen: 0
Iedereen kan me helpen herinneren hoe verhelp de fout?
Is het omdat het interne geheugen van de PIC is uitgeput?
//------------------------------------------------ -----
void load_CGRAM_1 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
void load_CGRAM_2 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
void display_CGRAM (int Code1, int code2, int code3, int code4)
(
LCD_RS = 0;
lcd_write (0x80);
lcd_putch (Code1);
lcd_putch (code2);
lcd_putch (0x20); / / ruimte
lcd_putch (0x20); / / ruimte
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
void main ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
Waarde 0x01, 0x00, 0x07, waarde 0x01, waarde 0x01, 0x03, 0x00, 0x07,
0x18, 0x10, 0x1e, 0x08, 0x18, 0x1c, 0x10, 0x1e,
);
int chinese_character_matrix_2 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x04, 0x04, 0x10, 0x08, 0x00, 0x05, 0x09, 0x13,
0x0e, 0x0a, 0x0e, 0x0a, 0x0e, 0x1f, 0x15, 0x15,
);
int chinese_character_matrix_3 [32] =
(
0x00, waarde 0x01, 0x04, 0x02, 0x0a, 0x0a, 0x09, 0x08,
0x00, 0x00, 0x08, 0x00, 0x02, 0x02, 0x02, 0x1e,
0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x0b, 0x11,
0x04, 0x0f, 0x0a, 0x0a, 0x0f, 0x0a, 0x0a, 0x17,
);
int chinese_character_matrix_4 [32] =
(
0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0c, 0x07,
0x0e, 0x00, 0x1f, 0x08, 0x0a, 0x0f, 0x00, 0x1f,
0x0e, 0x00, 0x1f, 0x08, 0x08, 0x0a, 0x0a, 0x0f,
0x04, 0x04, 0x1f, 0x05, 0x05, 0x05, 0x05, 0x0b,
);iniPort ();
lcd_init ();
load_CGRAM_1 (chinese_character_matrix_1);
load_CGRAM_2 (chinese_character_matrix_2);
display_CGRAM (0x04, 0x05, 0x06, 0x07);
DelayUs (40);
while (1) ()
)
Ik probeer weer te geven op maat met behulp van tekens op het LCD PIC 16F877.
De compiler die ik gebruik is IAR.
Toen ik compileren, is het ok.Hewever, bij het maken van het programma en produceren. Hex.
Een fout komt, zeggende:
Making doelgroep Release ...
Link ...
Fout [e104]: Failed to fit alle segmenten in bepaalde reeksen.Probleem ontdekt in segment OVERLAY0.Niet in staat om 3 blok (s) (0x95 byte (s) totaal) in 0x5a byte (s) van het geheugen.Het probleem opgetreden bij het verwerken van het segment plaatsing commando "-P (gegevens) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", waar op het moment van plaatsing van het beschikbare geheugen reeksen zijn "20-79"
Totaal aantal fouten: 1
Totaal aantal waarschuwingen: 0
Iedereen kan me helpen herinneren hoe verhelp de fout?
Is het omdat het interne geheugen van de PIC is uitgeput?
//------------------------------------------------ -----
void load_CGRAM_1 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
void load_CGRAM_2 (int * p)
(
int i;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
void display_CGRAM (int Code1, int code2, int code3, int code4)
(
LCD_RS = 0;
lcd_write (0x80);
lcd_putch (Code1);
lcd_putch (code2);
lcd_putch (0x20); / / ruimte
lcd_putch (0x20); / / ruimte
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
void main ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
Waarde 0x01, 0x00, 0x07, waarde 0x01, waarde 0x01, 0x03, 0x00, 0x07,
0x18, 0x10, 0x1e, 0x08, 0x18, 0x1c, 0x10, 0x1e,
);
int chinese_character_matrix_2 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x04, 0x04, 0x10, 0x08, 0x00, 0x05, 0x09, 0x13,
0x0e, 0x0a, 0x0e, 0x0a, 0x0e, 0x1f, 0x15, 0x15,
);
int chinese_character_matrix_3 [32] =
(
0x00, waarde 0x01, 0x04, 0x02, 0x0a, 0x0a, 0x09, 0x08,
0x00, 0x00, 0x08, 0x00, 0x02, 0x02, 0x02, 0x1e,
0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x0b, 0x11,
0x04, 0x0f, 0x0a, 0x0a, 0x0f, 0x0a, 0x0a, 0x17,
);
int chinese_character_matrix_4 [32] =
(
0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0c, 0x07,
0x0e, 0x00, 0x1f, 0x08, 0x0a, 0x0f, 0x00, 0x1f,
0x0e, 0x00, 0x1f, 0x08, 0x08, 0x0a, 0x0a, 0x0f,
0x04, 0x04, 0x1f, 0x05, 0x05, 0x05, 0x05, 0x0b,
);iniPort ();
lcd_init ();
load_CGRAM_1 (chinese_character_matrix_1);
load_CGRAM_2 (chinese_character_matrix_2);
display_CGRAM (0x04, 0x05, 0x06, 0x07);
DelayUs (40);
while (1) ()
)