>  기사  >  직렬 포트의 작동 방식을 제어하는 ​​레지스터는 무엇입니까?

직렬 포트의 작동 방식을 제어하는 ​​레지스터는 무엇입니까?

WBOY
WBOY원래의
2022-07-22 10:53:268865검색

직렬 포트의 작동 모드를 제어하는 ​​레지스터는 직렬 포트 제어 레지스터인 SCON입니다. SCON은 직렬 통신 방법의 선택, 수신 및 전송을 제어하는 ​​데 사용되며 직렬 포트의 상태를 나타냅니다. 바이트 주소 지정 또는 비트 주소 지정이 가능하며 바이트 주소는 "98H"이고 주소 비트는 "98H~9FH"입니다.

직렬 포트의 작동 방식을 제어하는 ​​레지스터는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, DELL G3 컴퓨터.

직렬 포트의 작동 모드를 제어하는 ​​레지스터는 무엇인가요? 직렬 포트의 작동 모드를 제어하는 ​​레지스터는 SCON

SCON(Serial Control Register) 직렬 포트 제어 레지스터이며, 선택을 제어하는 ​​데 사용됩니다. 직렬 통신 방법 중 직렬 포트의 상태를 나타내는 수신 및 전송입니다. SCON은 바이트 주소 지정이 가능하거나 비트 주소 지정이 가능합니다. 해당 바이트 주소는 98H이고 주소 비트는 98H~9FH입니다.

구조:

직렬 포트의 작동 방식을 제어하는 ​​레지스터는 무엇입니까?작업 모드(SM0 SM1)

(1) 모드 0(SM0 SM1:0 0): 직렬 포트의 작업 모드 0은 시프트 레지스터 I/O 모드입니다. , 외부 시프트 레지스터, 확장 I/O 포트 또는 외부 동기 I/O 장치에 연결할 수 있습니다. 전송 작업: "MOVSBUF,A" 명령을 실행하면 전송 작업이 시작되고 시프트 펄스가 TXD에 의해 출력되며 SBUF의 데이터는 RXD에 의해 직렬화됩니다. 8비트 데이터를 전송한 후 자동으로 TI=1로 설정되고 인터럽트가 요청됩니다. 계속 전송하려면 명령에 따라 TI를 지워야 합니다. 수신 작업: REN은 직렬 포트 수신 활성화 제어 비트입니다. REN=0이면 수신이 금지되고, REN=1이면 수신이 허용됩니다. 소프트웨어가 REN을 "1"로 설정하면 fosc/12 보드 속도로 RXD 포트에서 데이터 입력이 시작됩니다. 8비트 데이터가 수신되면 인터럽트 플래그 RI가 "1"로 설정됩니다. 데이터를 다시 수신하기 전에 소프트웨어를 통해 RI를 0으로 지워야 합니다.

(2) 모드 1(SM0 SM1:0 1): 직렬 포트는 10비트 범용 비동기 인터페이스입니다. 한 프레임에 송수신되는 데이터 정보는 시작 비트 "0" 1개, 데이터 비트 8개, 정지 비트 "1" 1개 등 10비트입니다. 데이터 전송: TXD 포트에서 데이터가 출력되며 데이터가 전송 버퍼 SBUF에 기록되면 송신기가 전송을 시작합니다. 한 프레임의 데이터를 보낸 후 인터럽트 플래그 TI=1을 설정하고 인터럽트를 적용한 후 다음 데이터를 보낼 수 있음을 CPU에 알립니다. 데이터 수신: 먼저 REN = 1(데이터 수신 허용)로 설정하면 직렬 포트가 RXD에서 데이터를 수신합니다. 샘플이 1에서 0으로 전환되면 시작 비트가 "0"으로 확인되고 데이터 프레임이 시작됩니다. 한 프레임의 데이터가 수신되면 인터럽트 플래그 RI=1을 설정하고 인터럽트를 적용한 후 SBUF에서 수신된 데이터를 가져오도록 CPU에 알립니다.

(3) 모드 2(SM0 SM1:1 0): 직렬 포트는 11비트 비동기 통신 인터페이스입니다. 정보 프레임의 전송 또는 수신에는 1개의 시작 비트 "0", 8개의 데이터 비트, 1개의 프로그래밍 가능 비트 및 1개의 정지 비트 "1"이 포함됩니다. 데이터 전송: 전송하기 전에 먼저 통신 프로토콜에 따라 소프트웨어로 TB8을 "패리티 비트" 또는 "데이터 식별 비트"로 설정한 다음 전송할 데이터를 SBUF에 기록하여 송신기를 시작합니다. 전송 프로세스는 SBUF를 대상 레지스터로 사용하여 명령을 실행하고, 8비트 데이터를 SBUF에 로드하고, TB8을 전송 시프트 레지스터의 9번째 비트에 로드한 다음 TXD(P3.1)에서 시작하여 시작됩니다. 한 프레임의 데이터를 출력합니다. 데이터 수신: 직렬 포트가 데이터를 수신할 수 있도록 먼저 REN=1을 설정하고 RI를 "0"으로 지웁니다. 그런 다음 SM2의 상태와 수신된 RB8의 상태에 따라 정보가 도착한 후 직렬 포트가 RI=1로 설정하는지 여부를 결정하고 인터럽트를 적용하여 CPU에 데이터 수신을 알립니다. SM2=0인 경우 RB8이 "0"인지 "1"인지에 관계없이 RI=1로 설정되고 이 직렬 포트는 전송된 정보를 수신하게 됩니다. SM2=1이고 RB8=1인 경우 다중 기계 통신의 ​​경우 수신된 정보가 "주소 프레임"임을 의미합니다. 이때 RI=1로 설정하면 직렬 포트가 전송된 주소를 수신하게 됩니다. SM2=1, RB8=0인 경우 다중 머신 통신의 경우 수신된 정보는 "데이터 프레임"이지만, 이때 RI는 "로 설정되지 않습니다. 1"이므로 SBUF에서 수신된 정보는 데이터 프레임이 손실됩니다.

(4) 모드 3(SM0 SM1:1 1): 전송 속도가 가변적인 11비트 비동기 통신 모드입니다. 전송 속도의 차이를 제외하고 다른 모드는 모드 2와 동일합니다.

더 많은 관련 지식은

FAQ

칼럼을 방문해주세요!

위 내용은 직렬 포트의 작동 방식을 제어하는 ​​레지스터는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.