Keil C51 상세 설정

http://www.cnblogs.com/heiyue/p/3269127.html
Keil C51 상세 설정
1. target 이름 변경
       Keil 을 열 면 왼쪽 Project Workspace 의 target 을 변경 할 수 있 습 니 다. 방법: Target - Manage Compnents - 수정 할 항목 을 더 블 클릭 하면 됩 니 다. 추가 하려 면 대화 상자 에 해당 하 는 도구 모음 을 사용 하 십시오.
2. option for target 설정 의 TARGET 항목
1 MEMARY MODEL
small: 변 수 는 내부 ram 에 저 장 됩 니 다. Compact: 변 수 는 외부 ram 에 저장 되 고 페이지 8 비트 간접 주소 지정 Large: 변 수 는 외부 Ram 에 저장 되 며 16 비트 간접 주소 지정 을 사용 합 니 다.  우 리 는 보통 Small 을 사용 하여 변 수 를 저장 합 니 다. 즉, 싱글 칩 마이크로컴퓨터 는 변 수 를 내부 ram 에 우선 저장 합 니 다. 내부 ram 이 부족 하면 외부 로 저장 합 니 다. copact 방식 은 프로그램 을 통 해 페이지 의 높 은 주 소 를 지정 해 야 합 니 다. 프로 그래 밍 이 복잡 합 니 다. 외부 ram 이 적 고 256 바이트 만 있 으 면 256 바이트 에 대한 읽 기 가 빠 릅 니 다. MOVX @ Ri, A 를 사용 합 니 다. 또는 MOVX A, @ Ri 명령. 256 바이트 가 넘 으 면 끊임없이 전환 하려 면 번 거 롭 습 니 다. copact 모드 는 비교적 적은 외부 ram 의 경우 에 적 용 됩 니 다. Large 모드 는 변 수 를 외부 ram 에 우선 배정 하고 MOVX A, @ DPTR 또는 MOVX @ DPTR, A 로 읽 는 것 을 말 합 니 다. 주의해 야 할 것 은...3 가지 저장 방식 은 내부 256 바이트 와 외부 64k 바이트 의 ram 을 지원 합 니 다. 변 수 를 우선 (또는 기본) 어디 에 저장 하 느 냐 의 차이 점 입 니 다. 변 수 를 내부 ram 에 저장 하고 싶 지 않 으 면 뒤의 Compact, Large 모드 를 사용 합 니 다. 변 수 는 내부 ram 에 저장 되 어 있 기 때문에 외부 ram 에 저장 하 는 것 보다 연산 속도 가 빠 릅 니 다. 대부분의 응용 프로그램 은 Small 모드 를 선택 합 니 다.
Small 방식 을 사용 합 니 다: 변 수 를 외부 에 저장 할 수 없다 는 것 도 아니 고 외부 에 저장 할 수 있 습 니 다. 예 를 들 어:
unsigned char xdata a;    //    a       ram.
unsigned char a;        //       ram.

Large 모드 를 사용한다 면:
unsigned char xdata a;    //    a       ram.
unsigned char a;        //       ram.

이것 이 바로 차이 점 입 니 다. 즉, 이 몇 가지 옵션 은 특별히 지 정 된 변수 가 없 는 저장 공간 에 영향 을 줄 뿐 이 고 기본 값 은 어디 에 저 장 됩 니까? 예 를 들 어 위의 변 수 는 unsigned char a 를 정의 합 니 다. 2. CODE ROM SIZE
  Small: program 2K or less ;89c 2051 에 적용 되 는 이 칩 들 은 2051 에 2k 의 코드 공간 만 있 기 때문에 점프 주 소 는 2k 에 불과 합 니 다. 컴 파일 할 때 ACALL AJMP 라 는 짧 은 점프 명령 을 사용 합 니 다. LCALL, LJMP 명령 을 사용 하지 않 습 니 다. 코드 가 2k 를 넘 으 면 오류 가 발생 합 니 다.  Compact: 2k functiongs, 64k program: 각 하위 함수 의 프로그램 크기 가 2k 를 초과 하지 않 는 다 는 뜻 입 니 다. 전체 프로젝트 에 64k 코드 가 있 을 수 있 습 니 다. 즉, main () 에 서 는 LCALL, LJMP 명령 을 사용 할 수 있 지만 하위 프로그램 에 서 는 ACALL, AJMP 명령 만 사용 합 니 다. 모든 하위 프로그램 이 2k 를 초과 하지 않 는 다 는 것 을 확인 하지 않 는 한,그렇지 않 으 면 Compact 방식 을 사용 하지 마 세 요. Large: 64k program: 프로그램 이나 하위 함수 가 64k 까지 클 수 있다 는 뜻 입 니 다. code bank 를 사용 하면 더 클 수 있 습 니 다. 보통 저 희 는 이 방식 을 사용 합 니 다. code Rom Size 는 Large 방식 을 선택 하면 Small 보다 속도 가 많이 느 리 지 않 기 때문에 Compact 와 Small 방식 을 선택 할 필요 가 없습니다. 저 희 는 Large 방식 을 선택 합 니 다.
