2011년5월24일_두더지게임2 소스코드의 주석을 보기 좋게 정리함
주석을 보기 좋게 정리 |
1. 프로그램 정보가 담긴 첫 부분
1행과 2행 사이에 요구사항이 담겨 있으나 생략함.
1: /***************************************************************************
2: 두더지잡기 게임2 설명
3:
4: ....길어서 생략...
5:
6: ---------------------------------------------------------------------------
7:
8: 다음은 함수 이름을 정리.
9: 다음 부터는 아래와 같은 순서로 작성할 것.
10:
11: <순서>
12: 파일명:
13: 작성자:
14: 목적:
15: 사용방식:
16: 사용파일:
17: 제한사항:
18: 오류처리:
19: 이력사항:
20:
21: ----------------------------------------------------------------------------
22:
23: 작 성 자: 1.출처: 내 머리
24: 2.작성: [내장형 하드웨어]과정 김수만
25:
26: 이력사항: 1.2011년 5월 23일...최초 작성.
27: 2.2011년 5월 24일...주석 정리.
28: 함수의 배치 순서 정리.
29: 문자열 전송함수 개선 - \n만 하면 되도록
30:
31: ****************************************************************************/
왜 파일명, 사용방식, 사용파일를 넣어야 되는가 의문이나 넣으면 좋다고 하니 다음 부터는 넣도록 해봐야겠다.
2. 전역변수
1: /*------------------------------ 전역 변수 ---------------------------------- */
2: volatile unsigned int g_elapsed_time = 0; // 시간 변수
3: volatile unsigned char key = 0; // 키입력값 저장 버퍼
4: /*------------------------------ 전역 변수 ---------------------------------- */
전역변수 중에 g_elapsed_time과 타이머관련 함수와 인터럽트루틴을 모두 뭉쳐서 따로 파일을 만들고 싶으나..
어떻게 해야할지 조금 고민된다.
3. 시작부분 강조
1: /* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 프로그램 시작 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */
2: int main(void)
3: {
4:
5: }
소스보는 사람이 시작부분 부터 보고 싶어 하지 않을까 하여 강조하였음.
쉽게 찾을 수 있겠지?
4. 초기화 함수들
1: /*********************************************************************************
2: <초기화 함수들>
3:
4: 모두 상단의 전처리문을 참조해야 함.
5:
6: *********************************************************************************/
7: //I/O 포트 초기화
8: void init_port(void)
9: {
10:
11: }
12:
13:
14: //타이머0 초기화
15: void init_TC0(void)
16: {
17:
18: }
19:
20: //UART1 초기화
21: void init_USART1(void)
22: {
23:
24: }
모두 따로 파일을 만들어 분할 컴파일 하고 싶다.
5. 통신관련 함수들
1: /*>>>>>>>>>>>>>>>>>> 하드웨어와 밀접한 관련이 있는 함수들 (통신주변장치) <<<<<<<<<<<<<<<<<<<<*/
2:
3: //1바이트 수신함수
4: unsigned char USART_Receive(void) // ← 이름 바꿀까?
5: {
6:
7: }
8:
9: //1바이트 전송함수
10: void uart_send_byte(unsigned char byte)
11: {
12:
13: }
14:
이 함수들은 하드웨어 사양 변경 시 주의해야할 부분이므로 강조함.
6. 수치처리함수들
1: /*>>>>>>>>>>>>>>>>>>>>> 어느 하드웨어에나 이식이 자유로운 수치처리함수 <<<<<<<<<<<<<<<<<<<<<<*/
2:
3:
4: //16진수를 10진수로 바꾸는 함수 (100미만의 값만 취급한다.)
5: unsigned char hex_to_dec(unsigned char cNum)
6: {
7:
8: }
9:
10: //정수를 문자로 바꾸는 함수. (0~255까지만 취급함.)
11: void dec_to_ascii(unsigned char cNum, char *p)
12: {
13:
14: }
15:
16: //log2 N의 값을 구함. (128~0 -> 7~0)
17: char log_2(unsigned char cNum)
18: {
19:
20: }
21:
22: //입력 받은 숫자 반전. (변수의 주소를 참조해 1의 보수를 취함.)
23: void ToggleNumber(char * state)
24: {
25:
26: }
어디서든 아무런 수정없이 가져다 쓸 수 있는 이런 함수들은 따로 파일만들기도 쉽겠다.
언제 만들꺼야?
7. 문자열 전송함수 수정
1: //문자열 전송함수(수만)
2: void uart_send_string_suman(char *cStr)
3: {
4: int i; //Offset
5:
6: for(i = 0 ; '\0' != *(cStr + i) ; ++i) //NULL문자까지 반복.
7: {
8: if('\n' == *(cStr + i)) //개행문자를 만나면,
9: {
10: uart_send_byte('\r'); //캐리지 리턴후에
11: uart_send_byte('\n'); //라인 피드
12: }
13: else
14: {
15: uart_send_byte(*(cStr + i)); //시작번지로 부터 i번째 문자 전송.
16: }
17: }
18:
19: return ;
20: }
개행문자를 CR + LF로 바꿈.
다른 사람의 소스코드를 보면 개행문자를 만나면 캐리지리턴만 해도 되는데 왜 내껀 안 되는거야?
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년5월26일_두더지게임(시작화면, 메뉴, ATmega128 내부EEPROM에 순위데이터저장) (0) | 2011.05.27 |
---|---|
2011년5월25일_두더지게임 업그레이드 기획 (시작화면, 메뉴, 문자그림, 보너스두더지), ATmega128 내부EEPROM에 순위데이터저장 (0) | 2011.05.26 |
2011년5월23일_두더지 잡기 게임2, 문자열 처리 함수(숫자를 문자로 변환) (0) | 2011.05.24 |
2011년5월20일_C과제4 풀이, C과제5, ATmega128 ↔ PC간 양방향직렬통신, 숫자만 입력받아 LED에 출력 (0) | 2011.05.23 |
2011년5월19일...ATmega128 -> PC(단방향직렬통신), (0) | 2011.05.19 |