제 5 장 82C55를 이용한 포트 출력

Download Report

Transcript 제 5 장 82C55를 이용한 포트 출력

제 5 장
82C55를 이용한 포트 출력
5.1 82C55 IC에 대하여 (1)
현재 사용하고 있는 80C31은 24개의 I/O가 있
지만, ADDRESS,DATA BUS로 사용하므로 실제 사
용 가능한 부분은 PORT1 이다.
82C55의 의 중요 목적은 부족한 I/O를 보충해
주는 역할이다. 한 개의 82C55 칩에는 24개의
I/O가 들어있다.
제5장 82C55를 이용한 포트 출력
2
5.1 82C55 IC에 대하여 (2)
[ 80C31 CPU의 외부포트 P1,P2,P3,P4 ]
U1
C1
30P
31
Y1
11.0592MhZ
C2
30P
19
18
RESET
»ç¿ë °¡´ÉÇÑ
port
9
12
13
14
15
1
2
3
4
5
6
7
8
EA/VP
X1
X2
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
39
38
37
36
35
34
33
32
A0
A1
A2
A3
A4
A5
A6
A7
21
22
23
24
25
26
27
28
A8
A9
A10
A11
A12
A13
A14
A15
17
16
29
30
11
10
/RD
/WR
/PSEN
ALE
¾îµå·¹½º,µ¥ÀÌÅÍ
¹ö½º·Î»ç¿ë
/RD,/WRµî Çϵå¿þ¾î
Á¦¾î¿ëÀ¸·Î »ç¿ë
80C31
제5장 82C55를 이용한 포트 출력
3
5.2 82C55 IC의 초기화 & 사용하기 (1)
82C55 사용방법 : 칩 선택신호(ADDRESS)를 주
고, 다음으로 데이터를 준다.
칩 선택 방법
 CPU 포트에서 직접 칩 선택 : CPU의 입출력
포트의 수가 많은 경우 [그림 5-1]
 74HC138 디코더 칩을 이용 : 입출력 포트가
