1 / 83

8051 의 이해

8051 의 이해. 8051 의 칩 구성 및 CPU 이해 메모리 구조 8051 의 신호 포트 구성. dolicom@naver.com http://blog.naver.com/dolicom. 8051 의 특징. 4K 바이트의 프로그램 메모리 내장 4 개의 레지스터 뱅크를 포함한 128 바이트 데이터 메모리 사용자 지정 가능한 128 비트 플래그 불 (boolean) 대수 처리 기능 8 비트 단위의 4 개의 입 . 출력 포트 (P0,P1,P2,P3) 2 개의 16 비트 타이머 / 카운터

kapono
Download Presentation

8051 의 이해

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8051의 이해 8051의 칩 구성 및 CPU 이해 메모리 구조 8051의 신호 포트 구성 dolicom@naver.com http://blog.naver.com/dolicom

  2. 8051의 특징 • 4K 바이트의 프로그램 메모리 내장 • 4개의 레지스터 뱅크를 포함한 128바이트 데이터 메모리 • 사용자 지정 가능한 128비트 플래그 • 불(boolean) 대수 처리 기능 • 8비트 단위의 4개의 입.출력 포트(P0,P1,P2,P3) • 2개의 16비트 타이머/카운터 • 다중모드로 사용할 수 있는 고속 직렬 포트 • 우선 순위 설정 가능한 4개의 인터럽트 • 64K 바이트까지 확장 가능한 프로그램 데이터 메모리 • 아이들(idle) 모드와 파워 다운 모드 기능

  3. 8051 패밀리 기능8051 8052 8031 ROM (program) 4K 8K 0K RAM (데이터) 128 256 128 Timer 2 3 2 I/O 핀32 32 32 Serial포트 1 1 1 인터럽트소스 6 8 6

  4. 8051의 이해 8051 내부 구조

  5. 8051의 내부 구성 외부 인터럽트 Timer/Counter ROM 프로그램 Interrupt Control Timer 1 카운터 입력 RAM Timer 0 CPU Serial Port Bus Control 4 I/O 포트 OSC P0 P1 P2 P3 TxD RxD Address/Data

  6. CPU - 8051 • 제어장치 (CU : Control Unit) • A,B레지스터 • 일반 레지스터 (R0~R7) • PSW (Flag) • PC (16비트 프로그램 카운터) • SP (8비트 내부 데이터 데이터 포인터) • 데이터 포인터 (DPTR)

  7. 제어장치 CU – Control Unit • 명령을 읽어 해독하고 명령이 실행될 때까지 CPU의 내부 신호를 만든다. • CPU 제어신호 • 소스/목적지 오퍼랜드를 제어하는 신호 • MOV A,#10 -> 10을 읽어 레지스터에 저장 • 산술논리 연산장치의 동작을 제어하는 신호 • ADD A,#10 -> A 레지스터와 10(오퍼랜드 임시버퍼)와 더하기 위한 ALU 제어 신호 발생

  8. PC 프로그램 카운터 • 프로그램 메모리에 저장되어 있는 명령의 실행을 위한 위치를 가리키는 16비트 레지스터 • 실행시킬 명령이 기억되어 있는 프로그램 메모리의 번지를 가리킨다. • CPU 리셋(RESET) 신호에 의해 0x0000으로 지정됨. • 리셋에 의해 프로그램 메모리의 0000H번지 부터 실행

  9. ALU (Arithmetic Logic Unit) • 8비트 산술 논리 연산장치 • 덧셈 +, 뺄셈 – • 8/16비트 +1 증가, 8비트 -1 감소 • BCD (Binary Coded Decimal) 10진 조정 • 곱셈 나눗셈 • AND, OR, XOR, 로테이트(Rotate) • 바이트 컴플리먼트(1의 보수), 비트 컴플리먼트 • 니블(nibble: 4비트) 단위의 데이터 교환 • 비트 단위 처리 기능 (Boolean 대수 처리기능) • 조건 점프의 판단 기능

  10. 레지스터 및 PSW • A(accumulator) • 산술 논리 연산명령에서 연산자로 사용 - 명령이 끝나면 결과 기억 • 로테이트, 패리티 검사, 제로 테스터 명령에 사용 • 간접 점프 및 프로그램 읽기명령에서 오프셋(offset)으로 사용 • 외부 데이터 메모리와 데이터 전송 • 프로그램 메모리에서 데이터 읽을 때

  11. PSW (Program Status Word) • ALU을 통해 실행되는 결과의 플래그 상태 저장 • 직접 영향을 주는 명령 • ADD, SUBB, RRC, … • 모든 명령이 영향을 주지 않는다 : MOV • 사용자 플래그 : F0 • 레지스터 뱅크 선택 (RS1, RS0)

  12. PSW 구성 CY AC F0 RS1 RS0 OV -- P PSW.0 CY : 캐리 플래그 (Carry Flag) PSW.1 AC : 보조 캐리 플래그 (Auxiliary carry flag) PSW.2 F0 : 사용자 플래그 PSW.3 RS1 : 뱅크 선택 상위 비트 1 PSW.4 RS0 : 뱅크 선택 상위 비트 0 PSW.5 OV : 오버플로 플래그 (Overflow Flag) PSW.6 – PSW.7 P : 패리티 플래그 (odd/even parity) RS1RS0 레지스터 뱅크 주 소 리셋 0 0 000H-07H 0 1 108H-0FH 1 0 210H-17H 1 1 3 18H-1FH

  13. B, SP • B 레지스터 • 8비트 곱셈/나눗셈 – A레지스터와 함께 16비트 레지스터로 사용 • 곱셈/나눗셈의 결과 저장 • SP (스택 포인터 : Stack Pointer) • 8비트로 스택의 메모리 번지를 가리킴(RAM) • 8051의 내부 메모리 사용 • 리셋 후 08H 번지로 지정 –프로그래머에 의해 변경하여 사용 할 수 있다. • 스택에 저장(PUSH) 할 때 주소값 1증가하고 꺼낼 때 1 감소

  14. DPTR (Data Pointer) • 16비트 레지스터 • 상위 8비트 (DPH)와 하위 8비트(DPL)로 사용 가능 • 외부 데이터 메모리에서 전송할 때 주소값으로 사용 –어드레스 포인터 • 간접 점프명령에서 점프할 주소값 저장 • 프로그램 읽기 명령에서 베이스(base) 레지스터

  15. 8051의 이해 8051 메모리 구조

  16. 8051 메모리 구조 FFFF FFFF FF 특수기능 레지스터 (SFR) 80 7F 사용자 데이터 메모리 영역 30 2F 비트단위 처리 영역 64K 외부 RAM 64K 60K 외부 ROM 64K 20 1F 뱅크 3 (R0~R7) 18 17 뱅크 2 (R0~R7) 10 4K(8051) 1000 0F 뱅크 1 (R0~R7) 0FFF 0FFF 내부 ROM 08 EA=0 07 뱅크 0 (R0~R7) EA=1 0000 0000 0000 00 데이터 메모리 프로그램 메모리 내부 RAM & SFR

  17. 8051의 메모리의 구성 I • 내부 메모리 • 특수 영역 내부 RAM • 일반 레지스터 • 일반 변수 영역(사용자 데이터 영역) • 특수 기능 레지스터 (Timer, 시리얼 통신 제어) • 비트 단위 처리 변수 영역 • 프로그램 영역 • 4K 바이트(8051) 프로그램 저장 • 다양한 용량의 패밀리 칩이 있음

  18. 8051의 메모리의 구성 II • 외부 메모리 • 외부 프로그램 메모리 확장 (외부 ROM) • 64K 바이트 까지 확장 가능한 프로그램 메모리 • 8051의 경우 내부 4K 바이트는 EA 핀으로 제어 • EA=0 : 전 영역을 외부 ROM으로 0x0000~0xFFFF • EA=1 : 내부 ROM (0x0000~0x0FFF)+외부 ROM(0x1000~0xFFFF) • 외부 데이터 메모리 • 내부 데이터 메모리와 별도로 64K 바이트 까지 확장 가능 • 별도의 명령에 의해 외부 데이터 억세스 • NOVX A,@DPTR

  19. 8051의 이해 내부 RAM • 일반 레지스터 • 비트 어드레스 영역 • 사용자 데이터 영역과 스택 • SFR

  20. 8051의 메모리의 구성 • CPU 일반 레지스터 • R0~R7 일반레지스터 4뱅크 • 8개의 일반 데이터 저장용 레지스터 • 4개의 뱅크로 구성 • 뱅크 설정은 PSW의 RS1:RS0 비트를 설정하면, 이 R0~R7은 해당 메모리에 할당 된다. • RS1:RS0에 의해 뱅크가 할당되면 레지스터 R0~R7은 해당 뱅크로 주소값이 설정 된다.

  21. 뱅크의 개념 MOV A,R0 RS[1:0]=10 RS[1:0]=11 RS[1:0]=01 RS[1:0]=00 PSW R7 07 1F 0F 17 R7 R7 R7 R6 06 1E 0E 16 R6 R6 R6 R5 05 1D 0D 15 R5 R5 R5 R4 04 1C 0C 14 R4 R4 R4 R3 03 1B 0B 13 R3 R3 R3 R2 02 1A 0A 12 R2 R2 R2 R1 01 19 09 11 R1 R1 R1 R0 00 18 08 10 R0 R0 R0 뱅크 2 뱅크 3 뱅크 1 뱅크 0 R0 : 18 R0 : 10 R0 : 08 R0 : 00

  22. MOV A,R0 뱅크 2 뱅크 3 뱅크 1 뱅크 0 . . . . . . . . . . . . B5 R2 R2 03 02 4D 1A 0A 12 B5 R2 R2 44 R1 R1 D3 01 C3 19 09 11 A5 R1 R1 30 R0 34 00 13 18 R0 08 10 22 R0 R0 RS[1:0]=11 RS[1:0]=01 RS[1:0]=00 PSW RS[1:0]=10 22 30 R0 13 34 33 44 A 22 실행전 11 실행후 22 30 A 13 34

  23. ISR (Interrupt Service Rountine) 인터럽트 서비스루틴-인터럽트 시 처리 프로그램 뱅크의 사용 예 • 인터럽트가 발생하면 인터럽트 서비스 루틴에서 사용하는 모든 레지스터를 스택에 대피 해야 하는데, 뱅크를 변경하면 기존의 뱅크 R0~R7의 레지스터 값은 유지되고 다른 뱅크에 값이 변경 된다. 뱅크 0 뱅크 1 • A,B,PSW 스택에 • 대피 • ISR의 시작에서 • 뱅크 변경 . . . . . . * 리셋 후 초기에 SP=0FH 로 변경 R2 03 02 R2 4D 0A R1 D3 01 R1 C3 09 34 00 R0 R0 13 08 ISR에서 사용

  24. 비트 어드레스 영역 • 내부 RAM 0x20~0x2F 16바이트 • 각 비트 별로 변수 선언 가능 • 16x8=128개의 비트 변수 선언 가능 • 비트 번호 0x00~0x7F로 선언 • C에서 선언과 사용 bit keyst; - 0과 1의 boolean 상태 bit save, cy; save = P14 ^ P15; - 포트1의 4와 5핀의 상태를 XOR 한다 cy = (P14 & P15) | (save & P16);

  25. 사용자 데이터 영역과 스택 • 사용자 데이터 영역 • 사용자가 정의하여 사용하는 일반 메모리 • 0x30~0x7F 메모리 • C에서 char, int 등의 일반 변수를 선언하면 이 영역에 할당 • 스택 • 스택은 SFR외의 영역에 임의의 위치에 설정할 수 있다. • 리셋에 의 SP=0x07로 0x08 부터 사용 • MOV SP,#60 명령으로 메모리 위치 변경이 가능 • C에서는 내부적으로 처리 된다. • Startup.a51에 정의 되어 있다.

  26. SFR –특수 기능 레지스터 • 내부 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

  27. 외부 데이터 메모리 • 내부 RAM과 별도 • 64K 바이트 까지 가능 • 외부에 데이터를 저장 한다. • MOVX 명령으로 전송 MOVX A,@DPTR MOVX @DPTR,A • C에서 #define SELECT (*(unsigned char*)(0x2fc48)) SELECT = 0x9e; #define ADDR (*(unsigned char xdata *)(0x22000)) ADDR= 0x31; C = *((char xdata *) 0x27000);

  28. 프로그램 메모리 • 8051은 내부 4K 바이트 ROM 0x0000~0x0FFF • 외부 프로그램 메모리 가능 (64K 바이트) • 내부 ROM과 외부 ROM이 있을 경우 내부의 4K 바이트 ROM을 선택 가능 FFFF EA=0 FFFF EA=1 외부 ROM 64K 외부 ROM 60K 4K(8051) 1000 4K(8051) 1000 0FFF 0FFF 0FFF 0FFF 내부 ROM 사용 않함 내부 ROM 사용 외부 ROM 4K사용 않함 0000 0000 0000 0000 프로그램 메모리 프로그램 메모리

  29. C51에서 사용하는 메모리형 • C51에서 사용하는 메모리형과 포인터값 메모리형 포인터 값 설 명 idata 1 간접 액세스 가능한 내부 RAM 0x00~0x7F xdata 2 외부 데이터 메모리 0x0000~0xFFFF pdata 3 페이지화된 외부 데이터 메모리 0x00~0xFF data 4 직접 액세스 가능한 내부데이터 0x00~0x7F code 5 프로그램 메모리 (64K 0x0000~0xFFFF)

  30. 파워 절약 모드 • 8051의 파워 절약 모드 • 아이들 모드(idle mode) • 파워 다운 모드 • PCON으로 설정 한다. • IDL=1 : 아이들 모드 • PD=1 : 파워 다운 모드 • IDL=1, PD=1 : 파워 다운 모드 7 6 5 4 3 2 1 0 - - - PD IDL GF0 SMOD GF1 PCON 0x87

  31. XTAL2 XTAL1 8051 OSC • 인터럽트 로직 • 시리얼 포트 • 타이머 클럭발생 회 로 CPU PD IDL

  32. 아이들 모드 (Idle Mode) • 타이머/시리얼 인터럽트에 의해 아이들 모드 빠져 나온다. • ISR에서 IDL을 클리어 하여 보통상태로 • 시스템 쉬지 있다가 외부 입력이 들어오면 응답 • 시스템 초기설정 • 이벤트가 발생할 때까지 대기하여 파워 절약 • 이벤트시 인터럽트 요청 -> ISR로 들어 간다. • ISR에서 IDL 클리어 하여 처리하고 • 다시 IDL로 들어 간다.

  33. 파워 다운 모드 • 클럭 발진 자체를 정지하여 파워 다운에서 빠져 나오려면 리셋 밖에는 없다. • 데이터 메모리와 레지스터 값 유지 • 시스템 이상 시 내부 데이터 RAM 보존 • 데이터 메모리는 백업 배터리가 연결되어 있어야 하며, 전원 감시가 필요

  34. 파워다운 모드 시 진행 절차 • 시스템을 초기설정하고 프로그램 실행 • 전원 이상 장치를 계속 감시 • 전원 이상 발생하면 내부 데이터 메모리를 백업 배터리가 있어 데이터 보존이 가능한 외부 메모리로 옮김 • CPU는 PD를 1로 셋 하여 파워다운 모드로 들아감 • 파워다운 모드는 하드웨어 리셋으로 해제

  35. 8051의 이해 8051 핀 기능 및 인터페이스

  36. Vcc P1.0 1 40 P0.0(AD0) P1.1 2 39 P0.1(AD1) P1.2 3 38 P0.2(AD2) P1.3 4 37 8051 (8031) P0.3(AD3) P1.4 5 36 P0.4(AD4) P1.5 6 35 P0.5(AD5) P1.6 7 34 P0.6(AD6) P1.7 8 33 P0.7(AD7) RST 9 32 (RXD)P3.0 10 31 EA/VPP (TXD)P3.1 ALE/PROG 11 30 (INT0)P3.2 12 29 PSEN P2.7(A15) (INT1)P3.3 13 28 (T0)P3.4 P2.6(A14) 14 27 (T1)P3.5 P2.5(A13) 15 26 P2.4(A12) (WR)P3.6 16 25 P2.3(A11) (RD)P3.7 17 24 P2.2(A10) XTAL2 18 23 P2.1(A9) XTAL1 19 22 P2.0(A8) GND 20 21 8051 칩 구조

  37. 8051의 핀 기능 • 포트의 구조 및 기능 • RESET 리셋 • ALE (Address Latch Enable) • PSEN • EA • XTAL1, XTAL2 • 전원 : VCC(+5V), VSS(GND)

  38. 8051핀 –전원과 클럭 발진 • Vcc(40핀): • 칩에 Vcc전압을 공급 한다. • +5V전원. • GND(20핀):GND • 클럭 : XTAL1 / XTAL2(19,18핀) • 단순한 크리스탈 발진기을 XTAL1과 XTAL2에 연결 • 외부에서 발진 클럭을 XTAL1에만 공급

  39. 클럭의 발진 방법 1 • CPU는 이 클럭에 맞추어 동작. C2 XTAL1 30pF 발진회로 C1 XTAL2 30pF CPU GND

  40. 외부 클럭을 사용 • 외부에서 완전한 클럭을 만들어 공급 Vcc CPU 클럭 XTAL1 발진 회로 발진회로 사용 하지 않음 XTAL2 사용하지 않음 GND CPU

  41. Machine Cycle • 한 명령이 실행되기 까지의 전체 시간 • Fetch-기계어 명령 읽기 • Decode- 기계어 기능 해석 • Execute- 실행 • Store- 메모리에 저장 ADD A,R0

  42. 외부 데이터와 클럭-MOVX 예

  43. 머신 사이클 • 한 명령이 실행되는 시간(12클럭) • 주파수와 시간과는 1 1 시간 = 주파수 = 주파수 시간 XTAL = 11.0592 MHz 11.0592 MHz / 12 = 921.6 kHz machine cycle = 1 / 921.6 kHz = 1.085 s XTAL = 16 MHz. 16 MHz / 12 = 1.333 MHz; machine cycle = 1 / 1.333 MHz = 0.75 s

  44. RESET 리셋 • RST(9핀):reset • Active high : 리셋 시 1을 입력 CPU동작 시 적어도 2 머신사이클 동안 1로 유지 • 파워 온 리셋 (Power-on reset) 5V R 4.7K ViR VRESET RESET 74HC14 C 4.7uF

  45. 74HC14 VIN VOUT

  46. RESET Time • R과 C의 값에 따라 시간이 결정 된다. ViR 5V ViH R 4.7K ViL VRESET ViR 0 t C 4.7uF V14in 74HC14 74LS14 내부 입력 처리 VRESET 쉬미트 트리거 RESET time=2머신사이클 이상

  47. 리셋 (Reset) 시 초기값 설정 레지스터 리셋값 PC 0000 ACC 0000 B 0000 PSW 0000 SP 0007 DPTR 0000 모든 RAM 0으로 채움

  48. 8051 외부 데이터 액세스 신호 • /EA(31핀):External Access – 외부 프로그램 메모리 사용 • 8031, 8032은 ROM이 없어 의미 없다. • /EA = 0 외부 프로그램 메모리 사용 • /EA = 1 내부 프로그램 메모리 사용 • /PSEN(29핀):Program Store Enable • 프로그램 메모리를 읽고 있다는 의미 • ROM의 /CS 및/OE신호를 만드는데 사용 • ALE(30핀):Address Latch Enable - Active high • 포트 0 어드레스 버스와 데이터 버스 양쪽 다 사용하기 때문에 구분 필요 • ALE=1일 때, 포트0은 어드레스버스이므로 74LS373에래치하여 하위8비트 주소값으로 사용

  49. 8051의 이해 8051 포트 P0~P3

More Related