제 5 장 82C55를 이용한 포트 출력
5.1 82C55 IC에 대하여 (1) 현재 사용하고 있는 80C31은 24개의 I/O가 있지만, ADDRESS,DATA BUS로 사용하므로 실제 사용 가능한 부분은 PORT1 이다. 82C55의 의 중요 목적은 부족한 I/O를 보충해주는 역할이다. 한 개의 82C55 칩에는 24개의 I/O가 들어있다. 제5장 82C55를 이용한 포트 출력
5.1 82C55 IC에 대하여 (2) [ 80C31 CPU의 외부포트 P1,P2,P3,P4 ]
5.2 82C55 IC의 초기화 & 사용하기 (1) 82C55 사용방법 : 칩 선택신호(ADDRESS)를 주고, 다음으로 데이터를 준다. 칩 선택 방법 CPU 포트에서 직접 칩 선택 : CPU의 입출력 포트의 수가 많은 경우 [그림 5-1] 74HC138 디코더 칩을 이용 : 입출력 포트가 모자라서 ADDRESS를 이용해서 선택하는 경우 [그림 5-2] 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (2) [그림 5-1 ] 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (3) [그림 5-2 ] 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (4) 데이터를 주는 방법 어드레스 라인 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (5) A1 A0 동작 모드 포트 A 선택 1 포트 B 선택 포트 C 선택 포트 A 선택 1 포트 B 선택 포트 C 선택 컨트롤 워드(CONTROL WORD) 1) 8000H (1000 0000 0000 0000B)번지 – 포트 A 선택 2) 8001H (1000 0000 0000 0001B)번지 – 포트 B 선택 3) 8002H (1000 0000 0000 0010B)번지 – 포트 C 선택 4) 8003H (1000 0000 0000 0011B)번지 – 컨트롤 워드 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (6) [ 82C55 ] 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (7) 80H 출력 81H 입력 82H 83H 88H 89H 8AH 8BH 컨트롤 워드 포트 A 포트 B 포트 C 상위 포트 C 하위 80H 출력 81H 입력 82H 83H 88H 89H 8AH 8BH 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (8) 90H 입력 출력 91H 92H 93H 98H 99H 9AH 9BH 컨트롤 워드 포트 A 포트 B 포트 C 상위 포트 C 하위 90H 입력 출력 91H 92H 93H 98H 99H 9AH 9BH 제5장 82C55를 이용한 포트 출력
5.2 82C55 IC의 초기화 & 사용하기 (9) 82C55의 포트A,B,C를 모두 출력으로 설정하려면 컨트롤 데이터는 #80H가 된다. MOV DPTR,#8003H ; 8003H 번지를 정의한다 MOV A,#80H ; 컨트롤워드 값을 정한다. MOVX @DPTR,A ; 출력한다 프로그램 시 초기화(INITIAL) 부분에 위치하면 된다 제5장 82C55를 이용한 포트 출력
[실험] 1. PORT A로“01010101”출력하기 (1) [ 순서도 검토 ] 시 작 1. SFR 초기화 ↓ 1. SFR 초기화 2. 내부 RAM 초기화 3. 82C55 초기화 메인 프로그램 실행 제5장 82C55를 이용한 포트 출력
1. PORT A로“01010101”출력하기 (2) ORG 0000H ;시작번지를 0000번지로 한다 START: JMP INITIAL ;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를 이용한 포트 출력
1. PORT A로“01010101”출력하기 (3) INIT_8255: MOV DPTR,#8003H ;8255의 컨트롤워드를 입력 MOV A,#80H ;포트A,B,C를 출력으로 한다 MOVX @DPTR,A ;8255에 입력한다. MAIN: MOV DPTR,#8000H ;8255의 포트 A를 선택한다 MOV A,#01010101B ;출력할 데이터를 입력한다 MOVX @DPTR,A ;데이터를 출력한다 ;; JMP MAIN $DELAY.INC ;딜레이 함수 첨부 END ;PROGRAM END 제5장 82C55를 이용한 포트 출력