Download presentation
Presentation is loading. Please wait.
1
8051의 칩 구성 및 CPU 이해 메모리 구조 8051의 신호 포트 구성
8051의 이해 8051의 칩 구성 및 CPU 이해 메모리 구조 8051의 신호 포트 구성
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
기능 ROM (program) K K K RAM (데이터) Timer I/O 핀 Serial 포트 인터럽트 소스
4
8051의 이해 8051 내부 구조
5
8051의 내부 구성 외부 인터럽트 ROM 프로그램 Interrupt Control Timer 1 카운터 RAM 입력
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
7
CPU - 8051 제어장치 (CU : Control Unit) A,B레지스터 일반 레지스터 (R0~R7) PSW (Flag)
PC (16비트 프로그램 카운터) SP (8비트 내부 데이터 데이터 포인터) 데이터 포인터 (DPTR)
8
제어장치 CU – Control Unit 명령을 읽어 해독하고 명령이 실행될 때까지 CPU의 내부 신호를 만든다.
소스/목적지 오퍼랜드를 제어하는 신호 MOV A,#10 -> 10을 읽어 레지스터에 저장 산술논리 연산장치의 동작을 제어하는 신호 ADD A,#10 -> A 레지스터와 10(오퍼랜드 임시버퍼)와 더하기 위한 ALU 제어 신호 발생
9
PC 프로그램 카운터 프로그램 메모리에 저장되어 있는 명령의 실행을 위한 위치를 가리키는 16비트 레지스터
실행시킬 명령이 기억되어 있는 프로그램 메모리의 번지를 가리킨다. CPU 리셋(RESET) 신호에 의해 0x0000으로 지정됨. 리셋에 의해 프로그램 메모리의 0000H번지 부터 실행
10
ALU (Arithmetic Logic Unit)
8비트 산술 논리 연산장치 덧셈 +, 뺄셈 – 8/16비트 +1 증가, 8비트 -1 감소 BCD (Binary Coded Decimal) 10진 조정 곱셈 나눗셈 AND, OR, XOR, 로테이트(Rotate) 바이트 컴플리먼트(1의 보수), 비트 컴플리먼트 니블(nibble: 4비트) 단위의 데이터 교환 비트 단위 처리 기능 (Boolean 대수 처리기능) 조건 점프의 판단 기능
11
레지스터 및 PSW A(accumulator) 산술 논리 연산명령에서 연산자로 사용 - 명령이 끝나면 결과 기억
로테이트, 패리티 검사, 제로 테스터 명령에 사용 간접 점프 및 프로그램 읽기명령에서 오프셋(offset)으로 사용 외부 데이터 메모리와 데이터 전송 프로그램 메모리에서 데이터 읽을 때
12
PSW (Program Status Word)
ALU을 통해 실행되는 결과의 플래그 상태 저장 직접 영향을 주는 명령 ADD, SUBB, RRC, … 모든 명령이 영향을 주지 않는다 : MOV 사용자 플래그 : F0 레지스터 뱅크 선택 (RS1, RS0)
13
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) RS1 RS 레지스터 뱅크 주 소 H-07H 리셋 H-0FH H-17H H-1FH
14
B, SP B 레지스터 SP (스택 포인터 : Stack Pointer)
곱셈/나눗셈의 결과 저장 SP (스택 포인터 : Stack Pointer) 8비트로 스택의 메모리 번지를 가리킴(RAM) 8051의 내부 메모리 사용 리셋 후 08H 번지로 지정 – 프로그래머에 의해 변경하여 사용 할 수 있다. 스택에 저장(PUSH) 할 때 주소값 1증가하고 꺼낼 때 1 감소
15
DPTR (Data Pointer) 16비트 레지스터 상위 8비트 (DPH)와 하위 8비트(DPL)로 사용 가능
외부 데이터 메모리에서 전송할 때 주소값으로 사용 – 어드레스 포인터 간접 점프명령에서 점프할 주소값 저장 프로그램 읽기 명령에서 베이스(base) 레지스터
16
8051의 이해 8051 메모리 구조
17
8051 메모리 구조 특수기능 레지스터 (SFR) 사용자 데이터 메모리 영역 비트단위 처리 영역 외부 RAM 외부 ROM
FF FFFF FFFF 특수기능 레지스터 80 (SFR) 7F 사용자 데이터 메모리 영역 30 2F 비트단위 처리 영역 64K 외부 ROM 64K 60K 외부 RAM 64K 20 1F 뱅크 3 (R0~R7) 18 17 뱅크 2 (R0~R7) 10 4K(8051) 1000 0F 뱅크 1 (R0~R7) 0FFF 0FFF 내부 ROM 08 07 EA=0 뱅크 0 (R0~R7) EA=1 0000 0000 0000 00 프로그램 메모리 데이터 메모리 내부 RAM & SFR
18
8051의 메모리의 구성 I 내부 메모리 특수 영역 내부 RAM 프로그램 영역 일반 레지스터
일반 변수 영역(사용자 데이터 영역) 특수 기능 레지스터 (Timer, 시리얼 통신 제어) 비트 단위 처리 변수 영역 프로그램 영역 4K 바이트(8051) 프로그램 저장 다양한 용량의 패밀리 칩이 있음
19
8051의 메모리의 구성 II 외부 메모리 외부 프로그램 메모리 확장 (외부 ROM) 외부 데이터 메모리
64K 바이트 까지 확장 가능한 프로그램 메모리 8051의 경우 내부 4K 바이트는 EA 핀으로 제어 EA=0 : 전 영역을 외부 ROM으로 0x0000~0xFFFF EA=1 : 내부 ROM (0x0000~0x0FFF)+외부 ROM(0x1000~0xFFFF) 외부 데이터 메모리 내부 데이터 메모리와 별도로 64K 바이트 까지 확장 가능 별도의 명령에 의해 외부 데이터 억세스 NOVX
20
8051의 이해 내부 RAM 일반 레지스터 비트 어드레스 영역 사용자 데이터 영역과 스택 SFR
21
8051의 메모리의 구성 CPU 일반 레지스터 R0~R7 일반레지스터 4뱅크 8개의 일반 데이터 저장용 레지스터 4개의 뱅크로 구성 뱅크 설정은 PSW의 RS1:RS0 비트를 설정하면, 이 R0~R7은 해당 메모리에 할당 된다. RS1:RS0에 의해 뱅크가 할당되면 레지스터 R0~R7은 해당 뱅크로 주소값이 설정 된다.
22
뱅크의 개념 MOV A,R0 R0 : 18 R0 : 10 R0 : 08 R0 : 00 PSW RS[1:0]=00
07 R7 0F R7 17 R7 1F R6 06 R6 0E R6 16 R6 1E R5 05 R5 0D R5 15 R5 1D R4 04 R4 0C R4 14 R4 1C R3 03 R3 0B R3 13 R3 1B R2 02 R2 0A R2 12 R2 1A R1 01 R1 09 R1 11 R1 19 R0 00 R0 08 R0 10 R0 18 뱅크 0 뱅크 1 뱅크 2 뱅크 3 R0 : 10 R0 : 18 R0 : 00 R0 : 08
23
MOV A,R0 뱅크 0 뱅크 1 뱅크 2 뱅크 3 . . . . . . . . . . . . R2 03 02 R2 4D 0A R2 B5 12 R2 B5 1A R1 D3 01 R1 C3 09 R1 A5 11 R1 44 19 R0 34 00 R0 13 08 R0 22 10 R0 30 18 PSW RS[1:0]=00 RS[1:0]=01 RS[1:0]=10 RS[1:0]=11 R0 34 13 22 30 실행전 A 11 22 33 44 실행후 A 34 13 22 30
24
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 R0 34 00 R0 13 08 ISR에서 사용
25
비트 어드레스 영역 내부 RAM 0x20~0x2F 16바이트 각 비트 별로 변수 선언 가능
C에서 선언과 사용 bit keyst; - 0과 1의 boolean 상태 bit save, cy; save = P14 ^ P15; - 포트1의 4와 5핀의 상태를 XOR 한다 cy = (P14 & P15) | (save & P16);
26
사용자 데이터 영역과 스택 사용자 데이터 영역 스택 사용자가 정의하여 사용하는 일반 메모리 0x30~0x7F 메모리
C에서 char, int 등의 일반 변수를 선언하면 이 영역에 할당 스택 스택은 SFR외의 영역에 임의의 위치에 설정할 수 있다. 리셋에 의 SP=0x07로 0x08 부터 사용 MOV SP,#60 명령으로 메모리 위치 변경이 가능 C에서는 내부적으로 처리 된다. Startup.a51에 정의 되어 있다.
27
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
28
외부 데이터 메모리 내부 RAM과 별도 64K 바이트 까지 가능 외부에 데이터를 저장 한다. MOVX 명령으로 전송 C에서
MOVX C에서 #define SELECT (*(unsigned char*)(0x2fc48)) SELECT = 0x9e; #define ADDR (*(unsigned char xdata *)(0x22000)) ADDR = 0x31; C = *((char xdata *) 0x27000);
29
프로그램 메모리 8051은 내부 4K 바이트 ROM 0x0000~0x0FFF 외부 프로그램 메모리 가능 (64K 바이트)
내부 ROM과 외부 ROM이 있을 경우 내부의 4K 바이트 ROM을 선택 가능 FFFF FFFF EA=0 EA=1 외부 ROM 64K 외부 ROM 60K 4K(8051) 1000 4K(8051) 1000 0FFF 0FFF 0FFF 0FFF 내부 ROM 사용 않함 내부 ROM 사용 외부 ROM 4K사용 않함 0000 0000 0000 0000 프로그램 메모리 프로그램 메모리
30
C51에서 사용하는 메모리형 C51에서 사용하는 메모리형과 포인터값 idata 1 xdata 2 pdata 3 data 4
설 명 idata 1 간접 액세스 가능한 내부 RAM 0x00~0x7F xdata 2 외부 데이터 메모리 0x0000~0xFFFF pdata 3 페이지화된 외부 데이터 메모리 0x00~0xFF data 4 직접 액세스 가능한 내부데이터 0x00~0x7F code 5 프로그램 메모리 (64K 0x0000~0xFFFF)
31
파워 절약 모드 8051의 파워 절약 모드 PCON으로 설정 한다. 아이들 모드(idle mode) 파워 다운 모드
PD=1 : 파워 다운 모드 IDL=1, PD=1 : 파워 다운 모드 - - - PCON 0x87 SMOD GF1 GF0 PD IDL
32
XTAL2 XTAL1 8051 OSC 인터럽트 로직 시리얼 포트 타이머 클럭발생 회 로 CPU PD IDL
33
아이들 모드 (Idle Mode) 타이머/시리얼 인터럽트에 의해 아이들 모드 빠져 나온다.
ISR에서 IDL을 클리어 하여 보통상태로 시스템 쉬지 있다가 외부 입력이 들어오면 응답 시스템 초기설정 이벤트가 발생할 때까지 대기하여 파워 절약 이벤트시 인터럽트 요청 -> ISR로 들어 간다. ISR에서 IDL 클리어 하여 처리하고 다시 IDL로 들어 간다.
34
파워 다운 모드 클럭 발진 자체를 정지하여 파워 다운에서 빠져 나오려면 리셋 밖에는 없다. 데이터 메모리와 레지스터 값 유지
시스템 이상 시 내부 데이터 RAM 보존 데이터 메모리는 백업 배터리가 연결되어 있어야 하며, 전원 감시가 필요
35
파워다운 모드 시 진행 절차 시스템을 초기설정하고 프로그램 실행 전원 이상 장치를 계속 감시
전원 이상 발생하면 내부 데이터 메모리를 백업 배터리가 있어 데이터 보존이 가능한 외부 메모리로 옮김 CPU는 PD를 1로 셋 하여 파워다운 모드로 들아감 파워다운 모드는 하드웨어 리셋으로 해제
36
8051의 이해 8051 핀 기능 및 인터페이스
37
8051 칩 구조 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1 (T0)P3.4 (T1)P3.5 XTAL2 XTAL1 GND (INT0)P3.2 (INT1)P3.3 (RD)P3.7 (WR)P3.6 Vcc P0.0(AD0) P0.1(AD1) P0.2(AD2) P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN P2.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)
38
8051의 핀 기능 포트의 구조 및 기능 RESET 리셋 ALE (Address Latch Enable) PSEN EA
XTAL1, XTAL2 전원 : VCC(+5V), VSS(GND)
39
8051핀 – 전원과 클럭 발진 Vcc(40핀): GND(20핀):GND 클럭 : XTAL1 / XTAL2(19,18핀)
40
클럭의 발진 방법 1 CPU는 이 클럭에 맞추어 동작. XTAL1 XTAL2 GND C2 30pF 발진회로 C1 30pF
41
외부 클럭을 사용 외부에서 완전한 클럭을 만들어 공급 GND Vcc CPU 클럭 발진 회로 발진회로 사용 하지 않음
XTAL1 발진 회로 발진회로 사용 하지 않음 XTAL2 사용하지 않음 GND CPU
42
Machine Cycle 한 명령이 실행되기 까지의 전체 시간 Fetch -기계어 명령 읽기 Decode - 기계어 기능 해석
Execute - 실행 Store - 메모리에 저장 ADD A,R0
43
외부 데이터와 클럭-MOVX 예
44
머신 사이클 한 명령이 실행되는 시간(12클럭) 주파수와 시간과는 XTAL = 11.0592 MHz
시간 = 주파수 = 주파수 시간 XTAL = MHz MHz / 12 = kHz machine cycle = 1 / kHz = s XTAL = 16 MHz. 16 MHz / 12 = MHz; machine cycle = 1 / MHz = 0.75 s
45
RESET 리셋 RST(9핀):reset Active high : 리셋 시 1을 입력 CPU동작 시 적어도 2 머신사이클 동안 1로 유지 파워 온 리셋 (Power-on reset) 5V R 4.7K ViR VRESET RESET C 4.7uF 74HC14
46
74HC14 VIN VOUT
47
RESET Time R과 C의 값에 따라 시간이 결정 된다. ViR ViH ViL VRESET ViR t V14in
4.7K ViL VRESET ViR t C 4.7uF 74HC14 V14in 74LS14 내부 입력 처리 VRESET 쉬미트 트리거 RESET time=2머신사이클 이상
48
리셋 (Reset) 시 초기값 설정 레지스터 리셋 값 PC 0000 ACC 0000 B 0000 PSW 0000 SP 0007
DPTR 0000 모든 RAM 0으로 채움
49
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비트 주소값으로 사용
50
8051의 이해 8051 포트 P0~P3
51
Read-Modify-Write Instruction
한 명령에 의해 데이터를 읽고, 조작 한 후 다시 쓰는 명령 ANL (AND) ANL PI, A ORL (OR) ORL P2, A XRL (XOR) XRL P3, A JBC (조건 점프) JBC P1.1,LABEL CPL (비트보수) CPL P3.0 INC (1증가) INC P2 DEC (1감소) DEC P2) DJNZ (0일때 까지 반복) DJNZ P3, LABEL MOV PX.Y,C (Port X.Y에 캐리값을 세트) CLR PX.Y (Port X.Y 클리어) SETB PX.Y (Port X.Y에 1 세트)
52
Read-Modify-Write 예 Mnemonics Example ANL ANL P1,A ORL ORL P1,A XRL
XRL P1,A JBC PX.Y, TARGET JBC P1.1, TARGET CPL CPL P1.2 INC INC P1 DEC DEC P1 DJNZ PX, TARGET DJNZ P1,TARGET MOV PX.Y,C MOV P1.2,C CLR PX.Y CLR P1.3 SETB PX.Y SETB P1.4
53
8051 Port 구조
54
포트 0 (P0.0 ~ P0.7) 8비트 오픈 드레인 (Open Drain) 일반 포트 사용–외부메모리 사용 않 할 때
입력으로 사용할 때는 1을 출력하고 사용 외부메모리 사용할 때 하위 어드레스 A0~A7로 사용 ALE=1일 때 하위 어드레스 임을 나타내므로 74LS373으로 래치 하여 사용
55
포트0 - 일반 포트 동작 구조 래치 읽기 TB2 P0.X 핀 CPU 내부 데이터 버스 P1.X M1 래치에 쓰기 제어 신호
D Q Clk Q P1.X M1 래치에 쓰기 제어 신호 TB1 핀 입력
56
포트0 출력으로 사용 오픈 드레인 – 풀업 저항 필요 Port 0 Vcc 8051 P0.0 P0.1 P0.2 P0.3 P0.4
10 K Port 0 P0.0 P0.1 P0.2 8051 P0.3 P0.4 P0.5 P0.6 P0.7
57
포트0 – 출력 구조 +5V 래치 읽기 TB2 10K CPU 내부 데이터 버스 P1.X P0.X M1 래치에 쓰기 제어 신호
D Q Clk Q P1.X P0.X M1 래치에 쓰기 제어 신호 TB1 핀 입력
58
포트0 출력 – 출력 0 MOV P1,#0FFH CLR P0.0 +5V 래치 읽기 TB2 10K 0 출력
TB2 MOV P1,#0FFH 10K 0 출력 1 CPU 내부 데이터 버스 D Q Clk Q P1.X On P0.X M1 래치에 쓰기 제어 신호 TB1 핀 입력
59
포트0 출력 – 출력 1 MOV P1,#0FFH +5V 래치 읽기 TB2 10K 1 1 CPU 내부 데이터 버스 Off
TB2 MOV P1,#0FFH 10K 1 1 CPU 내부 데이터 버스 D Q Clk Q Off P1.X 1 출력 P0.X M1 래치에 쓰기 제어 신호 TB1 핀 입력
60
포트0 – 입력으로 사용 MOV P0,#0FFH MOV A,P0 초기 설정으로 1을 출력 한다.
시스템이 시작할 때 한번 한다. P0.x = 1; P0 = 0xFF; 래치 읽기 TB2 MOV P0,#0FFH 1 1 CPU 내부 데이터 버스 D Q Clk Q P1.X Off P0.X M1 래치에 쓰기 제어 신호 TB1 1 핀 입력 입력 명령으로 핀의 상태를 읽는다 unsigned char pst; pst = P0; MOV A,P0
61
포트0 외부 메모리의 버스로 사용 외부 메모리를 액세스 하기 위해서는 포트0는 주소 하위8비트와 데이터 비트로 사용 한다.
입출력을 위한 풀업 저항은 필요 없다. ALE, /PSEN, /RD, /WR 신호와 함께 ROM과 RAM의 제어 신호를 만든다.
62
외부 ROM 8051 ROM 74LS373 PSEN OE ALE CS P0.0 P0.7 A0 A7 D0 D7 EA P2.0
G P0.0 P0.7 A0 A7 D D0 D7 EA P2.0 P2.7 A8 A15 8051 ROM
63
외부 ROM 읽기 – step1 8051 ROM 74LS373 1. 8051 읽기 신호 보냄
에 하위 8비트 주소값을 저장 PSEN OE ALE 74LS373 CS G P0.0 P0.7 A0 A7 D Address 하위 8비트 D0 D7 EA Address 상위 8비트 P2.0 P2.7 A8 A12 8051 ROM
64
외부 ROM 읽기 – step2 8051 ROM 74LS373 2. 74373에 하위 8비트 주소값을 저장 되어 있다.
PSEN OE ALE 74LS373 CS G P0.0 P0.7 A0 A7 D Address D0 D7 EA 3. ROM은 데이터 보낸다. P2.0 P2.7 A8 A12 8051 ROM
65
외부 프로그램 메모리 읽기 ALE PORT0 PORT2 PSEN 명령어 A0-A7 명령어 IN A8-A15 OUT
A0-A7 LATCH OUT 74LS373에 래치
66
외부 RAM 외부RAM 8051 74LS373 PSEN CS WR WE RD OE ALE P0.0 P0.7 A0 A7 D0
G 8051 P0.0 P0.7 A0 A7 D D0 D7 EA P2.0 P2.7 A8 A15
67
외부 RAM 쓰기 MOVX @DPTR,A 외부 RAM 8051 74LS373 1 PSEN CS WR WE 1 1 RD OE
PSEN CS WR WE 1 1 RD OE 외부 RAM ALE 74LS373 G 8051 P0.0 P0.7 A0 A7 D D0 D7 P2.0 P2.7 A8 A15
68
외부 데이터 메모리 쓰기 명령어 ALE PORT0 PORT2 WR PSEN A0-A7 DATA OUT A8-A15 OUT
A0-A7 latch 74LS373에 래치 RD = 1
69
외부 데이터 메모리 쓰기
70
외부 RAM 읽기 MOVX A,@DPTR 외부RAM 8051 74LS373 PSEN 1 CS 1 1 WR WE RD OE
CS 1 1 WR WE RD OE ALE 74LS373 G 8051 P0.0 P0.7 A0 A7 D D0 D7 P2.0 P2.7 A8 A15
71
외부 데이터 메모리 읽기 명령어 ALE PORT0 PORT2 RD PSEN A0-A7 DATA IN A8-A15 OUT
A0-A7 LATCH OUT 74LS373에 래치 WR = 1
72
포트 1 P1.0 ~ P1.7 8비트 양방향 입출력 단자 내부 풀업 되어 있다 범용 입출력으로 사용 한다.
외부 저항이 필요 없다 범용 입출력으로 사용 한다.
73
포트1의 구조 Vcc 래치 읽기 TB2 Load(L1) CPU 내부 데이터 버스 P1.X 핀 P1.X M1
D Q Clk Q P1.X 핀 P1.X M1 래치에 쓰기 제어 신호 TB1 핀 입력
74
포트1 – 출력 1을 했을 때 핀에 1을 출력 MOV P1,#0FFH 2. 출력 Vcc Vcc 래치 읽기 TB2 Z
TB2 Z 핀에 1을 출력 MOV P1,#0FFH Load(L1) 2. 출력 Vcc 1 1 CPU 내부 데이터 버스 D Q Clk Q P1.X Off P1.X 핀 M1 래치에 쓰기 제어 신호 Z TB1 핀 입력
75
포트1 – 출력 0을 했을 때 2. 출력 GND Vcc 래치 읽기 TB2 Z 핀에 0을 출력 Load(L1)
TB2 Z 핀에 0을 출력 MOV P1,#00H Load(L1) 1 CPU 내부 데이터 버스 D Q Clk Q P1.X핀 P1.X On 2. 출력 GND M1 래치에 쓰기 제어 신호 Z TB1 핀 입력
76
포트1 – 입력 1 Vcc 래치 읽기 TB2 Z 핀에 1출력 Load(L1) MOV P1,#0FFH 2. MOV A,P1
TB2 Z 핀에 1출력 MOV P1,#0FFH Load(L1) 2. MOV A,P1 외부 핀=High 1 1 CPU 내부 데이터 버스 D Q Clk Q 1 P1.X 핀 P1.X Off M1 래치에 쓰기 제어 신호 1 1 TB1 1 핀 입력
77
포트1 – 입력 0 Vcc 래치 읽기 TB2 Z 핀에 1출력 Load(L1) MOV P1,#0FFH 2. MOV A,P1
TB2 Z 핀에 1출력 MOV P1,#0FFH Load(L1) 2. MOV A,P1 외부 핀=0V 1 1 CPU 내부 데이터 버스 D Q Clk Q P1.X 핀 P1.X Off M1 래치에 쓰기 제어 신호 3. 내부버스로 전달 TB1 1 핀 입력
78
포트 프로그램 ;초기 설정 과정 MOV A,#0FFH ;A=11111111B MOV P1,A ;P1을 입력으로 설정
; 포트로 부터 입력하기 BACK: MOV A,P1 ; 포트에서 읽어 A로 MOV P2,A ; P2에 출력 SJMP BACK ; 반복
79
C에서의 사용 #include <win51.h> void init_port() {
P1 = 0xFF; - 포트를 입력으로 하기 위해 초기값을 설정 } unsigned char pdata; void main() init_port(); while (1) pdata = P1; P2 = pdata ;
80
Read-Modify-Write 명령어 실행
MOV P1,#55H ;P1= ORL P1,#0F0H ;P1= 래치 읽기 Vcc 1 P1.7=0 Load(L1) TB2 CPU P1.7=0 OR 1 P1.7=1 1 1 CPU 내부 데이터 버스 D Q Clk Q P1.7 핀 1 P1.7 M1 래치에 쓰기 제어 신호 Z TB1 핀 입력
81
포트 2 P2.0 ~ P2.7 8비트 양방향 입출력 단자 내부 풀업 되어 있다 범용 입출력으로 사용 한다.
외부 저항이 필요 없다 범용 입출력으로 사용 한다. 외부 메모리 사용할 때는 A8~A15로 사용
82
포트3 P3.0 ~ P3.7 8비트 양방향 입출력 단자 내부 풀업 되어 있다 다른 기능과 선택적으로 사용
시리얼 통신 신호:RxD, TxD 외부 인터럽트 신호:/INT0, /INT1 타이머의 클럭 입력:T0, T1 외부 메모리 액세스 신호:/WR, /RD
83
포트3의 다른 기능 신호 P3 비트 기능 핀번호 P3.0 RxD 10 P3.1 TxD 11 P3.2 INT0 12 P3.3
13 P3.4 T0 14 P3.5 T1 15 P3.6 WR 16 P3.7 RD 17
Similar presentations