티스토리 뷰

코드 메모리를 LCD 에 표시하기 (헥사파일 설명)

EngineISP 를 사용하여 헥사 파일을 열면 다음과 같은 화면이 나옵니다. 헥사 파일의 각 줄은 콜른(":") 으로 시작됩니다. 다음에 있는 두 수는 (03) 한줄에 있는 데이터의 수를 나타냅니다. 즉 첫줄에 다운 할 데이터의 수가 세개라는 것입니다. 다음에 있는 네 수는 (0000) 데이터가 들어갈 번지를 나타냅니다. 다음 두수는 (00) 레코드 형식을 나타냅니다. 00 은 정상적인 레코드를 나타내고 01 은 마지막 레코드를 나타냅니다. 각 줄(레코드) 의 마지막 데이터는 체크섬(Check Sum) 으로 앞의 데이터를 전부 더한 값의 2 의 보수를 취한 값을 넣습니다. 첫줄에서 다운 할 데이터 수는 3 개이고 0000 번지에 02 라는 데이터가 들어가고, 0001 번지에 00 값이 들어가고, 마지막 0002 번지에 03 이란 데이터가 들어갑니다. 마지막 데이터(F8)를 빼고 다 더하면 08 이고 2 의 보수를 취하면 F8 이 됩니다. (체크섬) 두번째 줄에서는 다운 할 데이터 수는 15 개이고 0003 번지에 75 가 들어가고, 0004 번지에 81 이 들어가고,... 입니다. 다음 프로그램은 코드 메모리 0000 번지부터 0009 번지까지의 10 개의 데이터를 LCD 에 표시하는 프로그램입니다. #include #include "lcd.h" char asc[2]; void htoa(char hh) { char temp; temp=hh; temp &= 0xf0; temp >>= 4; if (temp >= 10) temp += 7; temp += '0'; asc[0] = temp; temp=hh; temp &= 0x0f; if (temp >= 10) temp += 7; temp += '0'; asc[1] = temp; lcd_putc(asc[0]); lcd_putc(asc[1]); } void main(void) { char i, code *r0; delay(10000); lcd_init(); r0 = 0x0000; for(i=0; i<5; i++) { lcd_putc(' '); htoa(*r0++); } row2(); for(i=0; i<5; i++) { lcd_putc(' '); htoa(*r0++); } while(1); } main() 함수에서 코드 메모리 포인터 선언은 byte code *r0; 와 같이 합니다. 포인터가 가리키는 번지의 내용을 참조(읽기 와 쓰기)는 *r0 형식으로 하고, *r0++ 는 포인터를 참조하고 나서 포인터를 하나 증가 시키는 명령입니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함