8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
마이크로마우스
로봇축구
Battle 로봇
로봇대회
휴먼로봇
Embeded Linux
HW/SW 강좌
RTOS
 
 

80c196kc는 인텔사의 16비트 원 칩 마이컴(인텔사에서는 원 칩 마이컴을 마이크로 컨트롤러(micro-controller)라고도 부른다)으로, 보통의 8비트와 16비트 마이컴의 구조와는 달리 독자적인 구조를 사용하고 있다. 처음에는 NMOS타입의 8098-90과 BH 버전이 제품화되었지만, 최근에는 CMOS타입의 80C196KA, KB, KC, 80C196MC 등의 고도의 기능을 갖는 것들이 출하되고 있다. 이중 80C196KC에 대해서 알아보고, 각각의 로봇을 제작하여 보도록 하자.

1) 80C196KC의 기능

       ☞ 256 바이트의 RAM
       ☞ 232 바이트 레지스터 파일
       ☞ 파워 다운/아이들 모드  
       ☞ 16비트 워치도그 타이머
       ☞ 풀 듀플렉스 시리얼 포트
       ☞ 동적 구조로 되어있는 8비트/16비트 버스폭
       ☞ HOLD/HOLDA 버스 프로트콜
       ☞ 다섯 개의 8비트 I/O포트
       ☞ 세 개 PWM 출력
       ☞ 28개 인터럽트 소스
       ☞ 16개 인터럽트 벡터
       ☞ 4개의 16비트 소프트웨어 타이머
       ☞ 타이머 2의 값 기록, 증가/감소 카운팅 기능
       ☞ 샘플/홀드 기능을 갖는 8/10비트 A/D 컨버터
       ☞ 16비트*16비트 곱셈
       ☞ 32비트/16비트 나눗셈  
       ☞ PTS(peripheral transactoin

(2) 80C196KC의 칩 구조

  80c196kc는 총 68개의 IC핀을 가지고 있으며, 각각의 핀은 기능을 가지고 있다. 밑에 있는 그림이 우리가 배울 칩의 모형을 보여 주고 있다. 몇 개의 핀들은 한 개의 핀에 여러 가지의 기능을 가지고 있다는 것을 볼 수 있다. 칩이 복잡하여 질수록 이렇게 한 개의 핀에 여러 가지 기능을 가지게 된다. 각각의 기능은 프로세서의 내부에서 어떻게 설정하느냐에 따라서 기능 설정이 가능하도록 되어 있다는 것을 알았으면 한다. 자세한 사용법은 다음에 알아보도록 하자.
 

  

3) 핀의 역할

  위의 그림에서 68개의 핀에 관한 기능들을 알아보도록 하자. 이 들의 핀은 소프트웨어를 작성할 경우에 설정이 가능하거나, 하드웨어에서 설정이 가능하도록 되어 있다. 자세한 것은 다음에 설명하기로 하고, 이곳에서는 각각의 핀에 관한 간략한 기능만 알아보자.(80c196kc는 5개의 포트가 있다)

기호

기능

전원 +5V

마스킹이 불가능한 인터럽트 0x203E

8비트의 디지털 입력 포트 or. 아날로그 입력에도 쓰임

8비트의 입력/ 출력 핀으로 사용

8비트의 다기능성 핀( 다른 기능들과 공유 가능)

양방향성 입출력 핀으로,외부와의 입출력핀으로 사용.

주소(A0 ~A15), 데이터 버스 핀(D0~D15)과 핀을 공유

주소값이나 데이터 값을 주고 받을 때 버스로 쓰임

아날로그 신호를 받아 들여서 디지털로 변환가능한 핀

외부 인터럽트, IOC1.1로 설정하면 외부 인터럽트 사용 가능

EPROM 의 알고리즘을 관할

아날로그 입력 값을 디지털 값으로 바꿀 때 기준이 되는 그라운드 값을 설정

아날로그 입력 값을 디지털 값으로 바꿀 때 기준이 되는 5V를 연결

디지털 회로의 그라운드(0V)로 VSS에는 모두 그라운드에 연결

EPROM에 프로그래밍 할 경우에 설정(LOW ACTIVE)

프로세서 전체를 리셋(LOW ACTIVE)

통신을 할 경우 외부로부터 신호를 받아들이는 핀

통신을 할 경우 외부로 신호를 보내는 핀

LOW ACTIVE : P3,P4

 HIGH ACTIVE : 프로그래밍 모드에서 올바르게 명령어가 사용되었다는 것을 나타냄

펄스 폭 변조 0,1,2

고속 입력 장치의 입력 핀

고속 출력 장치의 출력 핀

LOW ACTIVE : 외부 메모리와 정보 교환을 하는 버스 컨트롤러의 일이 끝나지 않았을 경우 사용

LOW ACTIVE : 외부 다른 디바이스와 정보 교환에 버스가 쓰이고 있는 경우

LOW ACTIVE : 버스를 컨트롤 함

타이머 2의 증가/감소

HIGH ACTIVE

전류 절약 회로의 타이밍 핀

상승 모서리에서 인터럽트 11번이 설정되어 있을 경우 그 때의 타이머2의 시간을 기억

LOW ACTIVE : 현재 프로그래밍 동작을 하고 있는 경우

외부 하위 메모리 쓰기/외부 메모리 쓰기

외부 상위 메모리 쓰기/버스 상위 허용

타이머2의 값을 기화(리셋)

LOW ACTIVE : EPROM과 주소 교환없이 순차적으로 정보를 교환

외부 메모리와의 사이클을 조정해 주는 핀

