BASIC4MCU | 8051/PIC | DT-516 강좌 | 시리얼통신 통신속도 변경
페이지 정보
작성자 키트 작성일2017-08-23 14:25 조회1,791회 댓글0건본문
SM0 SM1 Mode Description Baud Rate
0 0 0 Shift Register FCPU PERIPH/6
0 1 1 8-bit UART Variable
1 0 2 9-bit UART FCPU PERIPH /32 or /16
1 1 3 9-bit UART Variable
FCPU PERIPH = 22118400/12 = 1843200
1843200 / 32 = 57600 (PCON 비트7 = 0 일 때)
1843200 / 16 = 115200 (PCON 비트7 = 1 일 때, double baud rate in mode 1, 2 or 3 )
TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFA; TL1=0xFA; TR1=1; // 9600bps
위 설정은 22.1184MHz 에서 9600bps입니다.
TMOD=0x22; 색칠한 부분이 시리얼 클럭용으로 사용 될 타이머1의 모드이고 8비트 Auto Reload 모드입니다.
TH1=0xFA; TL1=0xFA; 초기값 설정 후
TL1이 1씩 증가 해서 0xFA->0xFB->0xFC->0xFD->0xFE->0xFF->0x00 오버플로우 하게되면
TH1에 들어있는 0xFA 값이 TL1에 자동으로 Load 됩니다.
0xFA->0xFB->0xFC->0xFD->0xFE->0xFF->0x00(Auto Reload)0xFA->0xFB->0xFC->0xFD-> 를 반복하게되고
오버플로우까지 6개의 클럭이 소요 됩니다. (256-0xFA = 6)
57600 / 6 = 9600 bps
57600 / 3 = 19200 bps
57600 / 2 = 28800 bps
57600 / 1 = 57600 bps
TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFA; TL1=0xFA; TR1=1; // 9600 bps at 22.2284MHz
TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFD; TL1=0xFD; TR1=1; // 19200 bps at 22.2284MHz
TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFE; TL1=0xFE; TR1=1; // 28800 bps at 22.2284MHz
TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFF; TL1=0xFF; TR1=1; // 57600 bps at 22.2284MHz
더블보레이트를 사용 하면 ( PCON=0x80 )
115200 / 6 = 19200 bps
115200 / 3 = 38400 bps
115200 / 2 = 57600 bps
115200 / 1 = 115200 bps
PCON=0x80; TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFA; TL1=0xFA; TR1=1; // 19200 bps at 22.2284MHz
PCON=0x80; TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFD; TL1=0xFD; TR1=1; // 38400 bps at 22.2284MHz
PCON=0x80; TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFE; TL1=0xFE; TR1=1; // 57600 bps at 22.2284MHz
PCON=0x80; TMOD=0x22; SCON=0x50; TCON=0x55; TH1=0xFF; TL1=0xFF; TR1=1; // 115200 bps at 22.2284MHz
댓글 0
조회수 1,791등록된 댓글이 없습니다.