Upload
kapono
View
65
Download
3
Embed Size (px)
DESCRIPTION
8051 의 이해. 8051 의 칩 구성 및 CPU 이해 메모리 구조 8051 의 신호 포트 구성. [email protected] http://blog.naver.com/dolicom. 8051 의 특징. 4K 바이트의 프로그램 메모리 내장 4 개의 레지스터 뱅크를 포함한 128 바이트 데이터 메모리 사용자 지정 가능한 128 비트 플래그 불 (boolean) 대수 처리 기능 8 비트 단위의 4 개의 입 . 출력 포트 (P0,P1,P2,P3) 2 개의 16 비트 타이머 / 카운터 - PowerPoint PPT Presentation
Citation preview
80518051 의 이해의 이해
8051 의 칩 구성 및 CPU 이해 메모리 구조 8051 의 신호 포트 구성
[email protected]://blog.naver.com/dolicom
8051 의 특징
4K 바이트의 프로그램 메모리 내장4 개의 레지스터 뱅크를 포함한 128 바이트 데이터
메모리사용자 지정 가능한 128 비트 플래그불 (boolean) 대수 처리 기능8 비트 단위의 4 개의 입 . 출력 포트 (P0,P1,P2,P3)2 개의 16 비트 타이머 /카운터다중모드로 사용할 수 있는 고속 직렬 포트우선 순위 설정 가능한 4 개의 인터럽트64K 바이트까지 확장 가능한 프로그램 데이터 메모리아이들 (idle) 모드와 파워 다운 모드 기능
8051 패밀리
기능 8051 8052 8031ROM (program) 4K 8K 0KRAM ( 데이터 ) 128 256 128Timer 2 3 2I/O 핀 32 32 32Serial 포트 1 1 1인터럽트 소스 6 8 6
8051 의 내부 구성
CPU
RAM
ROM
프로그램
4 I/O 포트
Timer 0
Serial PortOSC
Interrupt Control
외부 인터럽트
Timer 1
Timer/Counter
Bus Control
TxD RxDP0 P1 P2 P3
Address/Data
카운터
입력
CPU - 8051
제어장치 (CU : Control Unit)A,B 레지스터일반 레지스터 (R0~R7)PSW (Flag)PC (16 비트 프로그램 카운터 )SP (8 비트 내부 데이터 데이터 포인터 )데이터 포인터 (DPTR)
제어장치 CU – Control Unit
명령을 읽어 해독하고 명령이 실행될 때까지 CPU 의 내부 신호를 만든다 .
CPU 제어신호소스 /목적지 오퍼랜드를 제어하는 신호
MOV A,#10 -> 10 을 읽어 레지스터에 저장 산술논리 연산장치의 동작을 제어하는 신호
ADD A,#10 -> A 레지스터와 10( 오퍼랜드 임시버퍼 ) 와 더하기 위한 ALU 제어 신호 발생
PC 프로그램 카운터
프로그램 메모리에 저장되어 있는 명령의 실행을 위한 위치를 가리키는 16 비트 레지스터실행시킬 명령이 기억되어 있는 프로그램
메모리의 번지를 가리킨다 .
CPU 리셋 (RESET) 신호에 의해 0x0000 으로 지정됨 .리셋에 의해 프로그램 메모리의 0000H 번지
부터 실행
ALU (Arithmetic Logic Unit)
8 비트 산술 논리 연산장치덧셈 +, 뺄셈 –8/16 비트 +1 증가 , 8 비트 -1 감소BCD (Binary Coded Decimal) 10 진 조정곱셈 나눗셈AND, OR, XOR, 로테이트 (Rotate)바이트 컴플리먼트 (1 의 보수 ), 비트 컴플리먼트니블 (nibble: 4 비트 ) 단위의 데이터 교환비트 단위 처리 기능 (Boolean 대수 처리기능 )조건 점프의 판단 기능
레지스터 및 PSW
A(accumulator)산술 논리 연산명령에서 연산자로 사용 - 명령이 끝나면 결과 기억로테이트 , 패리티 검사 , 제로 테스터 명령에
사용간접 점프 및 프로그램 읽기명령에서 오프셋
(offset) 으로 사용외부 데이터 메모리와 데이터 전송프로그램 메모리에서 데이터 읽을 때
PSW (Program Status Word)
ALU 을 통해 실행되는 결과의 플래그 상태 저장
직접 영향을 주는 명령ADD, SUBB, RRC, …모든 명령이 영향을 주지 않는다 : MOV
사용자 플래그 : F0레지스터 뱅크 선택 (RS1, RS0)
PSW 구성
CY AC F0 RS1 OVRS0 P--
RS1 RS0 레지스터 뱅크 주 소
0 0 0 00H-07H
0 1 1 08H-0FH
1 0 2 10H-17H
1 1 3 18H-1FH
PSW.0 CY : 캐리 플래그 (Carry Flag)PSW.1 AC : 보조 캐리 플래그 (Auxiliary carry flag)PSW.2 F0 : 사용자 플래그PSW.3 RS1 : 뱅크 선택 상위 비트 1PSW.4 RS0 : 뱅크 선택 상위 비트 0PSW.5 OV : 오버플로 플래그 (Overflow Flag)PSW.6 –PSW.7 P : 패리티 플래그 (odd/even parity)
리셋
B, SP
B 레지스터 8 비트 곱셈 /나눗셈 – A 레지스터와 함께 16 비트
레지스터로 사용곱셈 /나눗셈의 결과 저장
SP ( 스택 포인터 : Stack Pointer) 8 비트로 스택의 메모리 번지를 가리킴 (RAM) 8051 의 내부 메모리 사용 리셋 후 08H 번지로 지정 – 프로그래머에 의해
변경하여 사용 할 수 있다 . 스택에 저장 (PUSH) 할 때 주소값 1 증가하고 꺼낼
때 1 감소
DPTR (Data Pointer)
16 비트 레지스터 상위 8 비트 (DPH) 와 하위 8 비트
(DPL) 로 사용 가능외부 데이터 메모리에서 전송할 때
주소값으로 사용 – 어드레스 포인터간접 점프명령에서 점프할 주소값 저장프로그램 읽기 명령에서 베이스 (base)
레지스터
8051 메모리 구조
7F
302F
201F
17
100F
0708
18
00
80
FF
뱅크 0(R0~R7)
뱅크 1(R0~R7)
뱅크 2(R0~R7)
뱅크 3(R0~R7)
비트단위 처리 영역
사용자 데이터 메모리 영역
특수기능레지스터
내부 RAM & SFR
(SFR)
내부 ROM
외부 ROM64K
외부 RAM64K
0000
0FFF1000
FFFF
0000
FFFF
프로그램 메모리 데이터 메모리
EA=0EA=1
4K(8051)
60K 64K
0000
0FFF
8051 의 메모리의 구성 I
내부 메모리 특수 영역 내부 RAM
일반 레지스터 일반 변수 영역 ( 사용자 데이터 영역 ) 특수 기능 레지스터 (Timer, 시리얼 통신 제어 ) 비트 단위 처리 변수 영역
프로그램 영역 4K 바이트 (8051) 프로그램 저장 다양한 용량의 패밀리 칩이 있음
8051 의 메모리의 구성 II
외부 메모리 외부 프로그램 메모리 확장 ( 외부 ROM)
64K 바이트 까지 확장 가능한 프로그램 메모리 8051 의 경우 내부 4K 바이트는 EA 핀으로
제어• EA=0 : 전 영역을 외부 ROM 으로 0x0000~0xFFFF• EA=1 : 내부 ROM (0x0000~0x0FFF)+ 외부
ROM(0x1000~0xFFFF)
외부 데이터 메모리 내부 데이터 메모리와 별도로 64K 바이트 까지
확장 가능 별도의 명령에 의해 외부 데이터 억세스
• NOVX A,@DPTR
8051 의 메모리의 구성
CPU 일반 레지스터 R0~R7 일반레지스터 4 뱅크
8 개의 일반 데이터 저장용 레지스터 4 개의 뱅크로 구성 뱅크 설정은 PSW 의 RS1:RS0 비트를 설정하
면 , 이 R0~R7 은 해당 메모리에 할당 된다 .
RS1:RS0 에 의해 뱅크가 할당되면 레지스터 R0~R7 은 해당 뱅크로 주소값이 설정 된다 .
뱅크의 개념
00
01
02
03
04
05
06
07
R0
R1
R2
R3
R4
R5
R6
R7
08
09
0A
0B
0C
0D
0E
0F
R0
R1
R2
R3
R4
R5
R6
R7
10
11
12
13
14
15
16
17
R0
R1
R2
R3
R4
R5
R6
R7
18
19
1A
1B
1C
1D
1E
1F
R0
R1
R2
R3
R4
R5
R6
R7
뱅크 0 뱅크 1 뱅크 2 뱅크 3
RS[1:0]=00 RS[1:0]=01 RS[1:0]=10 RS[1:0]=11PSW
MOV A,R0
R0 : 00 R0 : 08 R0 : 10 R0 : 18
MOV A,R0
00
01
02
R0
R1
R2
. . .
08
09
0A
R0
R1
R2
. . .
10
11
12
R0
R1
R2
. . .
18
19
1A
R0
R1
R2
. . .
뱅크 0 뱅크 1 뱅크 2 뱅크 3
RS[1:0]=00 RS[1:0]=01 RS[1:0]=10 RS[1:0]=11PSW
34 13 22 30
34
D3
03
13
C3
4D
22
A5
B5
30
44
B5
R0
11 22 33 44A
34 13 22 30A
실행전
실행후
뱅크의 사용 예
인터럽트가 발생하면 인터럽트 서비스 루틴에서 사용하는 모든 레지스터를 스택에 대피 해야 하는데 , 뱅크를 변경하면 기존의 뱅크 R0~R7 의 레지스터 값은 유지되고 다른 뱅크에 값이 변경 된다 .
00
01
02
R0
R1
R2
. . .
08
09
0A
R0
R1
R2
. . .
뱅크 0 뱅크 1
34
D3
03
13
C3
4D
• A,B,PSW 스택에 대피• ISR 의 시작에서 뱅크 변경
* 리셋 후초기에SP=0FH로 변경
ISR 에서 사용
ISR (Interrupt Service Rountine)인터럽트 서비스루틴 - 인터럽트 시처리 프로그램
비트 어드레스 영역
내부 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);
사용자 데이터 영역과 스택
사용자 데이터 영역사용자가 정의하여 사용하는 일반 메모리0x30~0x7F 메모리C 에서 char, int 등의 일반 변수를 선언하면 이
영역에 할당스택
스택은 SFR 외의 영역에 임의의 위치에 설정할 수 있다 .
리셋에 의 SP=0x07 로 0x08 부터 사용MOV SP,#60 명령으로 메모리 위치 변경이 가능C 에서는 내부적으로 처리 된다 .
Startup.a51 에 정의 되어 있다 .
SFR – 특수 기능 레지스터
내부 RAM 0x80 ~ 0xFF 에 할당CPU 동작과 관련된 레지스터
A,B,PSW, SP, DPTR
포트 (Port) : P0, P1, P2, P3Interrupt : IP, IEPower Control : PCONTimer : TCON,TMOD,TL0, TL1, TH0,TH1Serial 통신 : SCON, SBUF
외부 데이터 메모리
내부 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);
프로그램 메모리
8051 은 내부 4K 바이트 ROM 0x0000~0x0FFF
외부 프로그램 메모리 가능 (64K 바이트 )내부 ROM 과 외부 ROM 이 있을 경우 내부의
4K 바이트 ROM 을 선택 가능
내부 ROM사용
외부 ROM60K
0000
0FFF1000
FFFF
프로그램 메모리
EA=1 EA=0
4K(8051)
0000
0FFF 내부 ROM 사용 않함
외부 ROM64K
0000
0FFF1000
FFFF
4K(8051)
0000
0FFF
외부 ROM4K 사용 않함
프로그램 메모리
C51 에서 사용하는 메모리형
C51 에서 사용하는 메모리형과 포인터값
메모리형포인터
값설 명
idata 1 간접 액세스 가능한 내부 RAM 0x00~0x7F
xdata 2 외부 데이터 메모리 0x0000~0xFFFF
pdata 3페이지화된 외부 데이터 메모리0x00~0xFF
data 4 직접 액세스 가능한 내부데이터 0x00~0x7F
code 5 프로그램 메모리 (64K 0x0000~0xFFFF)
파워 절약 모드
8051 의 파워 절약 모드아이들 모드 (idle mode)파워 다운 모드
PCON 으로 설정 한다 . IDL=1 : 아이들 모드 PD=1 : 파워 다운 모드 IDL=1, PD=1 : 파워 다운 모드
PCON0x87
7 6 5 4 3 2 1 0
SMOD GF1 GF0 PD IDL- - -
아이들 모드 (Idle Mode)
타이머 /시리얼 인터럽트에 의해 아이들 모드 빠져 나온다 .
ISR 에서 IDL 을 클리어 하여 보통상태로시스템 쉬지 있다가 외부 입력이 들어오면 응답
시스템 초기설정이벤트가 발생할 때까지 대기하여 파워 절약이벤트시 인터럽트 요청 -> ISR 로 들어 간다 .ISR 에서 IDL 클리어 하여 처리하고다시 IDL 로 들어 간다 .
파워 다운 모드
클럭 발진 자체를 정지하여 파워 다운에서 빠져 나오려면 리셋 밖에는 없다 .
데이터 메모리와 레지스터 값 유지시스템 이상 시 내부 데이터 RAM 보존데이터 메모리는 백업 배터리가 연결되어
있어야 하며 , 전원 감시가 필요
파워다운 모드 시 진행 절차
시스템을 초기설정하고 프로그램 실행전원 이상 장치를 계속 감시전원 이상 발생하면 내부 데이터
메모리를 백업 배터리가 있어 데이터 보존이 가능한 외부 메모리로 옮김
CPU 는 PD 를 1 로 셋 하여 파워다운 모드로 들아감
파워다운 모드는 하드웨어 리셋으로 해제
8051 칩 구조
1234567891011121314151617181920
4039383736353433323130292827262524232221
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST
(RXD)P3.0(TXD)P3.1
(T0)P3.4(T1)P3.5
XTAL2XTAL1
GND
(INT0)P3.2(INT1)P3.3
(RD)P3.7(WR)P3.6
VccP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VPPALE/PROGPSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)
8051(8031)
8051 핀 – 전원과 클럭 발진
Vcc( 40핀): 칩에 Vcc 전압을공급한다 . +5V 전원 .
GND( 20핀):GND 클럭 : XTAL1 / XTAL2( 19,18 핀 )
단순한 크리스탈발진기을 XTAL1 과XTAL2 에 연결
외부에서 발진 클럭을 XTAL1 에만공급
Machine Cycle
한 명령이 실행되기 까지의 전체 시간Fetch - 기계어 명령 읽기Decode - 기계어 기능 해석Execute - 실행Store - 메모리에 저장
ADD A,R0
머신 사이클
XTAL = 11.0592 MHz 11.0592 MHz / 12 = 921.6 kHz machine cycle = 1 / 921.6 kHz = 1.085 sXTAL = 16 MHz. 16 MHz / 12 = 1.333 MHz; machine cycle = 1 / 1.333 MHz = 0.75 s
한 명령이 실행되는 시간 (12 클럭 )주파수와 시간과는
시간 = 1주파수 주파수 = 1
시간
RESET 리셋
RST(9 핀): resetActive high : 리셋 시 1 을 입력 CPU 동작
시 적어도 2 머신사이클 동안 1 로 유지 파워 온 리셋 (Power-on reset)
5V
R 4.7K
RESET
74HC14C4.7uF
ViR VRESET
RESET Time
R 과 C 의 값에 따라 시간이 결정 된다 .
ViH
t
V14in
VRESET
RESET time=2 머신사이클 이상
ViR
74LS14 내부 입력 처리
5V
R 4.7K
74HC14C4.7uF
ViR VRESET ViL0
쉬미트 트리거
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 비트 주소값으로 사용
Read-Modify-Write Instruction한 명령에 의해 데이터를 읽고 , 조작 한 후 다시 쓰는 명령
ANL (AND) ANL PI, AORL (OR) ORL P2, AXRL (XOR) XRL P3, AJBC ( 조건 점프 ) JBC P1.1,LABELCPL ( 비트보수 ) CPL P3.0INC (1 증가 ) INC P2DEC (1 감소 ) DEC P2)DJNZ (0 일때 까지 반복 ) DJNZ P3, LABELMOV PX.Y,C (Port X.Y 에 캐리값을 세트 )CLR PX.Y (Port X.Y 클리어 )SETB PX.Y (Port X.Y 에 1 세트 )
Read-Modify-Write 예
ExampleMnemonics
SETB P1.4SETB PX.Y
CLR P1.3CLR PX.Y
MOV P1.2,CMOV PX.Y,C
DJNZ P1,TARGETDJNZ PX, TARGET
INC P1INC
CPL P1.2CPL
JBC P1.1, TARGETJBC PX.Y, TARGET
XRL P1,AXRL
ORL P1,AORL
ANL P1,AANL
DEC P1DEC
포트 0 (P0.0 ~ P0.7)
8 비트 오픈 드레인 (Open Drain)일반 포트 사용–외부메모리 사용 않 할 때입력으로 사용할 때는 1 을 출력하고 사용외부메모리 사용할 때 하위 어드레스
A0~A7 로 사용ALE=1 일 때 하위 어드레스 임을 나타내므로
74LS373 으로 래치 하여 사용
포트 0 출력 – 출력 0
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1P0.X
P1.X
TB1
TB2
+5V
10K
0
1On
0 출력0
CLR P0.0
0
0
MOV P1,#0FFH
포트 0 출력 – 출력 1
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1P0.X
P1.X
TB1
TB2
+5V
10K
Off1 출력
MOV P1,#0FFH
1
0
0
1
0
포트 0 – 입력으로 사용
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1P0.X
P1.X
TB1
TB2
Off
• 초기 설정으로 1 을 출력 한다 . 시스템이 시작할 때 한번 한다 .P0.x = 1;P0 = 0xFF;
• 입력 명령으로 핀의 상태를 읽는다unsigned char pst; pst = P0;
MOV P0,#0FFH
1 1
0
MOV A,P0
1
포트 0 외부 메모리의 버스로 사용
외부 메모리를 액세스 하기 위해서는 포트 0는 주소 하위 8 비트와 데이터 비트로 사용 한다 .
입출력을 위한 풀업 저항은 필요 없다 .ALE, /PSEN, /RD, /WR 신호와 함께
ROM 과 RAM 의 제어 신호를 만든다 .
외부 ROM 읽기 – step1
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A12
OE
CS
EA
G
8051 ROM
1. 8051 읽기 신호 보냄
2. 74373 에 하위 8 비트 주소값을 저장
Address 하위 8 비트
Address 상위 8비트
외부 ROM 읽기 – step2
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A12
OE
CS
EA
G
8051 ROM
2. 74373 에 하위 8 비트
주소값을 저장 되어 있다 .
Address
3. ROM 은 데이터 보낸다 .
외부 RAM 쓰기 MOVX @DPTR,A
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A15
CS
WE
G
8051
외부RAM
OERDWR
1
01
0
01
외부 데이터 메모리 쓰기
ALE
PORT0
PORT2
WR
PSEN
명령어 A0-A7 DATA OUT A0-A7
A8-A15 OUT
A0-A7 latch74LS373 에 래치
RD = 1
외부 RAM 읽기 MOVX A,@DPTR
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
D0
D7
P2.0
P2.7
A8
A15
CS
WE
G
8051
외부RAM
OERDWR
1
10
0
10
외부 데이터 메모리 읽기
ALE
PORT0
PORT2
RD
PSEN
명령어 A0-A7 DATA IN A0-A7
A8-A15 OUT
A0-A7 LATCH OUT74LS373 에 래치
WR = 1
포트 1 – 출력 1 을 했을 때
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1
P1.X 핀
P1.X
TB1
TB2
Vcc
Load(L1)1. 핀에 1 을 출력 MOV P1,#0FFH
2. 출력 Vcc
Off
1
0
0Z
0
Z
1
포트 1 – 출력 0 을 했을 때
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1
P1.X핀P1.X
TB1
TB2
Vcc
Load(L1)1. 핀에 0 을 출력 MOV P1,#00H
2. 출력 GND
On
0Z
0
Z
0
0
0 0
1
포트 1 – 입력 1
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1
P1.X 핀
P1.X
TB1
TB2
Vcc
Load(L1)1. 핀에 1 출력 MOV P1,#0FFH
2. MOV A,P1 외부 핀
=High1
1
11
0Z
1 1
0Off
포트 1 – 입력 0
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1
P1.X 핀P1.X
TB1
TB2
Vcc
Load(L1)
3. 내부버스로 전달
2. MOV A,P1 외부 핀=0V0
1
00
0Z1. 핀에 1 출력 MOV P1,#0FFH
1 1
0 Off
포트 프로그램
; 초기 설정 과정 MOV A,#0FFH ;A=11111111B
MOV P1,A ;P1 을 입력으로 설정
; 포트로 부터 입력하기BACK: MOV A,P1 ; 포트에서 읽어 A 로
MOV P2,A ; P2 에 출력 SJMP BACK ; 반복
C 에서의 사용
#include <win51.h>void init_port(){ P1 = 0xFF; - 포트를 입력으로 하기 위해 초기값을
설정}
unsigned char pdata;
void main(){ init_port(); while (1) { pdata = P1; P2 = pdata ; }}
Read-Modify-Write 명령어 실행MOV P1,#55H ;P1=01010101ORL P1,#0F0H ;P1=11110101
D Q
Clk Q
래치 읽기
핀 입력
래치에쓰기 제어 신호
CPU 내부 데이터 버스
M1
P1.7 핀P1.7
TB1
TB2
Vcc
Load(L1)CPU P1.7=0 OR 1
1
0
0
Z
1
11110101
P1.7=0
0
1
0
1
0
P1.7=1
포트 3
P3.0 ~ P3.78 비트 양방향 입출력 단자내부 풀업 되어 있다다른 기능과 선택적으로 사용
시리얼 통신 신호: RxD, TxD외부 인터럽트 신호: /INT0, /INT1타이머의 클럭 입력: T0, T1외부 메모리 액세스 신호: /WR, /RD