F
flystehu
Guest
Hullo,
Ako ay trying sa ipakita ang karakter ng mga pasadyang sa LCD gumagamit ng PIC 16F877.
Ang compiler ako gamit ay IAR.
Kapag ako ay sumulat ng libro, ito ay ok.Hewever, kapag gumagawa ng mga programa at gumawa ng ang. Hex.
May lumapit out, sinasabi:
Ang pagsasagawa ng target Release ...
Pag-ugnay ...
Error [e104]: Nabigong upang magkasya ang lahat ng segment sa tinukoy na mga saklaw.Problema sa natuklasan sa segment OVERLAY0.Hindi na lugar block 3 (s) (0x95 byte (s) total) sa 0x5a byte (s) ng memorya.Ang problema sa naganap habang ang pagproseso ng segment na utos ng pagkakalagay "-P (DATA) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", kung saan sa sandali ng paglalagay ng magagamit na memorya ng mga saklaw ay "20-79"
Kabuuang bilang ng mga error: 1
Kabuuang bilang ng babala: 0
Kahit sino ay maaaring makatulong sa akin ituro kung paano ayusin ang mga error?
ito ay dahil sa ang panloob na memorya ng PIC ay tatakbo sa labas?
//------------------------------------------------ -----
magpawalang-bisa load_CGRAM_1 (int * p)
(
int ako;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
magpawalang-bisa load_CGRAM_2 (int * p)
(
int ako;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
magpawalang-bisa 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); / / space
lcd_putch (0x20); / / space
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
magpawalang-bisa pangunahing ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x01, 0x00, 0x07, 0x01, 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, 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);
habang (1) ()
)
Ako ay trying sa ipakita ang karakter ng mga pasadyang sa LCD gumagamit ng PIC 16F877.
Ang compiler ako gamit ay IAR.
Kapag ako ay sumulat ng libro, ito ay ok.Hewever, kapag gumagawa ng mga programa at gumawa ng ang. Hex.
May lumapit out, sinasabi:
Ang pagsasagawa ng target Release ...
Pag-ugnay ...
Error [e104]: Nabigong upang magkasya ang lahat ng segment sa tinukoy na mga saklaw.Problema sa natuklasan sa segment OVERLAY0.Hindi na lugar block 3 (s) (0x95 byte (s) total) sa 0x5a byte (s) ng memorya.Ang problema sa naganap habang ang pagproseso ng segment na utos ng pagkakalagay "-P (DATA) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20-07F", kung saan sa sandali ng paglalagay ng magagamit na memorya ng mga saklaw ay "20-79"
Kabuuang bilang ng mga error: 1
Kabuuang bilang ng babala: 0
Kahit sino ay maaaring makatulong sa akin ituro kung paano ayusin ang mga error?
ito ay dahil sa ang panloob na memorya ng PIC ay tatakbo sa labas?
//------------------------------------------------ -----
magpawalang-bisa load_CGRAM_1 (int * p)
(
int ako;
LCD_RS = 0;
lcd_write (0x40);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ -----
magpawalang-bisa load_CGRAM_2 (int * p)
(
int ako;
LCD_RS = 0;
lcd_write (0x60);
LCD_RS = 1;
for (i = 0; i <32; i )
lcd_write (p );
)
//------------------------------------------------ ----------------
magpawalang-bisa 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); / / space
lcd_putch (0x20); / / space
lcd_putch (code3);
lcd_putch (code4);
)
//------------------------------------------------ ----------------
magpawalang-bisa pangunahing ()
(
int chinese_character_matrix_1 [32] =
(
0x02, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04, 0x04,
0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x1f, 0x15,
0x01, 0x00, 0x07, 0x01, 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, 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);
habang (1) ()
)