3. OPERATING NONE: 운영 체제 적용 안 됨 RTX51 - TINY: TINY 운영 체제 사용 RTX - FULL: FULL 운영 체제 사용
  Keil C51 Tiny 다 중 태 스 크 운영 체 제 를 제공 하고 타이머 0 을 사용 하여 작업 전환 을 하 며 효율 이 낮 고 실 용적 가치 가 없습니다.Full 은 사용자 가 외부 RAM 을 사용 해 야 하고 실행 라 이브 러 리 를 따로 구 매해 야 하 며 사용 할 수 없습니다. 기본적으로 NONE 를 선택 하 십시오.
4. 메모리 선택 1. Use On-chip ROM(0x0-0x1fff)
이 옵션 은 필름 에 있 는 Flash Rom 을 사용 합 니 다. At89c 52 에 8k 의 flash Rom 이 있 는 것 을 알 고 있 습 니 다. 응용 시스템 에 달 려 있 습 니 다. 싱글 칩 마이크로컴퓨터 의 EA 가 높 은 레벨 을 연결 하면 이 옵션 을 선택 하 십시오. 싱글 칩 마이크로컴퓨터 의 EA 가 낮은 레벨 을 연결 하면 외부 Rom 을 사용 하 는 것 을 표시 합 니 다. 이 옵션 을 선택 하지 마 십시오.
2. Off-chip Code memory
필름 밖에서 받 은 Rom 의 시작 주소 와 크기 를 표시 합 니 다. 만약 에 외부 프로그램 메모리 가 없다 면 데 이 터 를 작성 하지 마 십시오. 우 리 는 여기 서 필름 밖의 Rom 을 사용한다 고 가정 합 니 다. 주 소 는 0x 8000 부터 시작 합 니 다.Size 는 외 접 Rom 의 크기 입 니 다. 0x 1000 바이트 의 rom 을 연결 했다 고 가정 합 니 다. 최대 3 개의 Rom 을 외 접 할 수 있 습 니 다. 다른 주 소 를 사용 했다 면 추가 하 십시오.
3. Off-Chip Xdata Memory
그러면 외 접 된 Xdata (외부 데이터 메모리 의 시작 주소 와 크기 를 입력 할 수 있 습 니 다. 일반적인 응용 은 62256 을 연결 하 는 것 입 니 다. 저 희 는 여기 서 특별한 Xdata 의 시작 주 소 는 0x 2000 이 고 크기 는 0x 8000 입 니 다.
 
5. Code Banking
Code Banking 기술 을 사용 합 니 다. keil 은 프로그램 코드 가 64k 를 초과 하 는 상황 을 지원 할 수 있 습 니 다. 최대 2 메 가 의 프로그램 코드 가 있 을 수 있 습 니 다. 만약 에 코드 가 64k 를 초과 하면 Code Banking 기술 을 사용 하여 더 많은 프로그램 공간 을 지원 해 야 합 니 다. code Banking 은 고급 기술 로 자동 Bank 의 전환 을 지원 하 는 대형 시스템 을 구축 하 는 수요 입 니 다. 예 를 들 어 싱글 칩 마이크로컴퓨터 에서 한 을 실현 하려 면글자 라 이브 러 리, 한자 입력 법 을 실현 하려 면 모두 이 기술 을 사용 해 야 한다. 우 리 는 앞으로 의 글 에서 Bank 기술 을 논술 할 것 이다. 우 리 는 여기에서 그것 을 선택 하지 않 을 것 이다.
2. option for target 설정 의 output 항목
selectfolder for object: 컴 파일 된 대상 파일 에 저 장 된 디 렉 터 리 를 선택 하고 기본적으로 프로젝트 폴 더 에 저장 합 니 다.
name of executable: 생 성 된 대상 파일 의 이름 을 설정 합 니 다. 기본 값 은 프로젝트 이름 입 니 다.
creat executable: OMF 와 HEX 파일 을 생 성 합 니 다. OMF 파일 이름 은 같은 프로젝트 파일 이름 이지 만 확장자 가 없습니다.
creat hex file: 이 컴 파일 을 선택 하면 HEX 파일 을 적 게 만 들 수 있 습 니 다.
creat library: lib 라 이브 러 리 파일 을 만 듭 니 다. 기본적으로 선택 하지 않 습 니 다.
after make: 1. beep when complete: 컴 파일 완료 후 알림 소리
                     2. start debugging: 컴 파일 이 완료 되면 바로 디 버 깅 (소프트웨어 시 뮬 레이 션 또는 하드웨어 시 뮬 레이 션) 을 시작 합 니 다. 기본 값 은 선택 되 지 않 습 니 다.
                     3. run user program 1, run user program 2: 필요 에 따라 컴 파일 된 프로그램 을 설정 합 니 다. 예 를 들 어 자신 이 만 든 칩 을 태 우 는 프로그램 이나 외부 시 뮬 레이 션 프로그램 을 호출 합 니 다.
3.listing
selectfolder for listings: 목록 파일 에 저 장 된 디 렉 터 리 를 선택 하 십시오. 기본적으로 프로젝트 파일 이 있 는 디 렉 터 리 입 니 다.
*. lst, *. m51 파일 은 프로그램 이 어떤 idata, data, bit, xdata, code, RAM, ROM, Stack 등 을 사 용 했 는 지 알 아 보 는 데 중요 한 역할 을 합 니 다.
Assembly code 에서 어 셈 블 리 코드 를 생산 하고 필요 에 따라 선택 여 부 를 결정 합 니 다.
4.c51
Keil 의 C51 컴 파일 러 컴 파일 과정 을 제어 하 는 데 사 용 됩 니 다. 그 중에서 'code optimization' 그룹 을 자주 사용 합 니 다. 이 그룹 에서 level 은 최적화 등급 입 니 다. C51 은 소스 프로그램 을 컴 파일 할 때 코드 를 9 급 까지 최적화 할 수 있 고 기본 값 은 8 급 을 사용 할 수 있 으 며 수정 할 필요 가 없습니다. 컴 파일 에서 일부 문제 가 발생 하면 최적화 단 계 를 낮 출 수 있 습 니 다.
emphasis 는 컴 파일 우선 방식 을 선택 하 는 것 입 니 다. 첫 번 째 는 코드 양 최적화 (최종 생 성 된 코드 양 이 적 음) 이 고 두 번 째 는 속도 우선 (최종 생 성 된 코드 속도 가 빠 름) 입 니 다. 세 번 째 는 기본 값 이 고 속도 우선 이 며 필요 에 따라 변경 할 수 있 습 니 다.
5.BL51 locat
Keil C 51 소프트웨어 를 사용 하면 코드 나 데 이 터 를 특정한 주소 로 쉽게 찾 을 수 있 습 니 다. 1. 코드 위치 확인 방법 1: 의사 명령 CSEG 를 사용 합 니 다. 예 를 들 어 MyFunc 1 을 코드 영역 C: 0x 1000 으로 찾 으 려 면 A51 파일 을 새로 만 들 고 다음 과 같은 내용 을 추가 합 니 다.
PUBLIC  MYFUNC1
 CSEG AT 1000H MYFUNC1:
 ;    
 RET

 
다른 원본 파일 에서 MyFunc () 를 호출 할 수 있 습 니 다.함수 입 니 다. 주의해 야 할 것 은 컴 파 일 러 가 전달 하 는 매개 변수의 수 를 감지 하지 않 고 함수 에 반환 값 이 있 는 지 확인 하 는 것 입 니 다. 방법 2: BL 51 Locate 옵션 을 사용 합 니 다. 예 를 들 어 main. c 에서 MyFunc 2 함 수 를 정의 하고 이 함 수 를 코드 영역 C: 0x 2000 으로 지정 하려 면 메뉴 에서 Project - > Options for Target 'Target 1' 을 선택 하고 팝 업 대화 상자 에서 BL 51 Locate 를 선택 하 십시오.페이지, 아래 코드 란 에? PR? MYFUNC 2? MAIN (0x 2000) 을 쓰 면 됩 니 다. 여러 함 수 를 찾 으 려 면 * 어댑터 를 사용 하 셔 도 됩 니 다.  2. 변수 포 지 셔 닝 은 전역 변수 만 절대적 으로 포 지 셔 닝 할 수 있 습 니 다. 국부 변 수 는 절대 포 지 셔 닝 을 실현 할 수 없습니다. 방법 1: at 키 워드 를 사용 합 니 다. 전역 변 수 를 설명 합 니 다 unsigned char data MyBuf 1 [8] at 0x 20; 방법 2: BL 51 Locate 옵션 을 사용 합 니 다. 예 를 들 어 main. c 에서 정의 하 는 모든 data 형의 전역 변 수 를 데이터 영역 D: 0x 28 에서 시작 하 는 공간 으로 지정 하면 메뉴 에서 Project - > Options for Target 'Target 1' 을 선택 하고 팝 업 대화 상자 에서 BL 51 Locate 페이지 를 선택 하여 아래 data 표시 줄 에? DT? MAIN (0x 28) 을 쓰 면 됩 니 다. idata 라면? ID? MAIN (0x 28) 을 사용 합 니 다., xdata 라면? XD? MAIN (0x 28) 을 사용 합 니 다. pdata 라면? PD? MAIN (0x 28) 3 을 사용 합 니 다. 스 택 은 STARTUP. A51 파일 에 스 택 구역 을 정 의 했 습 니까? STACK 을 사용 합 니 다. 시작 주 소 는 BL 51 Locate 페이지 에 설정 할 수 있 습 니 다. 스 택 표시 줄 에? STACK (0x 80) 을 쓸 수 있 습 니 다.
4. 함수 포 지 셔 닝 C 소스 파일 tools. c 의 함수
int BIN2HEX(int xx)
{
  ...
}

CODE MEMORY 의 0x 1000 곳 에 놓 고 이 공 사 를 먼저 컴 파일 한 다음 에 이 공사 의 M51 파일 을 엽 니 다.
* * *   C O D E   M E M O R Y   * * *
;             ,    :
CODE    xxxxH     xxxxH     UNIT         ?PR?_BCD2HEX?TOOLS

그리고: Project - > Options for Target... - > BL 51 Locate: Code 에 다음 과 같은 내용 을 기입 하 십시오:? PR? BCD2HEX? TOOLS (0x 1000)다시 빌 드 하면 M51 에서 이 함수 가 CODE MEMORY 의 0x 1000 에 놓 여 있 는 것 을 발견 할 수 있 습 니 다. 5. 초기 값 을 부여 하 는 변수 포 지 셔 닝: 특정한 변 수 를 절대적 인 위치 에 위치 시 키 고 초기 값 을 부여 해 야 합 니 다. 이때 at 로 완성 할 수 없 으 면 다음 과 같 습 니 다. 공사 에서 InitVars. c 와 같은 새로운 파일 을 만 들 고 그 중에서 처리 할 변수 에 초기 값 을 부여 합 니 다 (code 변수 라 고 가정 합 니 다).
char code myVer = {"COPYRIGHT 2001-11"};

그리고 이 파일 을 프로젝트 에 추가 하고 컴 파일 하 며 M51 파일 을 엽 니 다. code 형 으로 정의 되면
* * *   C O D E   M E M O R Y   * * *
;
CODE    xxxxH     xxxxH     UNIT         ?CO?INITVARS

그리고: Project - > Options for Target... - > BL 51 Locate: Code 에:? CO? INITVARS (0x 200) 를 입력 하고 다시 컴 파일 하면 됩 니 다. 이에 따라 xdata 변 수 는 InitVars. c 에 적 혀 있 습 니 다.
char xdata myVer = {"COPYRIGHT 2001-11"};

그리고 이 파일 을 프로젝트 에 추가 하고 컴 파일 하 며 M51 파일 을 엽 니 다.
* * *  X D A T A   M E M O R Y  * * *
;
XDATA   xxxxH     xxxxH     UNIT         ?XD?INITVARS

그 다음 에: Project - > Options for Target... - > BL 51 Locate: Xdata 에:? XD? INITVARS (0x 200) 를 입력 하고 다시 컴 파일 하면 됩 니 다. 이에 따라 data / idea 등 변 수 를 정의 하면 해당 처리 하면 됩 니 다. 3. 여러 변수 나 함수 가 절대 주소 로 위 치 를 정 하려 면 주소 가 낮은 순서대로 배열 해 야 합 니 다.
====
 keilc51cn.pdf   
http://zc20031999.blog.163.com/blog/static/7202622420109186285473/

좋은 웹페이지 즐겨찾기