티스토리 뷰
타이머 1 을 이용하여 보레이트(Baud rate) 만들기
8051 의 직렬 통신은 통신 모드 1 (8비트 통신, 보레이트 가변 모드) 을 주로 사용합니다. 보레이트는 초당 전송되는 비트수(bps) 로 정의 될 수 있습니다. 이 보레이트를 만들기 위하여 타이머 1 의 모드 2 를 사용합니다. 타이머 모드 2 는 TL1 레지스터를 시정수로 사용합니다. TL1 이 오버플로우 되면 (0xFF -> 0x00) TH1 의 값이 TL1 으로 로드 됩니다. (오토 리로드) 타이머 1 을 사용한 경우의 보레이트 공식은 다음과 같습니다. 시스템 클럭은 22.1184 MHz 이고 SMOD 를 1 로 하고 TH1 을 0xFD(253) 로 해서 보레이트를 계산해 보면 38400 (bps) 이 됩니다. TH1 을 0xFA(250) 로 해서 보레이트를 계산해 보면 19200 (bps) 이 됩니다. TH1 을 0xF4(244) 로 해서 보레이트를 계산해 보면 9600 (bps) 이 됩니다. SMOD 를 0 로 하고 TH1 을 0xFD(253) 로 해서 보레이트를 계산해 보면 19200 (bps) 이 됩니다. TH1 을 0xFA(250) 로 해서 보레이트를 계산해 보면 9600 (bps) 이 됩니다. TH1 을 0xF4(244) 로 해서 보레이트를 계산해 보면 4800 (bps) 이 됩니다. SMOD 와 TH1 은 프로그램 상에서 변경이 가능하므로 소프트웨어적으로 보레이트를 변경하는 것이 가능합니다. 베타키트는 크리스탈을 교체할 수 있도록 제작되어 있기 때문에 크리스탈(시스템 클럭)을 11.0592 MHz 로 교체하면 보레이트를 반으로 줄일 수도 있습니다.
'C언어' 카테고리의 다른 글
시리얼 통신으로 받은 데이터를 LCD 에 표시하기 (0) | 2021.08.28 |
---|---|
시리얼 통신으로 데이터 주고 받기 (0) | 2021.08.26 |
직렬 통신에 관계된 레지스터 (0) | 2021.08.22 |
타이머 모드(TMOD) 의 GATE 제어하기 (0) | 2021.08.20 |
외부 인터럽트 1 과 타이머 인터럽트 1 함께 사용하기 (0) | 2021.08.18 |