2.1 8051 family 의 개요 2.1 8051 의 외부 pin 기능과 내부 기능 2.3 8051 memory ...
Post on 09-Jan-2016
93 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
2.1 8051 Family 의 개요
2.1 8051 의 외부 Pin 기능과 내부 기능
2.3 8051 Memory 구조
2.4 8051 Timing
2 장 8051 의 구조
2
8051 Family 의 Hardware 구조
• 4K 바이트의 내부 프로그램 메모리 (ROM)
• 128 바이트의 내부 데이터 메모리 (RAM)
• 8 비트 단위의 4 개의 입출력 포트
• 4 개의 동작모드로 사용 가능한 2 개의 16 비트 타이머 / 카운터
• 전 이중 (full duplex) UART(Universal Asynchronous Receiver & Transmitter)
• 5 개의 인터럽트 중 2 개의 인터럽트 우선 순위 레벨 제어
• Clock Oscillator 내장
• 64KB 의 프로그램 영역
• 64KB 의 데이터 메모리 영역
• 제어응용에 적합한 8 비트 원칩 마이크로프로세서
• 광범위한 비트 로직 부울 프로세스 능력 ( 강력한 비트 제어 )
2.1 8051 Family 의 개요1. 8051 의 주요 특징
3
FunctionData Bits-
Width8 Bits
ComputationArithmetic OperationLogical OperationBit Operation
Memory Size
Data : External Memory 64KB, Internal Memory 128BProgram : External Memory 64KB, Internal Memory 4KB
I/O PortParallel I/O port : 32 (4×8bits)Serial I/O port : Full Duplex UART
Etc.2×16 Bits TimerClock Generator5 Interrupt s
8051 의 특징
4
2. 8051 Family
8051 을 Core 로 하는 Micro Controller 들을 일컫는다 .
CHMOS 형의 8051 에는 POWER Down Mode 가 있음 .
2 2 3
128B128B256B
4KB4KB8KB
-89C5189C52
87518751H8752BH
80318031AH8032AH
80518051AH8052AH
비고16 bit Timer
RAM Size
ROM Size
FLASHEPROM
ROM없음이름
• 8051 : 내부에 Masking Type 의 ROM 을 내장한 프로세서 .
Mask ROM type, OTP(One-Time Programming) type 이 현재 출시되고 있음 .
• 8031 : Chip 내부에 ROM 을 내장하고 있지 않다 .
• 8751 : EPROM type 의 ROM 을 내장
• 89C51 : Flash Memory type ROM 내장 , 전기적으로 Erase, Write (Atmel 사 제품 )
5
표 2.2 Philips 사에서 출시되는 8051 Family
이름 Pin ROM RAM 기타 기능83C451 68 4K 128 52 I/O, 2timer, 1UART
83C528 40, 44
32K 512 32 I/O,WDOG,3-timer, UART,I2C bus
83C550 68 4K 128 8-8bitA/D,WDOG,2-timer,1UART
83C552 68, 80
8K 256 48I/O,10bit A/d,WDOG,3-timer, 1UART, 2PWM,I2C bus
89C51Rx2
40, 44
16,32,64K
F
128 ISP, IAP, more Interrupt, 32I/O, 1UART Low EMI, 2nd DPTR, PCA
….
6
표 2.3 Atmel 사에서 출시되는 8051 Family
이름 Pin ROM RAM 기타 기능
89C51 40, 44 4KF 128 32 I/0, 2-timer, 1UART
89C52 40, 44 8KF 256 32 I/0, 2-timer, 1UART
89C55 40, 44 20KF 256 32 I/0, 2-timer, 1UART
89C1051 20 1KF 64 15 Programmable I/O, 2-timer
89C2051 20 2KF 128 1UART, Analog Comparator
89C4051 20 4KF 128 Same above
89S52 40, 44 8KF 256 32I/0, 3-timer, 1UART,WDOG, 2DPTR
7
그림 2.1 8051 핀 배치도
8
2.2 8051 의 외부 핀 기능과 내부 기능
9
포트 (Port) 0 (P0.0 - P0.7) : 중복된 기능을 가지는 포트 외부 ROM 혹은 RAM 과 데이터 전송 시 하위 어드레스와 데이터 버스로 사용 외부에 메모리를 Interface 하지 않을 때에는 범용 I/O 포트로 사용 EPROM write 시에는 데이터 버스로 사용된다 .
포트 (Port) 1 (P1.0 - P1.7) : 내부 Pull-up 이 되어 있는 8 비트 양방향 입출력 단자 사용자가 기능을 지정하여 사용 가능한 범용 포트 (Port) 이다 . EPROM 에 프로그램을 쓸 경우에는 어드레스 버스 A0 -A7 으로 사용된다 .
포트 (Port) 2 (P2.0 - P2.7) : 중복된 기능을 가지는 포트 외부 ROM 과 데이터를 전송할 때에는 상위 어드레스 (A8 -A15) Port 로 사용 외부에 메모리를 Interface 하지 않았을 때에는 범용 I/O 포트로써 제공
1. 8051 외부 핀 기능
10
포트 (Port) 3 (P3.0 - P3.7) : 중복된 기능을 갖는 포트 내부 풀 업 (Pull-up) 을 갖는 8 비트 양방향 입출력 단자 ( 범용
I/O)
다른 목적을 가지는 다중기능
포트 핀 다른 기능P3.0 RxD (serial input port )
P3.1 TxD (serial output port )
P3.2 /INT 0 (external interrupt 0)
P3.3 /INT 1 (external interrupt 1)
P3.4 T 0 (T imer 0 external input )
P3.5 T 1 (T imer 1 external input )
P3.6 /WR (external data memory write strobe)
P3.7 /RD (external data memory read strobe)
표 2.4 포트 3 의 다중 기능
11
RESET : Master Reset 입력으로 Active HIGH 신호
최소 두 개의 Machine Cycle 동안 High 상태가 유지될 때 유효 .
ALE/ PROG (Address Latch Enable output/ PROGram pulse input )
외부 Memory 와 Interface 할 때 하위 어드레스를 Latch 하는데 사용되는 신호
EPROM 을 프로그램 하는 동안에 프로그램 펄스 ( /PROG ) 가 입력된다 .
/PSEN (Program Strobe ENable)
외부 ROM 에서 Data 를 읽을 때 출력되는 Active LOW 의 Strobe 신호
외부 ROM 의 OE(Output Enable) Pin 에 연결된다 .
12
/EA/Vpp (External Access enable /Vpeak- peak)
• /EA : 외부 프로그램 메모리 선택 신호
/EA=0 :000H~0FFFH(4KB) 영역을 외부 ROM 에서 사용 ( 외부 ROM 만 사용 )
/EA=1 : 000H~0FFFH 영역을 내부 ROM 영역에서 사용
• Vpp : EPROM 에 프로그램을 하는 동안 프로그램 전압을 입력하는 전원 입력 단자
XTAL1, XTAL2 : 클럭 입력 단자
Vcc, GND : 전원입력 및 전원 ground 단자
13
2. 8051 내부 기능
14
⑴ 프로그램 카운터 (PC)
• ROM 에 저장되어 있는 명령어의 실행 순서를 정해주는 16bit Register
• 실행하고자 하는 명령이 들어있는 메모리의 번지를 가리킨다 .
• PC 는 Reset 된 후의 값은 0000h 가 된다 .
• 점프 / 콜 등의 명령으로 그 값이 변화될 수 있다 .
그 이외에는 명령어의 수행 크기만큼 자동으로 증가한다 .
⑵ ALU (Arithmetic and Logic Unit )
8 비트 산술 및 논리 연산을 하는 곳이다 .
- Carry 없는 덧셈 , Carry 있는 덧셈 / 뺄셈 처리 연산 - +1 증가 , - 1 감소 연산 - 곱셈 / 나눗셈 연산 - AND, OR, XOR, Rotate 연산 - 보수화 연산 - Nibble 단위의 Data 교환 연산
- 조건 Branch 처리
15
⑶ 어큐뮬레이터 (ACC : Accumulator )
- 산술논리 연산에서 연산자로 사용된다 .
- 테이블 참조 명령에서 테이블 번지의 옵셋으로 사용 .
- 외부 데이터 메모리와 데이터 전송에 사용 .
- 프로그램 메모리에서 데이터를 읽을 때 사용
- A 로도 표기한다 . 가장 많이 사용되는 레지스터이다 .
16
그림 2.3 8051 의 내부 블록도
17
2.3 8051 Memory 구조
1. Program 과 Data Memory 의 구조
/PSEN : ROM Access
/RD, /WR : RAM Access
18
2. Program Memory (ROM)
• 전체 64KByte 까지 사용이 가능하다 .
• 외부 , 내부 ROM 의 선택은 /EA(External Access) Pin 으로 한다 .
• 외부 프로그램 메모리를 Access 하는 명령어는 MOVC
/EA=0 :000H~0FFFH(4KB) 영역을 외부 ROM 에서 사용 ( 외부 ROM 만 사용 )
/EA=1 : 000H~0FFFH 영역을 내부 ROM 영역에서 사용
19
3. Data Memory (RAM)
(1) 8051 의 외부 데이터 메모리• 64[Kbyte] 의 공간을 Access 가능• 외부 데이터 메모리를 Access 하기 위해 사용되는 명령어 : MOVX
• 외부 데이터 메모리를 Access 하면 H/W 적으로 /RD, /WR 신호가 발생
20
(2) 8051 의 내부 데이터 메모리
• 데이터 RAM 영역 : 128 Byte(00H~7FH)
• SFR (Special Function Register) 영역 : 128 Byte (80H~0FFH)
• MOV 명령에 의해서 Access 가 가능하다 .
21
내부 메모리의 하위 128 Byte(00H~0FH) 의 구조
Register Bank 4개
22
Register Bank - REG. Bank : R0-R7- REG. Bank 의 선택 : PSW( 상태레지스터 ) 의 뱅크선택 비트를 변경에 의해 선택 가능 .- REG. Bank 의 Access : 직접 에드레싱 모드와 레지스터 어드레싱 모드
23
비트 지정 방법 :
00H - 7FH 또는 20.1H - 2F.7H 로 비트 주소 지정
비트 지정 가능 (Bit-addressable) 영역
24
- 30H- 7FH 까지는 범용의 RAM 으로 사용
- 직접 , 간접 Addressing Mode 로 Access 가능
MOV A, 5FH ; 직접 어드레싱 모드
MOV R0, #5FH ;
MOV A, @R0 ; 간접 어드레싱 모드
범용의 기억 장소
25
① 직접 주소 지정 방식 (Addressing Mode)
8 비트로 오퍼랜드의 번지 (address) 를 직접 지정하는 방식
내부 데이터 메모리의 하위 128 바이트나 SFR 을 Access 하는데 사용된다 .
MOV A, direct ; (Acc) ← (address)
MOV direct, A ; (address) ← (Acc)
< 참고 > 8051 명령의 주소 지정 방식 (Addressing Mode)
8051 의 데이터 이동 법칙
MOV < 목적지 >, < 소스 >
니모닉 오퍼랜드
26
② 간접 주소 지정 방식 (Addressing Mode)
Operand 의 주소를 저장하고 있는 Reg. 를 이용하여 Operand 를 간접적으로 지정
내부 또는 외부 데이터 메모리를 액세스하는데 사용된다 .
간접 주소 지정방식에는 Register 는 R0 또는 R1 만을 사용 가능하다 .
기호 @ 를 R0, R1 앞에 나타내어 간접 주소 지정임을 표시
MOV @Rn, #data ; ((Rn)) ← data ( n = 0 or 1)
MOV @Rn, direct ; ((Rn)) ← (direct address)
예 ) MOV R0, #5FH
MOV A, @R0
27
③ 레지스터 주소 지정 방식 (Addressing Mode)
R0-R7 을 포함하는 레지스터 Bank 를 액세스하는 방식오퍼랜드를 표시하는 추가적인 Byte 를 사용하지 않으므로 기계어 코드가 짧아 진다는 장점
MOV A, Rn ; (Acc)←(Rn), (n=0 ~ 7)MOV Rn, A ; (Rn)←(Acc)
④ 즉치 (Immediate) 주소 지정 방식 (Addressing Mode)
오퍼랜드가 명령어 코드 중에 상수 값으로 표시되는 방식오퍼랜드는 DPTR 을 제외하고는 항상 8 비트이다 . 명령에 사용되는 즉치 데이터의 앞에는 반드시 # 기호를 사용한다 .
MOV A, #data ; (ACC) ← data
28
특수기능 레지스터 (Special Function Register)
8051 의 내부 RAM 80H~F 로 (128 바이트 ) 까지에 위치하고 있는 21 개의 Register.
- 이 위치를 직접번지 지정으로 액세스 하면 데이터 메모리 대신 SFR 이 액세스 됨
구성
• Port Latch 및 주변기기의 상태 및
제어를 담당하는 Register
P0,P1,P2,P3,
PCON,TCON…..
• 소프트웨어 제어연산용 Register
ACC, B, DPTR, PSW, SP
29
특수기능 레지스터 (Special Function Register)
30
① B Register - 8 bit 의 범용 레지스터 ACC 와 조합해서 곱셈과 나눗셈 연산에 사용 .
② Stack Pointer(SP) - 8 bit 레지스터 현재 스택 (Stack) 의 가장 윗 부분 데이터의 주소를 가리킨다 .
Stack 의 동작 푸싱 (pushing ) : 데이터를 넣는 동작 데이터를 쓰기 전에 스택 포인터 (SP) 를 증가시킴 . 팝핑 (popping ) : Stack 에서 데이터를 제거 데이터를 읽고 SP 를 감소시킨다 .
스택은 내부 데이터 메모리 ( 내부 RAM) 의 어디나 존재할 수 있음 . Reset 후에 07H 로 초기화되어 08H 번지에서 시작 Stack 의 번지 초기화 명령 (60H 번지로 스택 포인터 위치 설정하기 ) MOV SP, #5FH
31
③ PSW(Program Status Word)
CPU 의 연산 처리결과를 나타내는 레지스터로 주소는 D0H 이다 .
32
④ DPTR(Data Pointer Register)
• 16Bit 의 Register 이다 .
• DPH, DPL 로 나누어서 8Bit 로도 사용이 가능하다 .
• 외부 데이터 메모리 (RAM) 와 데이터를 주고 받을 때 Address Pointer 로 사용
내부 기능 제어용 레지스터
• Timer/Counter TH1, TL1, TH0, TL0, TMOD, TCON
• Serial Port SBUF, SCON, PCON
• Interrupt Control IE, IP
• I/O Port Control P0, P1, P2, P3
33
2.4 8051 타이밍
34
Machine Cycle : CPU 가 한 개의 명령어를 처리하는데 소요되는 주기
1 machine cycle : 6 상태 , 12 Clock 으로 구성
12[MHz] X-tal 을 사용할 경우 1Machine Cycle 은 1[usec.] 소요 .
35
1Byte 1Cycle 명령인 경우 ( 예 , INC A)
S1 에서 명령을 Fetch
S4 에서 다음 명령의 OP Code 를 읽지만 , 무시
다음 Cycle 의 S1 에서 똑같은 OP Code 를 읽기 때문 .
36
2Byte 1Cycle 명령인 경우 ( 예 , ADD A, #data)
S1 에서 OP Code Fetch, S4 에서 Operand 를 읽어서 명령을 처리한다 .
37
1Byte 2Cycle 명령인 경우 ( 예 , INC DPTR )
S1 에서 OP Code 를 Fetch, S4 와 다음 Cycle 의 S1,S4 에서 Dummy Read.
38
1Byte 2Cycle 명령인 경우에서 MOVX 명령의 경우
외부 데이터 메모리만 Access 하는 명령이다 .
다음의 OP Code 의 읽기가 가능하다 .
39
2. 외부 메모리 액세스 타이밍 외부 프로그램 메모리 (ROM) 와의 인터페이스
ROM 의 Hardware 적 Access 신호 : /PSEN
40
41
외부 데이터 메모리 (RAM) 와의 인터페이스
RAM 의 Hardware 적 Access 신호 : /RD, /WR
42
외부 RAM 의 읽기 타이밍도
43
외부 RAM 의 쓰기 타이밍도
44
산술 연산 명령어
45
논리 연산 명령어
46
데이터이동
명령어
47
부울대수 처리 명령어
48
서브루틴 / 분기 명령어 (1)
49
서브루틴 / 분기 명령어 (2)
50
; ARITH1.ASM( 덧셈 )ORG 4000HMOV PSW, #08H ; BANK 1 선택
;MOV R0, #20H ; R0 값 설정MOV R1, #30H ; R1 값 설정
;MOV A, R0 ; A <- R0ADD A, R1 ; A <- A + R1MOV R3, A ; R3 <- A
;MOV A, #0H ; A <- 0ADDC A, #0H ; A <- A + 0 + CYMOV R2, A ; R2 <- A
;MOV PSW, #0H ; BANK 0 선택JMP 0057H ; 모니터 프로그램으로
;END
51
• ; ARITH2.ASM( 뺄셈 )• ORG 4000H• MOV PSW, #08H ; BANK 1 선택 • ;• MOV R2, #34H ; R2 값 설정• MOV R3, #56H ; R3 값 설정• MOV R4, #12H ; R4 값 설정• MOV R5, #34H ; R5 값 설정• ;• CLR C ; CY <- 0• MOV A, R3 ; A <- R3• SUBB A, R5 ; A <- A - R3 -
CY• MOV R7, A ; R7 <- A• ;• MOV A, R2 ; A <- R2• SUBB A, R4 ; A <- A - R4 -
CY• MOV R6, A ; R6 <- A• ;• MOV PSW, #0H ; BANK 0 선택 • JMP 0057H ; 모니터
프로그램으로• END
52
• ; ARITH3.ASM• ORG 4000H• MOV PSW, #08H ; BANK 1 선택• ;• MOV R0, #13H ; R0 값 설정• MOV R1, #19H ; R1 값 설정• ;• MOV A, R0 ; A <- R0• ADD A, R1 ; A <- A + R1• DA A ; 10 진 보정• MOV R2, A ; R2 <- A( 덧셈결과 )• ;• MOV PSW, #0H ; BANK 0 선택• JMP 0057H ; 모니터
프로그램으로• END
53
• ; ARITH4.ASM( 곱셈 )• ORG 4000H• MOV PSW, #08H ; BANK 1 선택• ;• MOV R0, #9• MOV R1, #11• ;• MOV B, R0• MOV A, R1• MUL AB• ;• MOV R3, A• MOV R2, B• ;• MOV PSW, #0H ; BANK 0 선택• JMP 0057H ; 모니터 프로그램으로• END
54
• ; ARITH5.ASM• ORG 4000H• ;• MOV DPTR, #1000H ; DPTR <- 1000H• ;• CLR C• MOV A, DPL• SUBB A, #1• MOV DPL, A ; DPL <- DPL - 1 • ;• MOV A, DPH• SUBB A, #0• MOV DPH, A ; DPH <- DPH - 0 - CY;• ;• JMP 0057H ; 모니터 프로그램으로• END
55
• ;BIT1.ASM• ORG 4000H• ;• MOV 20H, #34H• MOV 21H, #65H• MOV 22H, #0A5H• MOV 23H, #0B5H• MOV 24H, #38H• MOV 25H, #91H• MOV 26H, #55H• MOV 27H, #88H• ;• CLR A ; A <- 0• ;• MOV C, 27H.0• RLC A• MOV C, 26H.0• RLC A• MOV C, 25H.0• RLC A• MOV C, 24H.0• RLC A• MOV C, 18H ; 23H,0• RLC A• MOV C, 10H ; 22H.0• RLC A• MOV C, 08H ; 21H.0• RLC A• MOV C, 0H ; 20H.0• RLC A• ;• MOV 30H, A• ;• JMP 0057H ; 모니터 프로그램으로• END
top related