6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051...

83
8051 8051의의이해 이해 z 8051의 구성 CPU 이해 z 메모리 구조 z 메모리 구조 z 8051의 신호 z 포트 구성 z 포트 구성 [email protected] http://blog naver com/dolicom http://blog.naver.com/dolicom

Upload: others

Post on 12-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

80518051의의 이해이해

8051의 칩 구성 및 CPU 이해

메모리 구조메모리 구조

8051의 신호

포트 구성포트 구성

[email protected]://blog naver com/dolicomhttp://blog.naver.com/dolicom

Page 2: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 특징8051의 특징

4K 바이트의 프로그램 메모리 내장4K 바이트의 프로그램 메모리 내장

4개의 레지스터 뱅크를 포함한 128바이트 데이터 메모리리

사용자 지정 가능한 128비트 플래그

불(boolean) 대수 처리 기능불(boolean) 대수 처리 기능

8비트 단위의 4개의 입.출력 포트(P0,P1,P2,P3)

2개의 16비트 타이머/카운터/

다중모드로 사용할 수 있는 고속 직렬 포트

우선 순위 설정 가능한 4개의 인터럽트

64K 바이트까지 확장 가능한 프로그램 데이터 메모리

아이들(idle) 모드와 파워 다운 모드 기능

Page 3: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051 패밀리8051 패밀리

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

Page 4: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 이해8051의 이해

80 180 1 내부내부 구조구조8051 8051 내부내부 구조구조

Page 5: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 내부 구성8051의 내부 구성

ROM

외부 인터럽트

Timer/Counter

RAM

ROM

프로그램Timer 0

Interrupt Control

Timer 1 카운터

입력

CPU

4 I/O 포트Serial PortOSC

Bus Control

TxD RxDP0 P1 P2 P3

Address/Data

Page 6: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역
Page 7: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

CPU - 8051CPU 8051

제어장치 (CU : Control Unit)

A B레지스터A,B레지스터

일반 레지스터 (R0~R7)

PSW (Flag)

PC (16비트 프로그램 카운터)PC (16비트 프로그램 카운터)

SP (8비트 내부 데이터 데이터 포인터)

데이터 포인터 (DPTR)

Page 8: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

제어장치 CU – Control Unit제어장치 CU Control Unit

명령을 읽어 해독하고 명령이 실행될 때까지 CPU의 내부 신호를 만든다.까지 의 내부 다

CPU 제어신호소스/목적지 오퍼랜드를 제어하는 신호소스/목적지 오퍼랜드를 제어하는 신호

MOV A,#10 -> 10을 읽어 레지스터에 저장

산술논리 연산장치의 동작을 제어하는 신호ADD A,#10 -> A 레지스터와 10(오퍼랜드 임시버퍼)와 더하기 위한 ALU 제어 신호 발생퍼)와 더하기 위한 ALU 제어 신호 발생

Page 9: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

PC 프로그램 카운터PC 프로그램 카운터

프로그램 메모리에 저장되어 있는 명령의실행을 위한 위치를 가리키는 16비트 레행 위 위치 가리키 비 레지스터

실행시킬 명령이 기억되어 있는 프로그램 메실행시킬 명령이 기억되어 있는 프로그램 메모리의 번지를 가리킨다.

CPU 리셋(RESET) 신호에 의해 0 0000CPU 리셋(RESET) 신호에 의해 0x0000으로 지정됨.

리셋에 의해 프로그램 메모리의 0000H번지부터 실행

Page 10: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

ALU (Arithmetic Logic Unit)ALU (Arithmetic Logic Unit)

8비트 산술 논리 연산장치덧셈 +, 뺄셈 –8/16비트 +1 증가, 8비트 -1 감소

BCD (Binary Coded Decimal) 10진 조정

곱셈 나눗셈

AND, OR, XOR, 로테이트(Rotate)

바이트 컴플리먼트(1의 보수), 비트 컴플리먼트

니블(nibble: 4비트) 단위의 데이터 교환

비트 단위 처리 기능 (Boolean 대수 처리기능)

조건 점프의 판단 기능

Page 11: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

레지스터 및 PSW레지스터 및 PSW

A(accumulator)산술 논리 연산명령에서 연산자로 사용산술 논리 연산명령에서 연산자 사용

- 명령이 끝나면 결과 기억

로테이트 패리티 검사 제로 테스터 명령에로테이트, 패리티 검사, 제로 테스터 명령에사용

간접 점프 및 프로그램 읽기명령에서 오프셋간접 점프 및 프로그램 읽기명령에서 오프셋(offset)으로 사용

외부 데이터 메모리와 데이터 전송외부 데이터 메모리와 데이터 전송

