티스토리 뷰
코드 메모리를 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++ 는 포인터를 참조하고 나서 포인터를 하나 증가 시키는 명령입니다.
'C언어' 카테고리의 다른 글
SND 에 숫자 표시하기 어드레스와 데이터 표시 (0) | 2021.08.07 |
---|---|
SND 에 숫자 표시하기 (0) | 2021.08.06 |
포인터를 이용하여 내부 데이터 메모리를 LCD 에 표시하기 (0) | 2021.08.04 |
캐릭터 LCD 에 16 진수 숫자 출력하기 (0) | 2021.08.03 |
캐릭터 LCD 에 문자(열) 출력하기 (0) | 2021.08.02 |