770 likes | 1.59k Views
8051 System 구조. 정보통신 • 컴퓨터 공학부 송명규. 8051 특징 [1]. 마이크로콘트롤러. 마이크로프로세서. 8051 특징 [2]. 8051 특징 벡터 방식의 인터럽트 수행 = RESET = 0000H bit 단위의 연산 (Boolean) 과 제어기능 우수 = IO Port Bit 제어가능 8bit 단위의 4 개의 I/O port = P0 – P3 = 32Bit i/o 네 가지 모드를 가진 2 개의 16bit Timer / Counter = T0, T1
E N D
8051 System 구조 정보통신•컴퓨터 공학부 송명규
8051 특징 [1] 마이크로콘트롤러 마이크로프로세서
8051 특징[2] • 8051 특징 • 벡터 방식의 인터럽트 수행 = RESET = 0000H • bit단위의 연산(Boolean)과 제어기능 우수 = IO Port Bit 제어가능 • 8bit 단위의 4개의 I/O port = P0 – P3 = 32Bit i/o • 네 가지 모드를 가진 2개의 16bit Timer / Counter = T0, T1 • Program-memory / Data-memory 각각 64K까지 확장가능 • 내부 128 bytes of on-chip Data RAM = 0000 – 007FH • 비트조작 및 연산, 전송가능 내부 16 Byte 메모리 내장 = 128 Bit = 20-2FH • 다중(전이중)모드로 사용할 수 있는 고속 serial port = SCON 레지스터 • 우선순위 설정이 가능한 5개의 interrupt = IP 레지스터 • 파워 절약 모드 (idle mode / power-down mode) = PCON 레지스터 • 내부 4k byte 의 Flash ROM 프로그램 메모리 = 0000 – 0FFFH • EA Pin 전환에 의한 완침 마이컴 및 외부 메모리 인터페이싱 • 1개의 16 bit 간접번지 지정용 어드레스 포인터 레지스터 내장 = DPTR • CMOS 소자의 파워 절약모드 (아이들 모드, 파워다운 모드)
8052 특징[3] • 8052 특징 (앞 Page 의 특징 + 다음과 같은 특징이 있다.) • 3개의 16bit Timer / Counter = T2 추가됨 • 256 bytes of on-chip Data RAM = 0000 – 00FFH • 우선순위 설정이 가능한 6개의 interrupt = T2 • 내부 8k byte 의 프레쉬 ROM 프로그램 메모리 내장 = 0000 – 1FFFH • SFR(특수기능레지스터) 영역을 간접번지로 지정하여 Data RAM 사용 • UART 비 동기식 시리얼 통신 속도를 T2를 사용하여 발생 시킬수 있다. • Timer/counter 2에는 캡처 기능 추가 • T2 는 주로 USART 시리얼통신 전송속도 발생기로 주로 사용됨 • 최근에 출시된 80S51 CPU는 SPI방식의 ISP 기능이 추가되어 있다 예) 89S51,89S52,89S4051,89S2051,AT89C51AC2,ED2,RB2,CC01,CC02
8051(2) 만의 독특한 특징 • 8051(2) 만의 독특한 특징= MCS-51 특징 • SFR(특수기능레지스터) 영역을 간접번지로 지정하여 Data RAM 사용 • Program-memory / Data-memory 각각 64K까지 확장가능 • 비트조작 및 연산, 전송가능 내부 16 Byte 메모리 내장 = 128 Bit = 20-2FH • 어드레스 예제 보기= 이해 안 되면 암기 해요. • 0000 – 000F = 16 Byte, 0000 – 001F = 32 Byte • 0000 - 00FF = 256 Byte, 0000 – 03FF = 1K Byte = 1024 Byte • 0400 – 07FF = 1K Byte, 0000 – 07FF = 2K Byte = 2048 Byte • 0800 – 0FFF = 2K Byte, 0000 – 0FFF = 4k Byte = 4096 Byte • 0000 – 1FFF = 8K Byte, 0000 - 3FFF = 16K Byte • 4000 – 7FFF = 16K Byte, 0000 – 7FFF = 32K Byte • 8000 – BFFF = 16K Byte, C000 – FFFF = 16K Byte • 8000 – FFFF = 32K Byte, 0000 – FFFF = 64K Byte • 10000 – 1FFFF = 64K Byte, 00000 – 1FFFF = 128K Byte • 00000 – 7FFFF = 512K Byte, 00000 – FFFFF = 1M Byte
MCS-51 시리즈 종류[1] 8051(2) = 마스크 Type CPU 80C31(2) = 내장된 Flash 메모리 없음, 외부 메모리 전용 CPU 87C51(2) = EP-ROM 메모리 내장된 CPU = 자외선 소거 후 다시 사용 됨 89C51(2) = Flash 메모리 내장된 CPU, 프로그램 시 ROM Write 장비 필요 89S51(2) = ISP 프로그램밍 기능이 있는 Flash 메모리 내장된 CPU, SPI 기능내장
MCS-51 시리즈 종류[2] Atmel 사에서 출시되는 8051 시리즈
MCS-51 시리즈 종류[3] Philps 사에서 출시되는 8051 시리즈
Pin 기 능 RxD 시리얼 입력 포트 TxD 시리얼 출력 포트 INT0 외부 인터럽트 0 INT1 외부 인터럽트 1 T0 타이머 0 외부 입력 T1 타이머 1 외부 입력 WR 외부 데이터 메모리 출력 스트로브 RD 외부 데이터 메모리 입력 스트로브 RESET 시스템 리셋 ALE/PROG Address Latch Enable PSEN Program Strobe ENable EA/Vpp External Access Enable XTAL 1,2 반전된 발진 증폭기에 대한 입력, 출력 P0~3 입출력 포트 A0~A15 Address Bus D0~D7 Data Bus 8051 외부 Pin 기능 [1]
8052 System 전체 내부 구조 External Interrupt 8K Byte Timer/Counter 256 Byte ROM Program 4K Byte Timer 2 RAM 128 Byte Interrupt Control Timer 1 Timer 0 CPU Serial Port Bus Control I/O Port OSC P0 P2 P1 P3 TxD RxD ALE EA PSEN Address/Data
8051 주요 레지스터 [1] • CPU • PC (Program Counter) • 16bit Register = 다음에 수행할 명령어 번지수를 가리키는 어드레스 포인터 • ALU (Arithmetic Logic Unit) = 누산기 • 8bit 논리연산 • 캐리 없는 덧셈, 캐리 있는 덧셈/뺄셈 • 8bit / 16bit increment, 8bit decrement • BCD(Binary Coded Decimal) 10진 조정 • 곱셈 / 나눗셈 • AND, OR, XOR, rotate • Byte/Bit complement • Nibble 단위의 데이터 교환 • Bit 단위 (Boolean) 처리기능 • 조건 점프의 판단기능 • 연산 결과값 저장 및 연산상테 반영 = PSW 레지스터와 연결동작
8051 주요 레지스터 [2] • Make CPU Internal signal • Instruction Fetch -> Instruction Decoding ==(6분주) -> Execute(6분주) • 인스트럭션 디코더(Instruction Decoder) = IR 프로그램 메모리로부터 읽은 머신코드를 해석하여 명령어에 해당하는 동작이 가능하도록 ALU나 버스 컨트롤러와 같은 내장된 처리모듈을 제어하는 신호발생 • A Register (Accumulator) = ACC 8 Bit 레지스터로 산술, 논리연산과 관련하여 ALU의 입력이나 출력 데이터를 리드하거나 라이트할 때 데이터 버스 입출력의 매개역할을 담당하는 저장 장소로 사용되며 외부로 데이터를 출력하거나 외부로부터 데이터를 입력할 경우 반드시 ACC 레지스터를 경유해야 된다. 일반 범용 레지스터로도 사용 된다. • B Register (Temporary Register) 8 Bit 레지스터로 곱하기, 나누기 연산시 사용되는 레지스터로 ACC와 조합하여 동작한다. 일반 범용 레지스터로도 사용 된다.
8051 주요 레지스터 [3] • DPTR(Data Pointer Register) 16 Bit 데이터 포인터 레지스터로서 외부 데이터 메모리로부터 데이터를 읽거나 쓸 때 외부 메모리의 어드레스 지정 포인터로 사용된다. 주로 간접번지 지정 방식에서 외부 메모리 읽기/쓰기 시에 어드레스 포인터로 사용되고 일반 범용 레지스터로도 사용 된다.(MOVC, MOVX 명령사용) • SP(Stack Pointer) 8 Bit 레지스터로서 C언어로 말하면 보통 로컬(Local)변수나 함수 호출시 되돌아올 어드레스를 저장하는 스택을 가리키는 어드레스 포인터로 사용되며PC와 연계되어 동작 한다. 즉 서브루틴(서브함수) 호출이나 인터럽트 발생시에 다음에 수행할 번지를 스텍에 PUSH하며 이때 어드레스는 -2 감소하고 호출 종료후에는 복귀할 주소를 POP 하는데 이때 어드레스는 +2 증가하여 메인루틴에서 호출전 다음번지 프로그램을 자동으로 실행 한다. PUSH, POP 명령어가 준비되어 있으며 SP는 Stack 레지스터의 최상위 번지를 가리키며 Stack은 내부 데이터(Data) 메모리에만 위치할수 있고 다운 카운터 한다.
8051 주요 레지스터 [4] • Stack • Stack은 SFR외의 영역에 임의의 위치에 설정 가능 • Reset에 의해 SP=0x07로 0x08 부터 사용 • MOV SP,#60 명령으로 메모리 위치 변경이 가능 • C에서는 내부적으로 처리 • LIFO방식으로 어드레스가 적제 됨 • 보통 내부 128 Byte(0000 – 007F)의 최상위 메모리 번지에 설정된다. • 버스 컨트롤러(Bus Controller) 인스트럭션 디코더의 제어신호와 시스템 클록에 동기하여 메모리 제어신호를 발생시키는 역할을 한다. 주요 메모리 제어 신호로는 RD, WR, ALE, PSEN, D0 – D7, A0 – A15등이며 EA핀 신호도 관련된다. - 프로그램 메모리 ROM 리드 시 : MOVC , CODE, CONST, = PSEN 신호 발생 - 외부 데이터 메모리 RAM 엑세스 시 : MOVX, XDATA, PDATA = WR 신호 발생
8051 주요 레지스터[5]PSW (Program Status Word) Register [1]
8051 주요 레지스터[6]PSW (Program Status Word) Register [2]
8051 주요 레지스터[7]PSW (Program Status Word) Register [3]
SFR(Special Function Register)특수기능 레지스터 [7] • 시리얼 포트, 인터럽트, 타이머/카운트 등 주변기기 상태정보나 제어값을 설정 및 읽어 CPU에 내장된 주변기기를 제어하는 제어용 레지스터로서 플립플롭으로 구성된 바이트 단위의 레스지터 이다. 일부 제어용 제지스터는 Bit 단위로도 접근할수 있으며 내부 어드레스 상위 128 Byte(0080-00FF)번지에 매핑되어 있다. 직접번지 지정방식으로만 엑세스 가능하며 8052 에서는 이 영역을 간접번지 지정 방식으로 엑세스하여 유저용 내부 RAM으로도 사용할수 있다 이 때 변수 선언은 C언어 확장 키워드 “IDATA”로 선언해야 한다. 어셈블리 언어에서는 8 Bit 내부 간접번지 어드레스 포인터 @R0, @R1를 사용하여 접근할수 있다. (8052 에서만 사용할수 있음) - C 언어 사용 예 idata unsigned char k, j = 0; k = 5; // 간접번지, 8052만 적용 sfr IE = 0xa8; // 직접번지 SFR 영역 = 잘 사용안함 = 해더화일로 대체 - 어셈블리 사용 예 mov r0,#85h ; 0085 번지 SET mov a, @r0 ; 0085 번지 내용을 a 레지스터로 읽어들림 mov @r0, a ; a 레지스터 내용을 0085 번지에 저장
SFR(Special Function Register)특수기능 레지스터 [8] • 내부 RAM 0x80 ~ 0xFF에 할당 = 직접번지 지정 방식으로만 접근 가능 • CPU 동작과 관련된 레지스터 = A, B, PSW, SP, DPTR • 포트 (Port) : P0, P1, P2, P3 • Interrupt : IP, IE • Power Control : PCON • Timer : TCON,TMOD,TL0, TL1, TH0,TH1 • Serial 통신 : SCON, SBUF • 주변 칩과 내장 주변기기 연계성 = 참고용 - UART = 8251(1ch), 8250(2ch) - Timer/Count = 8253(1M), 8254(4M) - 외부인터럽트 = 8259 - I/O Port = 8255
8051 Memory MAP 1. 메모리 구조 [1] • - 64K Byte 프로그램 메모리 (Program Memory, CODE) - 64K Byte 외부 데이터 메모리 (External Data Memory, XDATA) - 256 Byte 내부 데이터 메모리 (Internal Data Memory, 8052, IDATA) - 128 Byte 내부 데이터 메모리 (Internal Data Memory, 8051, DATA)
FFFF 60K External ROM 64K 4K(8051) 1000 0FFF 0FFF Internal ROM EA=0 EA=1 0000 0000 Program Memory 8051 Memory MAP 2. 프로그램 메모리 [1] EA = 1 60K Byte 외부 EA = 0 64K Byte 외부 4K Byte 내부
8051 Memory MAP 2. 프로그램 메모리 [2] 8051 프로그램 메모리 8052 프로그램 메모리
8051 Memory MAP 2. 프로그램 메모리 [4] 8051 : 내부 4K Byte 내장 = 0000 - 0FFFH 8052 : 냬부 8K Byte 내장 = 000 – 1FFFH 외부에 최대 64K Byte 까지 인터페이스 할수 있다. EA Pin(31번)에 의해 외부 및 내부 Program Memory를 선택 가능 C언어 Key 워드 = code, const = PSEN 신호 와 연계 됨
FFFF 64K External RAM 64K 0000 Data Memory 8051 Memory MAP 3. Internal Data 메모리 구조 [3] FF Special Function Register (SFR) 80 7F User Data Memory area 30 2F Bit unit Processing area 20 1F Bank 3 (R0~R7) 18 17 Bank 2 (R0~R7) 10 0F Bank 1 (R0~R7) 08 07 Bank 0 (R0~R7) 00
8051 Memory MAP 3. Internal Data 메모리 구조 [5] • Internal Memory • 내부 Data 메모리는 일반 Data RAM 영역, SFR 영역으로 구분 • 하위 128 Byte(00-7Fh) = 직접(data) 및 간접(idata) 번지로 호출 • 상위 128 Byte(80-FFh) = 8052에만 있음, 직접(data)번지 = SFR 영역 간접(idata)번지 = 유저 RAM영역 • 8051 = 하위 128 Byte만 있음 • 8052 = 하위 128 Byte + 상위 128 Byte 가 있음 • Data 저장 및 Stack 영역으로 사용 • Stack = Stack point (SP) 는리셋되면 07h = 뱅크 1영역에 위치 • 30 – 7Fh는 사용자 RAM영역 = 직,간접번지 지정가능, 사용자 Stack 위치 • Common Variable Area (User Data Area = 30 – 7Fh) • Special Function Register (SFR = 80 - FFh) • Bit unit processing variable area = 20 – 2Fh • C언어 Key 워드 = DATA(직접 00-7Fh), IDATA(간접 80-FFh, 0852)
8051 Memory MAP 3. Internal Data 메모리 구조 [6] 8051 데이타 메모리 8052 데이타 메모리
8051 Memory MAP 4. 사용자 Data 영역 • 사용자 데이터 영역 • 사용자가 정의하여 사용하는 일반 메모리 • 0x30~0x7FH 메모리 영역에 위치 • C 에서 char, int 등의 일반 변수를 선언하면 이 영역에 할당 • 스텍 레지스터 영역도 포함 된다. (보통 최상위 번지에 위치) • C언어 Key 워드 : DATA, IDATA 영역 • 스크래치 패드(Scratch Pad) 영역 이라고도 한다. • data char song; song = ‘A’; • data int smg; smg= 200; • idata char k = 5;