프로그램 메모리에서 데이터 읽을 때

Page 12: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

PSW (Program Status Word)PSW (Program Status Word)

ALU을 통해 실행되는 결과의 플래그 상태 저장태 저장

직접 영향을 주는 명령ADD SUBB RRCADD, SUBB, RRC, …모든 명령이 영향을 주지 않는다 : MOV

사용자 플래그 : F0

레지스터 뱅크 선택 (RS1 RS0)레지스터 뱅크 선택 (RS1, RS0)

Page 13: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

PSW 구성PSW 구성

CY AC F0 RS1 OVRS0 PCY AC F0 RS1 OVRS0 P--

PSW.0 CY : 캐리 플래그 (Carry Flag)PSW.1 AC : 보조 캐리 플래그 (Auxiliary carry flag)PSW.2 F0 : 사용자 플래그PSW.3 RS1 : 뱅크 선택 상위 비트 1PSW 4 RS0 : 뱅크 선택 상위 비트 0PSW.4 RS0 : 뱅크 선택 상위 비트 0PSW.5 OV : 오버플로 플래그 (Overflow Flag)PSW.6 –PSW.7 P : 패리티 플래그 (odd/even parity)

RS1 RS0 레지스터뱅크 주 소

0 0 0 00H 07H 리셋0 0 0 00H-07H

0 1 1 08H-0FH

1 0 2 10H-17H

리셋

1 1 3 18H-1FH

Page 14: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

B SPB, SP

B 레지스터B 레지스터8비트 곱셈/나눗셈 – A레지스터와 함께 16비트 레지스터로 사용스터로 사용

곱셈/나눗셈의 결과 저장

SP (스택 포인터 : Stack Pointer)SP (스택 포인터 : Stack Pointer)8비트로 스택의 메모리 번지를 가리킴(RAM)

8051의 내부 메모리 사용8051의 내부 메모리 사용

리셋 후 08H 번지로 지정 – 프로그래머에 의해 변경하여 사용 할 수 있다.

스택에 저장(PUSH) 할 때 주소값 1증가하고 꺼낼 때1 감소

Page 15: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

DPTR (Data Pointer)DPTR (Data Pointer)

16비트 레지스터

상위 8비트 (DPH)와 하위 8비트(DPL)로상위 8비트 (DPH)와 하위 8비트(DPL)로사용 가능

외부 데이터 메모리에서 전송할 때 주소외부 데이터 메모리에서 전송할 때 주소값으로 사용 – 어드레스 포인터

간접 점프명령에서 점프할 주소값 저장

프로그램 읽기 명령에서 베이스(b ) 레프로그램 읽기 명령에서 베이스(base) 레지스터

Page 16: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 이해8051의 이해

80518051 메모리메모리 구조구조8051 8051 메모리메모리 구조구조

Page 17: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051 메모리 구조8051 메모리 구조

FF특수기능레지스터

FFFF FFFF

7F

30

80

사용자 데이터메모리 영역

(SFR)

302F

20

비트단위처리 영역 외부 ROM

64K외부 RAM

64K60K 64K

1F

1718

뱅크 2

뱅크 3(R0~R7)

64K

100F

0708

뱅크 0

뱅크 1(R0~R7)

(R0~R7)

내부 ROM 0FFF1000

EA=0EA 1

4K(8051)0FFF

00뱅크 0

(R0~R7)

내부 RAM & SFR

0000 0000

프로그램 메모리 데이터 메모리

EA=10000

Page 18: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 메모리의 구성 I8051의 메모리의 구성 I

내부 메모리특수 영역 내부 RAM특수 영역 내부 RAM

일반 레지스터

일반 변수 영역(사용자 데이터 영역)일 수 영역(사용자 데이터 영역)

특수 기능 레지스터 (Timer, 시리얼 통신 제어)

비트 단위 처리 변수 영역

프로그램 영역프로그램 영역4K 바이트(8051) 프로그램 저장

다양한 용량의 패밀리 칩이 있음다양한 용량의 패밀리 칩이 있음

Page 19: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 메모리의 구성 II8051의 메모리의 구성 II

외부 메모리외부 메모리외부 프로그램 메모리 확장 (외부 ROM)

64K 바이트 까지 확장 가능한 프로그램 메모리

8051의 경우 내부 4K 바이트는 EA 핀으로 제어EA 0 전 영역을 외부 ROM으로 0 0000 0 FFFF• EA=0 : 전 영역을 외부 ROM으로 0x0000~0xFFFF

• EA=1 : 내부 ROM (0x0000~0x0FFF)+외부ROM(0x1000~0xFFFF)