타이터2 클럭 입력이나 통신할 경우 보레이트 생성 펄스 입력

 HIGH : 내부메로리 선택
LOW: 외부메모리 선택

 외부메모리를 읽으라는 신호

외부 메모리를 엑세스 할 때 1이 됨(ADD Latch Enable)

LOW ACTIVE : 외부 메모리를 엑세스 할 때

 외부 메모리 읽는 동안 신호 출력
HIGH 경우 : 명령 fetch
LOW 경우 : 데이터 읽어 들임

HIGH ACTIVE 일 경우 :16 비트 버스
LOW ACTIVE 일 경우 : 8  비트 버스(ccr에서 설정)

내부에서 생성되어진 클럭/2의 출력 핀

프로세서의 오실레이터 인버터 또는 내부 클럭 생성기의 입력 핀

프로세서의 오실레이터 인버터의 출력핀

 

4) 메모리 구조

일반적으로, 마이크로 프로세서를 공부할려면, 마이컴의 메모리 구조를 알고 있어야 한다. 그래야, 회로 설계분만 아니라 프로그램을 잘 할 수 있다. 80c196kc의 메모리 구조는 전체 메모리가 64k byte를 가지고 있다.
0000H 번지에서부터 0FFFFH번지까지 이며, 2의 16승으로 총 64K이며 단위는 byte의 단위를 가지게 된다. 각각의 메모리 부분을 살펴보면 밑에 있는 그림과 같다.  

 

전체 메모리 중에 프로그램 메모리와 special-purpose memory는 2000H - 5fffH까지를 차지하고 있으며, 총 16kbyte의 메모리를 가지고 있다. 이 메모리가 우리가 사용하게 될 EPROM 혹은 프로그램 메모리가 되는 것이다. 80c196kc는 리셋후에 초기에 2080H번지에서부터 시작하게 된다는 것이다.

 port3 와 port4는 1word(=2byte=16bit)로 구성되어져 쓰기/읽기도 하는 부분이다. 특히 이 부분은 80C196KC의 칩구조에서 보았듯이 Address/Data bus 역할을 의 값에 따라하기도 하고 I/O port역할을 겸하고 있다.

 

이들 메모리중에 Special Purpose Memory의 구조를 다시 한번 살펴보도록 하자. special Purpose Memory에는 PTS , standard interrupts, a security key, Chip configuration byte등으로 구성되어 있다.  

 

* 참고 : "Reserved" 메모리 영역는 테스트나 앞으로 추가될 것들을 위해 예약이 되어있는 부분입니다. 이 부분은 일반 사용자 프로그램 사용이 금지되어 있다. 인터럽트 벡터 상위(upper) ,하위(lower) 번지 됩니다. CCB는 80c196kc가 리셋되고 처음으로 읽어 들이는 바이트를 의미한다. 이는 칩설정바이트이며, 80c916kc를 어떤 선택사양으로 쓸 것이지를 정의 하는 기능을 가진다.
 

 

 

 아래의 256바이트(0h~ffh)를 하위 레지스터 파일이라고 말하며, 그 중에 0h~19h를 특수 기능 레지스터 (SFR : special function register :특별 기능 레지스터)라고 한다. 또한, 1Ah~FFh는 general purpose register RAM 이라 하며, 이 영역에서 CPU가 연산을 하거나 임시 데이터 등을 저장할 때 사용하는 메모리입니다. 또한 상위 레지스터 파일을 투영시켜 8비트,16비트, 32비트 단위로 읽게 됩니다.

 

<< 참고 >> CCR   

CCR (2018h)

비트

기능

1

0

0

전력 절약 모드 허용

허용

억제

1

버스폭 선택

16  비트 버스

8 비트 버스

2

쓰기 스트로보 모드 선택

3

주소 유효 스트로보 선택

ALE

4

내부 READY제어 모드

00 :지연 1 상태

 01 : 지연 2 상태

10 : 지연 3 상태

     11 : 외부 지연 상태

5

6

프로그램 고정 모드

       00 : 읽기, 쓰기 보안

01 : 읽기 보안

10 : 쓰기 보안

11 : 보안 안됨

7

 5) 80C196KC 강좌

     ☞ CPU의 동작, 어셈블러, embodded controller

     ☞ Memory와 IO, CPU의 memory관리, Address mapping/ decoding, address/          data BUS multipaexing, BUS cycle

     ☞ 196의 특징 및 내부 구조, 어셈블러 기초, 196 어셈블러 기본

     ☞ 196어셈블리어 - 데이터 전송 명령 1

     ☞ 196어셈블리어 - 데이터 전송 명령 2, 산술 연삼 명령 1

     ☞ 196어셈블리어 - 산술 연산 명령 2

     ☞ 196어셈블리어 - 분기(branch)명령, 프로그래밍 연습

     ☞ 196어셈블리어 - 논리 연산 및 shift 연산 명령

     ☞ 196어셈블리어 - Stack과 subroutine 및 system 제어 명령, 프로그래밍 연습

     ☞ 196 Hardware - pin 기능

     ☞ 196 Hardware - IO port

     ☞ 196 Hardware - Interrupts



 

상호 : (주) 로보블럭 사업자등록번호:214-86-56219 통신판매업신고19-2544 대표: 신대섭 전화:(02)2679-8556 Fax :(02)2679-8557
본사 : 경기도 부천시 원미구 약대동 부천 테크노파크 401동 502호     서울사무소 : 서울시 영등포구 문래동 4가 8-1 4층
Copyright(C) 2004, (주) 로보블럭 시스템즈 All Rights Reserved E-Mail : WebMaster