240 likes | 1.22k Views
8051 마이크로컨트롤러 제 5 장 . 시리얼 포트 (Serial Port). 시리얼 (Serial) 통신. Serial 통신 - Serial 통신은 하나의 신호선을 이용해서 데이터를 비트 단위로 보내는 방식 “예” 8 비트 UART(Universal Asynchronous Receiver Transmitter). -1- 청강문화산업대학 이동통신과.
E N D
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 시리얼(Serial) 통신 • Serial 통신 - Serial 통신은 하나의 신호선을 이용해서 데이터를 비트 단위로 보내는 방식 “예” 8비트 UART(Universal Asynchronous Receiver Transmitter) -1-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) Serial interface 통신 규격 • Serial interface 통신 규격 : RS-232C, RS-422, RS-423 etc. - “예” RS-232C -2-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 시리얼(Serial) 통신 • Serial 통신 이점 - 적은 수의 통신 라인 사용과 먼 거리 전송 • Serial 통신 전송 방식 - simplex : 단방향 전송 방식 - 라디오 - half duplex : 반이중 전송 방식(서로 다른 시간 양방향 전송 방식) - 무전기 - (full) duplex : 전이중 전송 방식(동시 양방향 전송 방식) - 8051 • 속도 - bps(bits per second) : 1초당 전송되는 비트의 수 - baud rate : 1초당 전송되는 변조된 신호의 수 * 8051에서는 하나의 비트가 하나의 신호이므로 같은 의미 -3-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 시리얼 포트 레지스터 • SBUF(Serial data BUFfer) - 송신할 데이터와 수신할 데이터를 일시적으로 저장하는 레지스터 - 이중 구조(같은 이름, 같은 주소) : 송신용 SBUF, 수신용 SBUF • SMOD(PCON.7) - 2배의 baud rate flag(SMOD를 “1”로 하면 baud rate가 2배 * 모드 SM0( 0 ) SM1( 0 ) 모드0 – 동기식, Shift Register, 고정(Osc. 12) SM0( 0 ) SM1( 1 ) 모드1 – 비동기식, 8bit UART, 가변(타이머에 의해) SM0( 1 ) SM1( 0 ) 모드2 – 비동기식, 9bit UART, 고정(Osc. 32 or 64) SM0( 1 ) SM1( 1 ) 모드3 – 비동기식, 9bit UART, 가변(타이머에 의해) -4-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) SCON(Serial port CONtrol register) - SMO, SM1 : 모드 선택(앞장 참조) - SM2 : 모드2,3일 때 다중 통신 가능, 이 비트를 “1”로 하면, 수신 데이터의 9번째 비트가 “1”이면 데이터 수신, “0”이면 데이터 무시 - REN : 수신 가능 비트, 수신하기 위해서는 “1”로 설정 - TB8 : 모드2,3에서 송신 데이터의 9번째 비트는 TB8 값임 - RB8 : 모드2,3에서 수신 데이터의 9번째 비트의 값을 표현 - TI : 한 문자를 송신하면 “1”로 설정, 소프트웨어에 의해 clear - RI : 한 문자를 수신하면 “1”로 설정, 소프트웨어에 의해 clear -5-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 동작 모드 • 모드0(8비트 쉬프트 레지스터) - 동기식, 8개의 데이터, baud rate는 Osc. 12 - TXD : 동기 clock 신호, RXD : 데이터 입/출력 • 모드1,2,3 - 모드1 : 비동기식, 8비트 데이터 UART, baud rate는 타이머에 의해 가변 (8비트 데이터 UART : 시작 비트, 8비트 데이터, 종료 비트) - 모드2 : 비동기식, 9비트 데이터 UART, baud rate는 Osc. 32 or 64 (9비트 데이터 UART : Start bit, 8bit Data, 9번째 bit, Stop bit) - 모드3 : 비동기식, 9비트 데이터 UART, baud rate는 타이머에 의해 가변 (9비트 데이터 UART : Start bit, 8bit Data, 9번째 bit, Stop bit) -6-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 시리얼 포트 레지스터의 초기화 • 수신 가능 : 수신을 위해서는 REN을 “1”로 설정 - SETB REN or MOV SCON, #xxx1xxxxB • 9번째 데이터 비트 - 다중 통신에 중요한 역할, 패리티 추가 • 인터럽트 플래그 - TI, RI는 한 문자의 송,수신에 의해 “1”로 설정, 소프트웨어에 의해 0(clear) - RI의 초기값은 “0” - TI의 초기값은 “1” WAIT: JNB RI, WAIT WAIT: JNB TI, WAIT CLR RI CLR TI MOV A, SBUF MOV SBUF, A -7-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) Baud rate • 모드0 : OSC/12, 모드2 : OSC/32(SMOD=1) or OSC/64(SMOD=0) • 모드1,3 : 타이머/카운터 1의 OV(over flow) -8-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 모드1,3의 baud rate 설정 - 타이머/카운터 1의 모드2(8비트 자동 재적재 모드) 사용 - 5% 내의 오차는 허용, 정확한 baud rate를 위해 11.0592MHz 사용(표5-3 참조) - TH1 재적재 값 구하기(baud rate = 1200, Osc = 12MHz, SMOD = 0인 경우) baud rate = 타이머/카운터 1의 OV 32 타이머/카운터 1의 OV = 1200(baud rate) 32 = 38400Hz 주기(T)는 1 38400Hz = 26.04us Osc가 12MHz이므로 타이머/카운터 1의 1clock은 1us, 따라서 TH1은 -26 - 오차 구하기 -26은 38461.5Hz 38461.5Hz 32 = 1202(baud rate) 1202 - 1200 1200 = 0.0016 = 0.16% -9-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 예제 5-1 • 시리얼 포트의 초기화 (baud rate = 9600, Osc = 11.0592MHz, SMOD = 0, 8비트 UART인 경우) SCON, SMOD = 0, TMOD, TH1, TCON ORG 8000H INIT: MOV SCON, #52H ; 모드1(SM0=0, SM1=1), REN=1, TI=1 MOV TMOD, #20H ; T/C 1 모드2(M1=1, M0=0) MOV TH1, #-3 ; 표 5-3 참조 SETB TR1 END -10-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 예제 5-2 • 문자 출력 서브루틴: 7비트 ASCII, 8번째 비트는 홀수 패리티 ORG 8000H OUTCHR:MOV C, P ; 패리티 비트를 C에 넣음 CPL C ; 홀수 패리티로 변경 MOV ACC.7, C ; 문자 코드를 추가 AGAIN: JNB TI, AGAIN ; 송신버퍼가 비었니? 아니오:다시 체크 CLR TI ; 예 MOV SBUF, A ; 문자 송신 CLR ACC.7 ; 패리티 비트를 벗겨버림 RET ; 복귀 -11-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 예제 5-2 • 문자 입력 서브루틴: 7비트 ASCII, 8번째 비트는 홀수 패리티 ORG 8000H INCHR: JNB RI, INCHR ; 문자를 기다림 CLR RI ; RI를 clear MOV A, SBUF ; 수신 문자를 ACC로 MOV C, P ; 홀수 패리티 CPL C ; 에러 여부 확인 CLR ACC.7 ; 패리티 비트를 제거 RET END -12-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 실험(수신) • 9600bps, 7비트 ASCII, 8번째 비트는 홀수 패리티, P1으로 출력 ORG 8000H INIT: MOV SCON, #50H MOV A, SBUF MOV TMOD, #20H MOV C, P MOV TH1, #-3 CPL C SETB TR1 MOV ACC.7, C MOV P1, #0 MOV P1, A ; JMP INCHR INCHR: JNB RI, $ ; CLR RI END -13-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제5장. 시리얼 포트(Serial Port) 과제물(Report) • 기한 : 10월 11일(금) 17시까지 강의도우미가 수거하여 제출 1. 예제 5-2 : 문제, 프로그램, 설명 기재 2. 실험(수신) : 문제, 프로그램, 설명 기재 * 자필로 작성해야 함(가급적 A4지 1장에 기재) -14-청강문화산업대학 이동통신과