외부 데이터 메모리내부 데이터 메모리와 별도로 64K 바이트 까지 확장 가능장 가능

별도의 명령에 의해 외부 데이터 억세스• NOVX A @DPTR• NOVX A,@DPTR

Page 20: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 이해8051의 이해

내부내부 RAMRAM내부내부 RAMRAM

-- 일반일반 레지스터레지스터

- 비트 어드레스 영역

- 사용자 데이터 영역과 스택

- SFRSFR

Page 21: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 메모리의 구성8051의 메모리의 구성

CPU 일반 레지스터R0~R7 일반레지스터 4뱅크R0 R7 일반레지 터 4뱅

8개의 일반 데이터 저장용 레지스터

4개의 뱅크로 구성개의 뱅 구성

뱅크 설정은 PSW의 RS1:RS0 비트를 설정하면, 이 R0~R7은 해당 메모리에 할당 된다.

RS1:RS0에 의해 뱅크가 할당되면 레지스터 R0~R7은 해당 뱅크로 주소값이 설스터 R0 R7은 해당 뱅크로 주소값이 설정 된다.

Page 22: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

뱅크의 개념 MOV A R0뱅크의 개념 MOV A,R0

07R7 0FR7 17R7 1FR7

RS[1:0]=00 RS[1:0]=01 RS[1:0]=10 RS[1:0]=11PSW

05

06

07

R5

R6

R7

0D

0E

0F

R5

R6

R7

15

16

17

R5

R6

R7

1D

1E

1F

R5

R6

R7

03

04

R3

R4

0B

0C

R3

R4

13

14

R3

R4

1B

1C

R3

R4

01

02

R1

R2

09

0A

R1

R2

11

12

R1

R2

19

1A

R1

R2

00R0 08R0 10R0 18R0

뱅크 0 뱅크 1 뱅크 2 뱅크 3

R0 : 00 R0 : 08 R0 : 10 R0 : 18

Page 23: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

MOV A R0MOV A,R0

. . . . . . . . . . . .

뱅크 0 뱅크 1 뱅크 2 뱅크 3

01

02

R1

R2

09

0A

R1

R2

11

12

R1

R2

19

1A

R1

R2

D3

03

C3

4D

A5

B5

44

B5

00R0 08R0 10R0 18R034 13 22 30

RS[1:0]=00 RS[1:0]=01 RS[1:0]=10 RS[1:0]=11PSW

34 13 22 30R0

11 22 33 44A

34 13 22 30A

실행전

실행후 34 13 22 30A실행후

Page 24: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

뱅크의 사용 예ISR (Interrupt Service Rountine)인터럽트 서비스루틴-인터럽트 시처리 프로그램뱅크의 사용 예 처리 프로그램

인터럽트가 발생하면 인터럽트 서비스 루틴에서 사용하는 모든 레지스터를 스택에에서 사용하 레지 터 택에대피 해야 하는데, 뱅크를 변경하면 기존의 뱅크 R0~R7의 레지스터 값은 유지되의 뱅크 R0 R7의 레지스터 값은 유지되고 다른 뱅크에 값이 변경 된다.

. . . . . .

뱅크 0 뱅크 1• A,B,PSW 스택에대피

리셋 후

01

02

R1

R2

09

0A

R1

R2

D3

03

C3

4D• ISR의 시작에서뱅크 변경

* 리셋 후초기에SP=0FH로 변경00R0 08R034 13로 변경

ISR에서 사용

Page 25: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

비트 어드레스 영역비트 어드레스 영역

내부 RAM 0 20 0 2F 16바이트내부 RAM 0x20~0x2F 16바이트각 비트 별로 변수 선언 가능16 8 128개의 비트 변수 선언 가능16x8=128개의 비트 변수 선언 가능비트 번호 0x00~0x7F로 선언C에서 선언과 사용C에서 선언과 사용bit keyst; - 0과 1의 boolean 상태bit ;bit save, cy;save = P14 ^ P15;

포트1의 4와 5핀의 상태를 XOR 한다- 포트1의 4와 5핀의 상태를 XOR 한다cy = (P14 & P15) | (save & P16);

Page 26: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

사용자 데이터 영역과 스택사용자 데이터 영역과 스택

사용자 데이터 영역사용자 데이터 영역사용자가 정의하여 사용하는 일반 메모리

0 30 0 7F 메모리0x30~0x7F 메모리

C에서 char, int 등의 일반 변수를 선언하면 이 영역에할당할당

스택스택은 SFR외의 영역에 임의의 위치에 설정할 수 있다.스택은 SFR외의 영역에 임의의 위치에 설정할 수 있다.

리셋에 의 SP=0x07로 0x08 부터 사용

