Intel社 MCS-51계열 마이컴 (마이크로콘트롤러 ; 마이크로制御機 ; Micro-controller)
MCS (Micro Control System)

(8XC51 ; AT89S51, AT89S52)

(AT89C51은 AT89S51로 대체 ; S type은 ISP기능 지원)


zero  

 

     


▣ 병렬 I/O 포트

- 4개의 8비트 I/O 포트
- 모두 양방향 입출력이 가능
- 포트0이 오픈 드레인(open-drain)형인 것을 제외하고는 모두 내부적으로 약하게 풀업(pull-up)

- 포트0 : 오픈 드레인형의 입출력 포트
         외부 메모리를 접속할 경우에는 강하게 풀업되어 시분할 다중화된 어드레스/데이터 버스로 사용
- 포트2 : 내부적으로 약하게 풀업된 양방향 입출력 포트
         외부 메모리를 접속할 경우에는 강하게 풀업되어 어드레스 버스로 사용
- 포트1과 포트3 : 모두 내부적으로 약하게 풀업된 양방향 입출력 포트
         포트3은 다기능 I/O 포트로서 시스템 콘트롤 신호나 주변장치에 관련된 입출력 신호로도 사용

▣ 직렬통신 포트

- UART(Universal Asynchronous Receiver and Transmitter)
- 반이중(half duplex)의 통신만 가능한 1가지의 동기 모드(모드0)
- 전이중(full duplex)의 직렬통신이 가능한 3가지의 비동기 모드(모드1, 2, 3)
- 수신측은 2중 버퍼 구조로 되어 있어서 첫번째의 수신 바이트를 읽기 전에 두번째의 바이트가 수신되기 시작하더라도 오버런 에러(overrun error)가 발생하지 않음
- 송신측도 2중 버퍼로 되어 있어서 연속적인 데이터의 전송이 가능

▣ 타이머

- 80C31에는 타이머0과 타이머1 등 2개의 16비트 증가형 타이머/카운터를 가짐
            타이머0과 타이머1에는 각각 4가지의 동작모드
- 80C32에는 여기에 타이머2가 추가
            타이머2에는 3가지의 동작모드
- "타이머(timer)"로 동작하는 경우에는 1개의 머신 사이클 즉 12개의 시스템 클럭 주기에 한번씩 증가
- "카운터(counter)"로 동작하는 경우에는 클럭 입력단자 T0∼T2에서의 하강 에지를 검출하여 카운터가 증가
- 80C31에서는 타이머1이 직렬통신 포트의 보레이트 발생기(baud rate generator)로 사용될 수 있음
  80C32에서는 타이머1 또는 타이머2를 보레이트 발생기로 사용할 수 있음


/EA       :  External Access, 내부 ROM 사용 여부 결정(0=사용 안함, 1=사용)
             /EA핀이 Low(0) 상태이면 프로그램의 전체 영역(0000h ~ FFFFh)이 외부 메모리에 할당되고,
              High(1) 상태이면 내부 ROM 영역(4K=0000h~0FFFh 또는 8K=0000h ~ 1FFFh)은
              내부 ROM을 사용하고 나머지 영역은 외부 메모리를 사용한다.

RESET     :  리세트 입력 신호, Active High (1=Reset)  
※ 다른 마이크로콘트롤러의 RESET와 반대로 주의
XTAL1,XTAL2  :  클럭 입력 단자, XTAL(XTAL1,XTAL2 사용),OSC(XTAL1사용) <?11.0592 MHz>
/PSEN     :  Program Strobe Enable, 외부 프로그램 메모리 읽기 신호
ALE         :  Address Latch Enable, 하위 어드레스(A0~A7) 래치 신호
                      ALE 신호는 데이터 버스와 어드레스버스를 분리하는데 사용한다.
                      래치 소자로 74xx373 (74xx573)을 사용


프로그램 용량은 내부,외부를 합하여 64K 바이트까지 가능
 - EA = 0 (ON) : 외부 메모리만 사용
 - EA = 1 (OFF) : 내부 메모리 (4Kbyte : 0h∼0FFFh) + 외부메모리 (64Kbyte : 1000∼FFFFh)

              

 


Micro-controller


Micro-computer

 

 

 

마이크로 컨트롤러 역사

  • 1975 : TI의 TMS 1000
  • 1976 : Intel 8 비트 8048 (MCS 48)
  • 모토롤라 MS6801
  • 1980 : MCS 51
  • 1981 : 16 bit MCS 96 (인텔)
  • 1982 : 32 bit 80960(인텔)

     

 

8051 역사

  • 1980 년 개발된 인텔사의 마이크로 컨트롤러
  • 공식 명칭 : MCS-51 ( Micro-Controller System-51)
  • 호환 칩 공급 업체 : Siemens, Advanced Micro Devices, Fujitsu, Philips, Dallas, Semiconductor, Atmel

