컨트롤러"사용자

F

flystehu

Guest
안녕하세요,
난 LCD에의 PIC 16F877를 사용하여 사용자 정의 문자를 표시 노력하고 있어요.
내가 사용하고 컴파일러는 IAR입니다.
컴파 일할 때, 그것을 확인을 누릅니다.Hewever 때, 프로그램을 만들고. 진수 생산하고있습니다.
오류라고 나오는 :

출시 목표를 만들기 ...
링크 ...
오류 [e104 : 실패 지정된 범위에 모든 세그먼트에 맞게].문제는 세그먼트 OVERLAY0에서 발견했다.3 블록의 메모리를 0x5a 바이트 (들에 (들) (0x95 바이트 (들)의 총)) 장소 수없습니다.반면 "세그먼트를 배치 명령을 처리하는 문제가 발생 - P는 (데이터) OVERLAY0, WRKSEG, BANK0_I, BANK0_Z, BANK0_N = 20 - 07F", 어디에 배치 순간에 사용 가능한 메모리 범위를 "20-79"했다

오류의 전체 글수 : 1
경고의 총 숫자 : 0

사람은 어떻게 오류를 해결하기 위해 지적 도와 드릴까요?
왜냐하면은 PIC의 내장 메모리를 실행입니까?

//------------------------------------------------ -----
무효 load_CGRAM_1 (int * p)는
(
int 난;
LCD_RS = 0;
(0x40) lcd_write;
LCD_RS = 1;
위한은 (i = 0; 전 "32; 난 )
(P는 lcd_write [난]);
)
//------------------------------------------------ -----
무효 load_CGRAM_2 (int * p)는
(
int 난;
LCD_RS = 0;
(0x60) lcd_write;
LCD_RS = 1;
위한은 (i = 0; 전 "32; 난 )
(P는 lcd_write [난]);
)
//------------------------------------------------ ----------------
무효 display_CGRAM (int code1, code2 int, int code3, int code4)
(
LCD_RS = 0;
(0x80으로) lcd_write;
lcd_putch (code1);
lcd_putch (code2);

lcd_putch (0x20); / / 공간
lcd_putch (0x20); / / 공간
lcd_putch (code3);
lcd_putch (code4);
)

//------------------------------------------------ ----------------
메인 무효 ()
(
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);
동안 (1) ()
)

 
instead of int
.

혹시 int 서명
대신 숯불로
배열을 선언할 생각 했어.이것은 ROM과 소비를 반으로 줄일 것입니다 그리고 난 거기에 정수에 대한 필요성을 것 같아요., so that they are used from ROM and don't get copied to the RAM.

또한, 그래서 그들이 ROM에서 사용하는 메모리에 복사하지 않습니다 const로
배열을 선언해야합니다.
예 :
const 서명 숯불 chinese_character_matrix_1 [32] =
(
...
)

(절대, 그럼 만약 IAR에 대한 구문이 올바른지 확실하지 IAR 사용 - "RTFM)

 
감사합니다.내가 const 서명 숯불로 배열을 선언하고 main 함수를 밖으로 넣어요.그것은 완벽하게 작동합니다!

남! 케이 썼습니다 :

instead of int
.
혹시 int 서명
대신 숯불로
배열을 선언할 생각 했어.
이것은 ROM과 소비를 반으로 줄일 것입니다 그리고 난 거기에 정수에 대한 필요성을 것 같아요.

, so that they are used from ROM and don't get copied to the RAM.
또한, 그래서 그들이 ROM에서 사용하는 메모리에 복사하지 않습니다 const로
배열을 선언해야합니다.

예 :

const 서명 숯불 chinese_character_matrix_1 [32] =

(

...

)(절대, 그럼 만약 IAR에 대한 구문이 올바른지 확실하지 IAR 사용 - "RTFM)
 

Welcome to EDABoard.com

Sponsor

Back
Top