MOV SP,#60 명령으로 메모리 위치 변경이 가능

C에서는 내부적으로 처리 된다.Startup.a51에 정의 되어 있다.

Page 27: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

SFR – 특수 기능 레지스터SFR 특수 기능 레지스터

내부 RAM 0x80 ~ 0xFF에 할당

CPU 동작과 관련된 레지스터A,B,PSW, SP, DPTR

포트 (Port) : P0, P1, P2, P3포트 (Port) P0, P1, P2, P3

Interrupt : IP, IE

P C t l : PCONPower Control : PCON

Timer : TCON,TMOD,TL0, TL1, TH0,TH1

Serial 통신 : SCON, SBUF

Page 28: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 데이터 메모리외부 데이터 메모리

내부 RAM과 별도

64K 바이트 까지 가능64K 바이트 까지 가능

외부에 데이터를 저장 한다.

MOVX 명령으로 전송MOVX A,@DPTR

MOVX @DPTR,A

C에서C에서#define SELECT (*(unsigned char*)(0x2fc48))

SELECT = 0x9e;#d fi ADDR ( ( i d h d t )(0 22000))#define ADDR (*(unsigned char xdata *)(0x22000))

ADDR = 0x31;C = *((char xdata *) 0x27000);

Page 29: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

프로그램 메모리프로그램 메모리

8051은 내부 4K 바이트 ROM8051은 내부 4K 바이트 ROM 0x0000~0x0FFF

외부 프로그램 메모리 가능 (64K 바이트)외부 프로그램 메모리 가능 (64K 바이트)

내부 ROM과 외부 ROM이 있을 경우 내부의4K 바이트 ROM을 선택 가능

FFFF

외부 ROM60K

FFFFEA=1 EA=0

외부 ROM64K

FFFF

내부 ROM사용

60K

0FFF10004K(8051)

0FFF 내부 ROM사용 않함

0FFF10004K(8051)

0FFF외부 ROM

사 않함사용0000

프로그램 메모리

0000사용 않함

000000004K사용 않함

프로그램 메모리

Page 30: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

C51에서 사용하는 메모리형C51에서 사용하는 메모리형

C51에서 사용하는 메모리형과 포인터값

메모리형포인터

설 명메모리형터

값설 명

idata 1간접 액세스 가능한 내부 RAM

idata 10x00~0x7F

xdata 2 외부 데이터 메모리 0x0000~0xFFFFxdata 2

pdata 3페이지화된 외부 데이터 메모리

0x00~0xFF0x00~0xFF

data 4직접 액세스 가능한 내부데이터0x00~0x7F0x00 0x7F

code 5 프로그램 메모리 (64K 0x0000~0xFFFF)

Page 31: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

파워 절약 모드파워 절약 모드

8051의 파워 절약 모드아이들 모드(idle mode)아이들 (idle mode)

파워 다운 모드

PCON으로 설정 한다PCON으로 설정 한다.IDL=1 : 아이들 모드

PD=1 : 파워 다운 모드

IDL=1, PD=1 : 파워 다운 모드, 파워 다

7 6 5 4 3 2 1 0

SMOD GF1 GF0 PD IDLPCON0x87

SMOD GF1 GF0 PD IDL- - -

Page 32: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

XTAL2 XTAL18051

OSC

클럭발생회 로

•인터럽트 로직•시리얼 포트•타이머

OSC

회 로

CPU

•타이머

PD

IDL

Page 33: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

아이들 모드 (Idle Mode)아이들 모드 (Idle Mode)

타이머/시리얼 인터럽트에 의해 아이들 모드빠져 나온다.

ISR에서 IDL을 클리어 하여 보통상태로

시스템 쉬지 있다가 외부 입력이 들어오면 응답시스템 쉬지 있다가 외부 입력이 들어오면 응답시스템 초기설정

이벤트가 발생할 때까지 대기하여 파워 절약이벤트가 발생할 때까지 대기하여 파워 절약

이벤트시 인터럽트 요청 -> ISR로 들어 간다.

ISR에서 IDL 클리어 하여 처리하고ISR에서 IDL 클리어 하여 처리하고

다시 IDL로 들어 간다.

Page 34: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

파워 다운 모드파워 다운 모드

클럭 발진 자체를 정지하여 파워 다운에서 빠져 나오려면 리셋 밖에는 없다.서 빠져 나 려 리셋 밖에 다

데이터 메모리와 레지스터 값 유지

시스템 이상 시 내부 데이터 AM 보존시스템 이상 시 내부 데이터 RAM 보존

데이터 메모리는 백업 배터리가 연결되어데이터 메모리는 백업 배터리가 연결되어있어야 하며, 전원 감시가 필요