Intel에서는 8086 ~ 80686(P6)등 일반 PC를 위한 CPU (Microprocessor)
산업용으로 MCS(Micro Control System) 계열인 MCS-48, MCS-51, MCS-251, MCS-96
이 중에 8051을 코어(core)로 하는 마이크로콘트롤러 들을 통칭해서 MCS-51 family라고 함
이 Microcontroller 내부에는 CPU, ROM(EP-ROM or Freshmemory), RAM, EEPROM, I/Oport등이 하나의 칲안에 실장 되어있음.
8051 Microcontroller 시리즈 중에서 내부 ROM이 없는 8031도 있음.

UART(Universal Asynchronous Receiver Transmitter)

AT89C51ED2는 (8052에 용량추가) 큰 플레쉬 메모리(64 KByte)와 더 많은 RAM (1792 Byte)을 가지고 있음. 그리고 가장 큰 장점은 In System Programming을 지원. 즉 PC에서 Atmel사의 FLIP 프로그램을 이용하여, AT89C51ED2의 플레쉬 메모리를 프로그래밍할 수 있음.

 

마이크로콘트롤러 선택 시 고려 사항

  • 칩 자체의 하드웨어 규격
  • 비트수(8-비트, 16-비트, 32-비트)
  • 최대 속도
  • 칩 패키지 유형(40-핀 DIP, QFP, 혹은 다른 패지지 유형): 크기, 조립, 최종 상품의 시제품 개발이라는 측면에서 중요
  • 전력소비: 배터리에서 전력을 공급받는 제품들에게는 특히 중요함
  • 칩 내의 RAM과 ROM의 크기
  • 칩 내의 I/O 핀과 타이머의 수
  • 고성능 혹은 저전력 소비 버전으로 업그레이드시의 편의성
  • 개발 시에 사용 가능한 다양한 소프트웨어 개발 툴 및 지원
  • 컴파일러, 어셈블러, 디버거, 에뮬레이터, 기술지원, 회사내외의 전문가 등의 존재 여부 ~ 개발기간의 단축에 기여
  • 칩의 안정적 공급 여부 및 가격
  • 8051 계열 프로세서들의 경우에는 다양한 공급자들이 있기 때문에 칩 확보 수월

     

8051 (Intel MCS-51)의 특징

- 8비트 원칩(One-Chip) 마이크로 프로세서
- 8비트 단위의 4개의 입출력 포트
- 클록 발진기 내장
- 4개의 모드로 사용 가능한 2개의 16비트 타이머/카운터 (T0, T1)
- 1개의 시리얼 통신 포트(또는 I/O확장 모드 사용 가능)
- 우선순위를 프로그램으로 설정 가능한 5개의 인터럽트
- 4k 바이트의 내부 프로그램 메모리(8031은 없음)
- 64k 바이트의 외부 프로그램 메모리 확장 가능
- 64k 바이트의 외부 데이터 메모리 확장 가능
- 광범위한 불(Boolean) 명령 가능한 프로세서


① 인텔사(http://www.intel.com) - 오리지널 MCS-51
   이것의 단점을 보완한 많은 호환모델 → 동일한 CPU를 코어를 사용 → 소프트웨어의 호환성이 유지
  ⅰ) 새로운 I/O 기능을 추가하여 마이크로콘트롤러로서의
기능을 확장
  ⅱ) 2개의 DPTR 레지스터를 사용하거나 처리속도를 높여 성능을 향상
  ⅲ) 내부 프로그램 메모리에 플래시 메모리를 사용하여 사용자 편의성을 증대
  ⅳ) 배터리 백업 기능을 추가
  ⅴ) 외부 팩키지를 20핀으로 줄여 소형화
    ※ 모두 동일한 어셈블러나 C 컴파일러와 같은 소프트웨어 툴을 사용 - 인클루드 파일(includefile)  헤더 파일(header file)
