Custom char LCD displa gamit PIC16F877

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) ()
)

 
instead of int
.

Alam na ba isaalang-alang na idedeklara ang iyong arrays bilang hindi linagdaan char
sa halip ng int.Ito ay maghati ng ROM consumption at sa tingin ko walang pangangailangan para sa integers., so that they are used from ROM and don't get copied to the RAM.

Bukod dito dapat mong ipahayag ang arrays bilang const,
upang ang mga ito ay ginagamit mula sa ROM at hindi makakuha ng kinopya sa RAM.
Halimbawa:
const hindi linagdaan char chinese_character_matrix_1 [32] =
(
...
)

(Hindi kailanman ginamit IAR, kaya hindi sigurado kung ang mga syntax ay tama para sa IAR -> RTFM)

 
Salamat.Ako ipinahayag ang array bilang const hindi linagdaan char at ilagay ito sa labas ng main function.Ito ay gumagana ganap na ganap!

M! K wrote:

instead of int
.
Alam na ba isaalang-alang na idedeklara ang iyong arrays bilang hindi linagdaan char
sa halip ng int.

Ito ay maghati ng ROM consumption at sa tingin ko walang pangangailangan para sa integers.

, so that they are used from ROM and don't get copied to the RAM.
Bukod dito dapat mong ipahayag ang arrays bilang const,
upang ang mga ito ay ginagamit mula sa ROM at hindi makakuha ng kinopya sa RAM.

Halimbawa:

const hindi linagdaan char chinese_character_matrix_1 [32] =

(

...

)(Hindi kailanman ginamit IAR, kaya hindi sigurado kung ang mga syntax ay tama para sa IAR -> RTFM)
 

Welcome to EDABoard.com

Sponsor

Back
Top