Page 35: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

파워다운 모드 시 진행 절차파워다운 모드 시 진행 절차

시스템을 초기설정하고 프로그램 실행

전원 이상 장치를 계속 감시전원 이상 장치를 계속 감시

전원 이상 발생하면 내부 데이터 메모리를 백업 배터리가 있어 데이터 보존이 가를 백업 배터리가 있어 데이터 보존이 가능한 외부 메모리로 옮김

CPU는 PD를 1로 셋 하여 파워다운 모드로 들아감로 들아감

파워다운 모드는 하드웨어 리셋으로 해제

Page 36: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 이해8051의 이해

80518051 핀핀 기능기능 및및 인터페이스인터페이스8051 8051 핀핀 기능기능 및및 인터페이스인터페이스

Page 37: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051 칩 구조8051 칩 구조

123

403938

P1.0P1.1P1 2

VccP0.0(AD0)P0 1(AD1)3

4567

3837363534

P1.2P1.3P1.4P1.5P1 6

P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0 5(AD5)

8051(8031)

7891011

3433323130

P1.6P1.7RST

(RXD)P3.0(TXD)P3 1

P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VPPALE/PROG11

12131415

3029282726

(TXD)P3.1

(T0)P3.4(T1)P3 5

(INT0)P3.2(INT1)P3.3

ALE/PROGPSENP2.7(A15)P2.6(A14)P2 5(A13)15

16171819

2625242322

(T1)P3.5

XTAL2XTAL1

(RD)P3.7(WR)P3.6

P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2 1(A9)19

202221

XTAL1GND

P2.1(A9)P2.0(A8)

Page 38: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 핀 기능8051의 핀 기능

포트의 구조 및 기능

RESET 리셋RESET 리셋

ALE (Address Latch Enable)

PSEN

EAEA

XTAL1, XTAL2

전원 : VCC(+5V), VSS(GND)

Page 39: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051핀 – 전원과 클럭 발진8051핀 전원과 클럭 발진

Vcc(40핀):

칩에 Vcc 전압을 공급 한다.

+5V 전원.

GND(20핀):GNDGND(20핀) GND

클럭 : XTAL1 / XTAL2(19,18핀)

단순한 크리스탈 발진기을 XTAL1과 XTAL2에단순한 크리스탈 발진기을 XTAL1과 XTAL2에연결

외부에서 발진 클럭을 XTAL1에만 공급외부에서 발진 클럭을 XTAL1에만 공급

Page 40: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

클럭의 발진 방법 1클럭의 발진 방법 1

CPU는 이 클럭에 맞추어 동작.

C2XTAL1

30pF발진회로

XTAL1

C1 XTAL2

GND

30pF

CPU

Page 41: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 클럭을 사용외부 클럭을 사용

외부에서 완전한 클럭을 만들어 공급

Vcc CPU 클럭Vcc CPU 클럭

XTAL1

발진회로사용 하지 않음

XTAL1발진회로

사용하지사용하지 않음않음

XTAL2

GNDCPUCPU

Page 42: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

Machine CycleMachine Cycle

한 명령이 실행되기 까지의 전체 시간한 명령이 실행되기 까지의 전체 시간Fetch -기계어 명령 읽기

Decode - 기계어 기능 해석

Execute - 실행

Store - 메모리에 저장

ADD A,R0

Page 43: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

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

Page 44: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

머신 사이클머신 사이클

한 명령이 실행되는 시간(12클럭)한 명령이 실행되는 시간(12클럭)

주파수와 시간과는주파수와 시 과

시간 = 1

주파수주파수 =

1시간

XTAL = 11.0592 MHz11.0592 MHz / 12 = 921.6 kHzmachine 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

Page 45: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

RESET 리셋RESET 리셋

RST(9핀):reset

Active high : 리셋 시 1을 입력 CPU동작 시Active high 리셋 시 1을 입력 CPU동작 시적어도 2 머신사이클 동안 1로 유지

파워 온 리셋 (Power-on reset)파워 온 리셋 (Power on reset)

5V

R 4.7K

ViR VRESETRESET

74HC14C

ViR VRESET

4.7uF

Page 46: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

74HC1474HC14

VIN VOUT

Page 47: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

RESET TimeRESET Time

R과 C의 값에 따라 시간이 결정 된다.

ViR

ViH

ViR

5V

R

t

R 4.7K

ViR VRESET ViL0

V14in74LS14 내부 입력 처리

74HC14C4.7uF

VRESET

쉬미트 트리거

RESET time=2머신사이클 이상

Page 48: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

리셋 (Reset) 시 초기값 설정리셋 (Reset) 시 초기값 설정