모자라서 ADDRESS를 이용해서 선택하는 경우
[그림 5-2]
제5장 82C55를 이용한 포트 출력
4
5.2 82C55 IC의 초기화 & 사용하기 (2)
[그림 5-1 ]
¾îµå·¹½º,µ¥ÀÌÅÍ ¹ö½º
ROM
RAM
EEPROM LCD
82C55
CPU
CS1
CS2
CS3
Ĩ¼±Åà ½ÅÈ£µé(CPU ÀÇ PORT ÀÌ¿ë)
[ ÀϹÝÀûÀΠĨ ¼±Åà ¹æ¹ý ]
제5장 82C55를 이용한 포트 출력
5
5.2 82C55 IC의 초기화 & 사용하기 (3)
[그림 5-2 ]
¾îµå·¹½º,µ¥ÀÌÅÍ ¹ö½º
ROM
RAM
EEPROM LCD
82C55
CPU
A12 A
A13 B
A14 C
74HC138
Ĩ¼±Åà ½ÅÈ£µé(138 µðÄÚ´õÀÌ¿ë)
[ MC-8051º¸µåÀÇ Ä¨ ¼±Åà ¹æ¹ý ]
제5장 82C55를 이용한 포트 출력
6
5.2 82C55 IC의 초기화 & 사용하기 (4)
데이터를 주는 방법
어드레스 라인
A0,A1ÀÇ °ª¿¡µû¶ó ¼±ÅÃ
CPU
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
D0
D1
D2
D3
D4
D5
D6
D7
82C55
/RD
/WR
0
A0
0
A1
RESET
8255/CS1
#8000¹øÁöÀ̸é,8255/CS1
ÀÌ ¼±ÅõȴÙ
제5장 82C55를 이용한 포트 출력
7
5.2 82C55 IC의 초기화 & 사용하기 (5)
A1
0
0
1
1
1)
2)
3)
4)
8000H
8001H
8002H
8003H
A0
0
1
0
1
(1000
(1000
(1000
(1000
동작 모드
포트 A 선택
포트 B 선택
포트 C 선택
컨트롤 워드(CONTROL WORD)
0000
0000
0000
0000
제5장 82C55를 이용한 포트 출력
0000
0000
0000
0000
0000B)번지
0001B)번지
0010B)번지
0011B)번지
–
–
–
–
포트 A 선택
포트 B 선택
포트 C 선택
컨트롤 워드
8
5.2 82C55 IC의 초기화 & 사용하기 (6)
[ 82C55 ]
U701
D0
D1
D2
D3
D4
D5
D6
D7
/RD
/WR
A0
A1
RESET
8255/CS1
34
33
32
31
30
29
28
27
5
36
9
8
35
6
26
7
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
/RD
/WR
A0
A1
RESET
8255/CS1
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
VDD
VSS
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
PORT A
PORT B
PORT C ÇÏÀ§
PORT C ȗˤ
82C55
제5장 82C55를 이용한 포트 출력
9
5.2 82C55 IC의 초기화 & 사용하기 (7)
컨트롤 워드
포트 A
포트 B
포트 C 상위
포트 C 하위
80H
81H
82H
83H
88H
89H
8AH
8BH
출력
출력
출력
출력
출력
출력
출력
출력
출력
출력
입력
입력
출력
출력
입력
입력
출력
출력
출력
출력
입력
입력
입력
입력
출력
입력
출력
입력
출력
입력
출력
입력
제5장 82C55를 이용한 포트 출력
10
5.2 82C55 IC의 초기화 & 사용하기 (8)
컨트롤 워드
포트 A
포트 B
포트 C 상위
포트 C 하위
90H
입력
출력
출력
출력
91H
입력
출력
출력
입력
92H
입력
출력
출력
출력
93H
입력
입력
출력
입력
98H
입력
출력
입력
출력
99H
입력
출력
입력
입력
9AH
입력
입력
입력
출력
9BH
입력
입력
입력
입력
제5장 82C55를 이용한 포트 출력
11
5.2 82C55 IC의 초기화 & 사용하기 (9)
82C55의 포트A,B,C를 모두 출력으로 설정하려
면 컨트롤 데이터는 #80H가 된다.
MOV
MOV
MOVX
DPTR,#8003H
A,#80H
@DPTR,A
; 8003H 번지를 정의한다
; 컨트롤워드 값을 정한다.
; 출력한다
프로그램 시 초기화(INITIAL) 부분에 위치하면
된다
제5장 82C55를 이용한 포트 출력
12
[실험]
1. PORT A로“01010101”출력하기 (1)
[ 순서도 검토 ]
시작
↓
1. SFR 초기화
2. 내부 RAM 초기화
3. 82C55 초기화
↓
메인 프로그램 실행
제5장 82C55를 이용한 포트 출력
13
1. PORT A로“01010101”출력하기 (2)
START:
;;
ORG
JMP
0000H
INITIAL
;시작번지를 0000번지로 한다
;8051 초기 데이터(고정)
ORG
0035H
;프로그램 시작번지(35번지)
INITIAL:
MOV
SP,#5FH
;스택포인터를 5FH로 잡는다.
MOV
IP,#00000000B ;인터럽트 우선순위 레지스터
MOV
IE,#00000000B ;인터럽터를 사용하지 않는다
MOV
TMOD,#00000000B ;타이머0,1을 사용하지 않는다.
MOV
TCON,#00000000B
MOV
SCON,#00000000B ;시리얼통신을 하지 않는다
MOV
PCON,#00000000B
;; (뒷장에 코드 계속)
제5장 82C55를 이용한 포트 출력
14
1. PORT A로“01010101”출력하기 (3)
INIT_8255:
MOV
MOV
MOVX
DPTR,#8003H
A,#80H
@DPTR,A
;8255의 컨트롤워드를 입력
;포트A,B,C를 출력으로 한다
;8255에 입력한다.
MOV
MOV
MOVX
DPTR,#8000H
A,#01010101B
@DPTR,A
;8255의 포트 A를 선택한다
;출력할 데이터를 입력한다
;데이터를 출력한다
JMP
MAIN
MAIN:
;;
;;
$DELAY.INC
END
제5장 82C55를 이용한 포트 출력
;딜레이 함수 첨부
;PROGRAM END
15