47일차 ------------------------ ATMega128 LCD 제어 ------------------------ - 코드 최적화 소스 코드에 중복된 부분이 많으니 중복된 부분을 지워주는 최적화 - main.c 소스코드에서 으로 된 부분은 다 중복된 부분이다. - 이것을 간결화 한 코드 으로 된 부분이 수정된 곳. - smart.h (헤더파일에 추가된 부분) ...... #define INST_CLEAR 0x01 // Clear - main.c 으로 블록된 부분만 수정하면 인자로 문자를 받아 출력이 가능하다. - 좀 더 기능을 추가해 문자열을 출력.
- 또 기능을 추가해 숫자를 출력. 숫자의 경우 153이란 숫자를 출력하려면 문자 3글자가 출력되어야 한다. 간단히 char형으로 (최대 255까지 가능하니 3글자만 필요) 구현해 보자.
0] = '0' + (ucNum / 100); ucBuff[] = "123" 초기값을 123으로 넣어준 이유는 3글자를 받는데 이것도 문자열로 취급해야 하니 맨 마지막에 NULL이 들어가야 하므로 "123" 해주면 3자리 확보하고 맨 마지막에 NULL이 들어간다. static을 붙여준 이유는 자주 쓰게 되면 메모리를 계속 할당 해제할 경우 느려지게 되므로 속도를 높이고자 사용하였다. 자주 쓰지 않는다면 static을 붙이지 않는게 좋다. 실습 화면 - LCD_Num을 이용해 자료형들의 크기 확인
char : 1 char * : 2 int : 2 int * : 2 short : 2 long : 4 float : 4 double : 4 long double : 4 long long : 8 (단위 : byte) - DDRAM LCD_Inst(INST_SET_DDRAM | 0x40); 이런식으로 명령을 주게 되면 2번째 줄부터 출력을 실행한다. -------------------------------------------------- --- Cursor or Display R/L, S/C 옵션에 대하여... 도대체 R/L, S/C 의 옵션이 뭘 하는지 알아보기 우선 Cursor or Display 옵션은 DDRAM의 메모리를 바꾸지 않고 화면에 출력하는 위치를 조절할 수 있다.
- C, R 옵션을 줬을 경우 123이 C,R 옵션이 적용됨. 원래 옵션에서 R의 옵션이 더 더해져 오른쪽으로 한 칸 더 이동했다. - C, L 옵션을 줬을 경우 123이 C,R 옵션에서 L 옵션이 더해져 왼쪽으로 한 칸 더 이동했다. - S, R 옵션을 줬을 경우 123 뿐만 아니라 abc 까지. 화면 전체가 오른쪽으로 더 이동했다. - S, L 옵션을 줬을 경우 위와 마찬가지로 abc, 123 화면 전체가 왼쪽으로 더 이동했다. - C -------------------------- Single Linked List -------------------------- --- 리스트에 삽입과 삭제 - 삽입의 경우 1. 중간에 삽입 2. 맨 뒤에 삽입 3. 맨 앞에 삽입 이 세가지 경우의 순서에 따라 코드를 작성. 각 앞뒤의 리스트를 잃어버리지 않고 잘 연결하는 것이 중요. - 삭제의 경우 1. 중간에 삭제 2. 맨 끝 삭제 3. 맨 앞 삭제 4. 없는 문자 삭제 이 경우에 따라 작성. - 삽입
= Head;
char cData) |