리셋 값레지스터

0000ACC0000PC

0000PSW0000B

0007SP0000PSW

0000DPTR

모든 RAM 0으로 채움모든 RAM 0으로 채움

Page 49: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051 외부 데이터 액세스 신호8051 외부 데이터 액세스 신호

/EA(31핀):External Access – 외부 프로그램 메모리사용

8031 8032은 ROM이 없어 의미 없다8031, 8032은 ROM이 없어 의미 없다.

/EA = 0 외부 프로그램 메모리 사용

/EA = 1 내부 프로그램 메모리 사용/EA 1 내부 프로그램 메모리 사용

/PSEN(29핀):Program Store Enable

프로그램 메모리를 읽고 있다는 의미프로그램 메모리를 읽고 있다는 의미

ROM의 /CS 및 /OE 신호를 만드는데 사용

ALE(30핀):Address Latch Enable - Active highg

포트 0 어드레스 버스와 데이터 버스 양쪽 다 사용하기때문에 구분 필요

ALE=1일 때, 포트0은 어드레스버스이므로 74LS373에래치하여 하위8비트 주소값으로 사용

Page 50: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051의 이해8051의 이해

80518051 포트포트 PP00~P~P338051 8051 포트포트 PP00~P~P33

Page 51: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

Read-Modify-Write InstructionRead Modify Write Instruction

한 명령에 의해 데이터를 읽고한 명령에 의해 데이터를 읽고,조작 한 후 다시 쓰는 명령

ANL (AND) ANL PI, AORL (OR) ORL P2, A( ) ,XRL (XOR) XRL P3, AJBC (조건 점프) JBC P1.1,LABELCPL (비트보수) CPL P3 0CPL (비트보수) CPL P3.0INC (1증가) INC P2DEC (1감소) DEC P2)DJNZ (0일때 까지 반복) DJNZ P3 LABELDJNZ (0일때 까지 반복) DJNZ P3, LABELMOV PX.Y,C (Port X.Y에 캐리값을 세트)CLR PX.Y (Port X.Y 클리어)SETB PX Y (P t X Y에 1 세트)SETB PX.Y (Port X.Y에 1 세트)

Page 52: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

Read-Modify-Write 예Read Modify Write 예

ExampleMnemonics

XRL P1 AXRL

ORL P1,AORL

ANL P1,AANL

CPL P1.2CPL

JBC P1.1, TARGETJBC PX.Y, TARGET

XRL P1,AXRL

DJNZ P1 TARGETDJNZ PX TARGET

INC P1INC

DEC P1DEC

CLR P1.3CLR PX.Y

MOV P1.2,CMOV PX.Y,C

DJNZ P1,TARGETDJNZ PX, TARGET

SETB P1.4SETB PX.Y

Page 53: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

8051 Port 구조8051 Port 구조

Page 54: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트 0 (P0 0 ~ P0 7)포트 0 (P0.0 P0.7)

8비트 오픈 드레인 (Open Drain)

일반 포트 사용–외부메모리 사용 않 할일반 포트 사용 외부메모리 사용 않 할때

입력으로 사용할 때는 1을 출력하고 사용입력으로 사용할 때는 1을 출력하고 사용

외부메모리 사용할 때 하위 어드레스외부메모리 사용할 때 하위 어드레스A0~A7로 사용

ALE 1일 때 하위 어드레스 임을 나타내ALE=1일 때 하위 어드레스 임을 나타내므로 74LS373으로 래치 하여 사용

Page 55: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 - 일반 포트 동작 구조포트0 일반 포트 동작 구조

래치 읽기TB2

P0 X

TB2

D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1

P0.X 핀P1.X

Clk Q래치에 쓰기제어 신호

핀 입력

TB1

Page 56: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 출력으로 사용포트0 출력으로 사용

오픈 드레인 – 풀업 저항 필요

Vcc

오픈 드레인 – 풀업 저항 필요

Vcc

10 K

P0.0

10 K

0.0P0.1P0.2P0.38051

Port

0P0.4P0.5P0.6P0 7

0

P0.7

Page 57: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 – 출력 구조포트0 출력 구조

래치 읽기TB2

+5V

D QCPU 내부

TB2

10K

D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1 P0.XP1.X

Q래치에 쓰기제어 신호

핀 입력

TB1

Page 58: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 출력 – 출력 0포트0 출력 출력 0

CLR P0 0

래치 읽기TB2

+5V

CLR P0.0

0

D QCPU 내부

TB2

10K

00 출력0

MOV P1,#0FFH

D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1 P0.XP1.X

0

1On

Q래치에 쓰기제어 신호

핀 입력

TB10