② 필립스(Philips)사(http://www.philips.com/products/) - 가장 많은 MCS-51 호환제품 개발
③ 지멘스(Siemens)사(http://www.infineon.com) - 상당히 많은 MCS-51 호환제품, 다양한 I/O 기능
④ 달라스(Dallas)사(http://www.dalsemi.com) - 배터리 백업 기능, RTC 기능 내장, 2개의 DPTR 레지스터
⑤ 아트멜(Atmel)사(http://www.atmel.com) - 플래시 메모리 내장, 가장 간단한 20핀짜리 팩키지
⑥ 아날로그 디바이스사(http://www.analog.com) - 8채널 12비트 A/D 컨버터, 2채널 12비트 D/A 컨버터 내장
⑦ 시그널사(http://www.cygnal.com) - 8채널 12비트 A/D 컨버터, 2채널 12비트 D/A 컨버터 내장


※ 최초의 마이크로프로세서 교육에 8051을 선호하는 이유
① 8비트이면서 구조와 기능이 간단하여 배우기 쉽다.
② 마이크로콘트롤러라서 범용 마이크로프로세서에 비하여 저가격에 교육용 키트를 제작할 수 있다.
③ 교재, 문헌자료, 소프트웨어 개발 툴 들이 풍부하고 저렴하다.
④ 산업체에서 가장 많이 사용된다.
⑤ 점점 더 다양하고 편리한 호환기종이 출시되어 시장이 넓어지고 있다.
⑥ 인텔사 제품이라서 나중에 상위 기종을 공부하거나 사용하는데 유리하다.

※ 단점 - 성능이 낮다. (?? PIC이나 AVR 등으로 전이)
                       (?? 16비트 80C196KC나 DSP로 업그레이드)

 

※ 어셈블리와 C언어에 관한 5가지의 잘못된 편견

① 어셈블리 언어는 배우기 어렵고, C언어는 배우기가 쉽다.
  -
어셈블리 언어가 훨씬 더 간단하고 쉽다. C언어는 규정이 엄격하지 않아서 상당히 어려운 언어이다.
  -
어셈블리 언어가 어려운 것이 아니라 하드웨어에 대한 이해가 부족한 것이다.

② 앞으로는 어셈블리 언어는 없어지고 모두 C언어와 같은 고급언어를 사용하게 될 것이다.
  - 마이크로프로세서가 존재하는한 어셈블리 언어도 존재한다.
  -
마이크로콘트롤러 분야에서는 반드시 어셈블리 언어를 사용해야 하는 응용이 있다.
  - 어셈블리 언어를 사용하면 하드웨어 비용이 절감되고, C언어를 사용하면 소프트웨어 비용이 절감된다.

③ C언어를 사용하면 하드웨어를 잘 몰라도 프로그램이 가능하다.
  - 그것은 범용 컴퓨터에서 OA 소프트웨어에 관한 이야기이다.
  -
마이크로콘트롤러를 사용하는 임베디드 시스템 분야에서는 하드웨어를 모르고는 프로그램할 수 없다.

④ 어셈블리 언어는 호환성이 없기 때문에 어느 모델에서 열심히 배워봤자 소용없다.
  -
어셈블리 언어도 숙달되면 마이크로프로세서마다 크게 다르게 느껴지지 않는다.
  - C언어도 마이크로콘트롤러 마다 상당히 다른 부분이 많다.

⑤ 마이크로프로세서에서는 C언어로 먼저 시작하고 나중에 필요하면 어셈블리 언어를 배우면 된다.
  -
반드시 마이크로프로세서 공부와 함께 어셈블리 언어로 시작해야 한다.
  - 먼저 C언어에 익숙해지면 절대로 어셈블리 언어를 사용하지 못한다.

 

※ 현재 8051용 소프트웨어 개발 툴의 시장점유율

① Keil        - 60 %
② IAR        - 20 %
③ Archimedes - 10 %
④ 기타        - 10 % (Tasking, Franklin, Avocet 등)

8051 (Intel MCS-51) C컴파일러

  • KEIL 8051 Devlopment Tools  : PK51 (C51 uVision3)
  • EW_IAR  :  EW8051V5.52A


  

PK51 Professional Developer's Kit 구성

  • µVision 3
  • 통합 개발 환경
  • 디버거
  • 시뮬레이터 
  • Keil Extended 8051 Compilation Tools
  • A51 Macro Assembler 
  • CX51 ANSI C Compiler 
  • LX51 Linker/Locator 
  • OHX51 Object-HEX Conveter
  • Keil Classic 8051 Compilation Tools 
  • A51 Macro Assembler 
  • C51 ANSI C Compiler 
  • BL51 Code Banking Linker/Locator 
  • OH51 Object-HEX Converter 
  • OC51 Banked Object Converter
  • Target Debuggers
  • FlashMON51 Target Monitor 
  • MON51 Target Monitor 
  • MON390 (Dallas 390) Target Monitor 
  • MONADI (Analog Devices 812) Target Monitor 
  • ISD51 In-System Debugger 
  • RTX51 Tiny Real-time Kernel

 

  • IDE-Version:
    uVision3  V3.23
    Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2005
  • License Information:
    Any One
    Freeware
    LIC=14RK0-D1AK7-68W3J-68XEW-QW0X8-9M6DQ
  • Tool Version Numbers:
    Toolchain Path:    D:\Keil\C51\BIN\
    C Compiler:         C51.Exe
    Assembler:          A51.Exe
    Linker/Locator:     BL51.Exe
    Librarian:          LIB51.Exe
    Hex Converter:      OH51.Exe
    CPU DLL:            S8051.DLL
    Dialog DLL:         DP51.DLL