어셈블리 언어를 사용하여 두 컴퓨터 간의 통신을 구현하는 방법 - 인터페이스 및 통신 과정 설계
발신자 프로그램:
AL EQU 20H:BYTE
AH EQU 21H:BYTE
BX EQU 22H:WORD
ORG 200CH
DCW SINT
ORG 2080H
MAIN: LD SP,#00F0H
LDB 30H,#0
LDB 31H,#1
LDB 32H,#2
LDB 33H,#3
LDB 34H,#4
p>LD BX,#0030H
LDB IOC1,#20H ;TXD/P2.0 선택
LDB SPCON,#09H ;D3: 수신 허용;D1D0: 01 방법
LDB BAUDRATE,#4DH
LDB BAUDRATE,#80H
LDB INT_MASK,#40H ;직렬 포트 인터럽트 소스 열기
EI
LDB AL,#05H
STB AL,SBUF
LOOP1: SJMP LOOP1
SINT: PUSHF
LDB AL,SP_STAT; 상태 레지스터 데이터 복사
JBS AL,6,SINT1; RI 인터럽트 수신 플래그 쿼리
CMP BX,#0035H
JE SINT2
LDB AL,[BX]+
STB AL,SBUF 데이터 전송
SJMP SINT2
SINT1: LDB AH ,SBUF
SINT2: POPF
RET
수신기 프로그램
AL EQU 20H: BYTE
BX EQU 22H:WORD
CL EQU 24H:BYTE
NUM EQU 26H:BYTE
ORG 200CH
DCW SINT
ORG 2080H
MAIN: LD SP,#00FFH
LDB BX,#0030H
CLRB CL
, #20H ;TXD/P2.0 선택
LDB SP_CON,#09H ;D3: D1D0:01 모드 수신 허용
LDB BAUD_RATE,#4DH
LDB BAUD_RATE,#80H
LDB INT_MASK,#40H ;직렬 포트 인터럽트 소스 열기
EI
LOOP1: SJMP LOOP1
SINT : PUSHF
LDB AL,SP_STAT; 상태 레지스터 데이터 복사
JBS AL,6,SINT1; RI 인터럽트 수신 플래그 쿼리
SJMP SINT3 p>
SINT1: LDB NUM,SBUF
SINT2: LDB AL,SP_STAT
JBC AL,6,SINT2
LDB AL,SBUF
STB AL,[BX]+
ADDB CL,AL
DJNZ NUM,SINT2
STB CL,SBUF
SINT3: POPF
RET
이것은 내 직렬 포트 이중 기계 통신 프로그램입니다< /피> 피>