Page 59: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 출력 – 출력 1포트0 출력 출력 1

래치 읽기TB2

+5V

0

D QCPU 내부

TB2

10KMOV P1,#0FFH

1

0

1D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1 P0.XP1.X Off

1 출력

1

0Q래치에 쓰기제어 신호

핀 입력

TB10

Page 60: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 – 입력으로 사용포트0 입력으로 사용

• 초기 설정으로 1을 출력 한다.

래치 읽기TB2

시스템이 시작할 때 한번 한다.P0.x = 1;P0 = 0xFF;

D QCPU 내부

TB2MOV P0,#0FFH

11D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1 P0.XP1.X Off

1

0Q래치에 쓰기제어 신호

핀 입력

TB1

• 입력 명령으로 핀의 상태를 읽는다MOV A P0

1

unsigned char pst;pst = P0;

MOV A,P0

Page 61: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트0 외부 메모리의 버스로 사용포트0 외부 메모리의 버스로 사용

외부 메모리를 액세스 하기 위해서는 포트0는 주소 하위8비트와 데이터 비트로주 하위 비 와 데이터 비사용 한다.

입출력을 위한 풀업 저항은 필요 없다입출력을 위한 풀업 저항은 필요 없다.

ALE, /PSEN, /RD, /WR 신호와 함께ROM과 RAM의 제어 신호를 만든다.

Page 62: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 ROM외부 ROM

74LS373ALEPSEN OE

CSG

DP0.0

P0.7

A0

A7

D0

D7D7EA

P2.0

P2.7

A8

A15

8051 ROM

Page 63: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 ROM 읽기 – step1외부 ROM 읽기 step1

1. 8051 읽기 2 74373에 하위

74LS373ALEPSEN OE

CSG

신호 보냄2. 74373에 하위

8비트 주소값을 저장

D

74LS373P0.0

P0.7

A0

A7

CSG

D0

Address하위 8비트

D7EA

P2.0

P2.7

A8

A12

Address 상위 8비트

P2.7 A12

8051 ROM

Page 64: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 ROM 읽기 – step2외부 ROM 읽기 step2

2. 74373에 하위비 소값을

74LS373ALEPSEN OE

CSG

8비트 주소값을저장 되어 있다.

DP0.0

P0.7

A0

A7Address

D0

D7D7EA 3. ROM은 데이터

보낸다.

P2.0

P2.7

A8

A12

8051 ROM

Page 65: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 프로그램 메모리 읽기외부 프로그램 메모리 읽기

ALE

PSEN

PORT0 명령어 A0-A7 명령어 IN A0-A7

PORT2 A8-A15 OUT

A0-A7 LATCH OUT74LS373에래치

Page 66: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 RAM외부 RAM

외부RAMPSEN CS

WEOE

WR

74LS373ALEG

OERD

DP0.0

P0.7

A0

A78051

D0

EA D7

P2.0 A8

EA

P2.7 A15

Page 67: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 RAM 쓰기 MOVX @DPTR A외부 RAM 쓰기 MOVX @DPTR,A

PSEN CS

WEOE

WR

1

01

0

01

74LS373ALEG

외부RAM

OERD 1 1

DP0.0

P0.7

A0

A78051

RAM

D0

D7

P2.0 A8

P2.7 A15

Page 68: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 데이터 메모리 쓰기외부 데이터 메모리 쓰기

ALE

WR

PSEN

PORT0 명령어 A0-A7 DATA OUT A0-A7

PORT2 A8-A15 OUT

A0-A7 latch74LS373에래치

RD = 1

Page 69: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 데이터 메모리 쓰기외부 데이터 메모리 쓰기

Page 70: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 RAM 읽기 MOVX A @DPTR외부 RAM 읽기 MOVX A,@DPTR

외부RAMPSEN CS

WEOE

WR

1

10

0

10

74LS373ALEG

OERD 0 0

DP0.0

P0.7

A0

A78051

D0

D7

P2.0 A8

P2.7 A15

Page 71: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

외부 데이터 메모리 읽기외부 데이터 메모리 읽기

ALE

PSEN

PORT0

RD

명령어 A0-A7 DATA IN A0-A7

PORT2

명령어 A0 A7 DATA IN A0 A7

A8-A15 OUTA8 A15 OUT

A0-A7 LATCH OUT74LS373에래치74LS373에래치

WR = 1

Page 72: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트 1포트 1

P1.0 ~ P1.7

8비트 양방향 입출력 단자

내부 풀업 되어 있다외부 저항이 필요 없다

범용 입출력으로 사용 한다.

Page 73: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트1의 구조포트1의 구조

래치 읽기TB2

Vcc

D QCPU 내부 P1 X 핀

