가장 기초적인면서도 가장 중요하다고 할 수 있는 MCU 8051 을 가지고 여러가지를 콘트롤 할 수 있는 여러가지 시도를 해볼 것이다.
그 전에 나에게 실험할 기회를 준 dearwolf 형에게 감사를 드린다.
문서는 내가 해본 것들을 중심으로 쓰여질 것이다. 여기서는 직접 만들 프로그램을 가지고 실험을 해볼 수 있는 환경을 만드는 데, 중점적으로 설명한다.
해보면서 느낀 것이지만, 일반 적인 타겟보드의 환경구축과 크게 다르지 않았다. 다음은 실험을 하는 데, 필요한 나의 PC 환경이다.

디바이스 성능 or 수량
CPU 펜4 1.5GMHz
OS Windows 2000 server
RAM 512M
그외 8051보드, 시리얼 케이블, 파워서플라이, 등등

환경 구축하기

위에 표에서 보면 알겠지만, OS 가 윈도우이다. 현재 까지는 어쩔 수가 없다. 8051 크로스 컴파일러가 리눅스용으로 구하지 못했기 때문이다. 게다가 윈도우용도 상용이다. dearwolf 형의 지원으로 구할 수 있었다.
keil uvision2 라고 하는 프로그램을 설치하면, 우선 크로스 컴파일을 위한 환경은 끝났다.
이제 8051 보드를 시리얼 포트에 꽂고, 파워 서플라이의 전원을 켜자! 그럼 8051 보드에 있는 8개의 LED 가 차례로 불이 들어올 것이다.

컴파일 및 실행하기

keil 프로그램을 실행해보자!
가장 먼저 해야 할 것은 project 를 만드는 일이다.

  1. Project 탭의 'New Project“ 을 실행한다. 여기서 프로젝트를 저장할 경로와 이름을 정해준다.
  2. CPU 의 타입을 정해주어야 한다. 워낙 종류가 많아서, 주의 해야 한다. 여기서는 'Atmel → AT89C51' 을 선택한다.
  3. 다음 메세지 창에서, 프로젝트에 필요한 파일을 복사할지를 묻는다. 일단(?) 여기서는 'Yes' 를 선택한다.
  4. 새로운 프로젝트가 시작되면, 왼쪽 창에 STARTUP.A51 파일이 보인다. 이 파일은 하드웨어에 대한 정보가 들어있다. 기본적으로는 0h 번지부터 실행이 되도록 세팅이 되어있다. 나의 경우는 8000h 부터 실행이 되어야 하므로 제대로 된 파일로 바꾸어주어야 한다.
  5. 프로젝트 디렉토리 안에 있는 STARTUP.A51 파일을 지우고, 나의 설정에 맞는 STARTUP.A51을 복사한다.
  6. 소스파일을 하나 만든다. 예를 들면, test.c 로 만든다. 그리고 나서 프로젝트 창에서 마우스 오른쪽 버튼을 이용해서 'Adds to…' 메뉴를 이용해서 추가한다.

이제 아래의 간단한 프로그램을 만들어 보자!

 #include "reg51.h"
 
 
 delay(int i){
 
 	while(i--);
     }
 
 
 void main(void)
  {
 
    unsigned int i;
 
    while(1){
 
    P1=0x05;          
    delay(20000);
    P1=0x64;          
    delay(20000);}
 
}

저장을 한다. 아직 끝난 것이 아니다. 'Target 1' 에서 마우스 오른쪽 버튼을 이용해서 'Option to Target..' 을 선택한다.

  1. Target 탭에서 Xtal (MHz) : 11.0592
  2. Off-chip Code memory : Eprom → 0x8000 , 0x4000
  3. Output 탭에서 'Create HEX File' 을 체크한다.
  4. C51 탭에서 'Interrupt vectors at address : 0x8000' 입력한다.

이제 컴파일을 해보자!! 에러가 없이 컴파일 되었다면, 결과로 .hex 파일이 생성되었을 것이다. 이제 보드를 호스트 PC 에 연결하고 전원을 넣는다.
그리고 Multi-threaded TTY 를 이용해서 접속한다. 아래 표와 같이 설정한다.

포트번호 COM4(호스트에 따라 달라질 수 있음)
Baud 9600
Parity None
Data Bits 8
Stop Bits 1

모니터 프로그램이 뜬다면, 올바르게 연결이 된것이다. 이제 'l' 버튼을 누르고 파일을 전송한다. 'r' 을 눌러서 직접 돌려보자!!
어떤가?? LED 가 움직이는게 보이는가??

제대로 동작을 하지 않을 때

나의 경우 제대로 컴파일 했음에도 불구하고, 직접 프로그램을 upload 하면, 제대로 실행이 안되는 문제가 있었다. 나중에 알고 봤더니, 컴파일을 하는 과정에서 소스파일을 제대로 add 하지 않았던 점이 발견되었다.

  • computer/embedded/8051_시작하기.txt
  • Last modified: 3 years ago
  • by likewind