TB2Load(L1)

D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1

P1.X 핀

P1.X

Q래치에 쓰기제어 신호

핀 입력

TB1

Page 74: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트1 – 출력 1을 했을 때포트1 출력 1을 했을 때

래치 읽기TB2

Vcc0

Z

D QCPU 내부

TB2Load(L1)1. 핀에 1을 출력

MOV P1,#0FFH 2. 출력 Vcc1

Z

1D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1P1.X 핀P1.X Off

1

0Q래치에 쓰기제어 신호

Z

핀 입력

TB10

Z

Page 75: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트1 – 출력 0을 했을 때포트1 출력 0을 했을 때

래치 읽기TB2

Vcc

0Z

D QCPU 내부

TB2Load(L1)1. 핀에 0을 출력

MOV P1,#00H

0Z

00

0D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1

P1.X핀P1.X

2. 출력 GNDOn

00

1Q래치에 쓰기제어 신호

Z 0

핀 입력

TB10

Z 0

Page 76: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트1 – 입력 1포트1 입력 1

래치 읽기TB2

Vcc

0Z

D QCPU 내부

TB2Load(L1)1. 핀에 1출력

MOV P1,#0FFH 2. MOV A,P1 외부 핀=High

1

0Z

11D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1

P1.X 핀P1.X 11

0Off

Q래치에 쓰기제어 신호

11

핀 입력

TB11

1

Page 77: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트1 – 입력 0포트1 입력 0

래치 읽기TB2

Vcc

0Z

D QCPU 내부

TB2Load(L1) 2. MOV A,P1

외부 핀=0V

0

0Z1. 핀에 1출력MOV P1,#0FFH

1 1D Q

Clk Q래치에 쓰기

CPU 내부데이터 버스

M1

P1.X 핀P1.X

01

0 OffQ래치에 쓰기

제어 신호

3. 내부버스로 전달 00

핀 입력

TB11

0

Page 78: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트 프로그램포트 프로그램

;초기 설정 과정

MOV A,#0FFH ;A=11111111BMOV P1,A ;P1을입력으로 설정

; 포트로 부터 입력하기

에서 읽어BACK: MOV A,P1 ; 포트에서 읽어 A로

MOV P2,A ; P2에 출력

SJMP BACK ; 반복

Page 79: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

C에서의 사용C에서의 사용

#include <win51 h>#include <win51.h>void init_port(){

P1 0 FF 포트를 입력으로 하기 위해 초기값을 설정P1 = 0xFF; - 포트를 입력으로 하기 위해 초기값을 설정}

unsigned char pdata;

void main()(){

init_port();while (1)while (1) {

pdata = P1;P2 = pdata ;P2 = pdata ;

}}

Page 80: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

Read-Modify-Write 명령어 실행Read Modify Write 명령어 실행

MOV P1,#55H ;P1=01010101ORL P1,#0F0H ;P1=11110101

11110101

래치 읽기 Vcc

Load(L1)1

P1.7=0

D QCPU 내부 P1.7 핀

TB2 Load(L1)CPU P1.7=0 OR 1

0

P1.7 0

0 1P1.7=1

Clk Q래치에 쓰기제어 신호

데이터 버스

M1

P1.711

00

제어 신호

TB1Z

핀 입력

TB10

Page 81: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트 2포트 2

P2.0 ~ P2.7

8비트 양방향 입출력 단자8비트 양방향 입출력 단자

내부 풀업 되어 있다외부 저항이 필요 없다

범용 입출력으로 사용 한다.범용 입출력으로 사용 한다.

외부 메모리 사용할 때는 A8~A15로 사용용

Page 82: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트3포트3

P3.0 ~ P3.7

8비트 양방향 입출력 단자비 양방향 력 자

내부 풀업 되어 있다

다른 기능과 선택적으로 사용다른 기능과 선택적으로 사용시리얼 통신 신호:RxD, TxD외부 인터럽트 신호:/INT0, /INT1타이머의 클럭 입력:T0 T1타이머의 클럭 입력:T0, T1외부 메모리 액세스 신호:/WR, /RD

Page 83: 6.8051의 이해 - pds17.egloos.compds17.egloos.com/pds/200908/31/64/6.8051.pdf · 8051 메모리구조 ff 특수기능 레지스터 ffff 7f 30 80 사용자데이터 메모리영역

포트3의 다른 기능 신호포트3의 다른 기능 신호

핀번호기능P3 비트

10RxDP3.0핀번호기능P3 비트

11TxDP3.110RxDP3.0

13INT1P3.312INT0P3.2

15T1P3 514T0P3.413INT1P3.3

16WRP3.615T1P3.5

17RDP3.7