Red de conocimiento informático - Material del sitio web - ¿Cómo escribir un programa de puerto serie en lenguaje ensamblador? ~Quiero enviar comandos AT a través del puerto serie~ pero solo puedo usar lenguaje ensamblador. ¿Alguien puede darme un ejemplo como referencia?

¿Cómo escribir un programa de puerto serie en lenguaje ensamblador? ~Quiero enviar comandos AT a través del puerto serie~ pero solo puedo usar lenguaje ensamblador. ¿Alguien puede darme un ejemplo como referencia?

ORG 0023H

SERIE LJMP

;************************ ***************

;Función: Interrumpir rutina de servicio

SERIAL:

PUSH ACC

PUSH DPH

PUSH DPL

PUSH B

PUSH PSW

SETB RS1 ;Zona 2(10H-17H)

CLR RS0; trabajando en zona 2

JBC RI,COMRXD

JBC TI,COMTXD

POPD:

CLR BUSOV_BZ ;Borrar el indicador de desbordamiento de 3,5 ms

MOV BUS_DS,#BUS_V ;Establecer el valor inicial en 7.

7×0.5ms=3.5ms

SETB BUSEN_BZ ;3.5MS permitidos conteo

POPDT:

POP PSW

POP B p>

POP DPL

POP DPH

POP ACC

RETI

COMTXD: ;Enviar subrutina

SETB TI_BZ

SJMP POPDT

;*************************** *Subprograma de comunicación************************

COMM:

SETB RS1

CLR RS0

JNB RXE_BZ,COMMRET; si hay un indicador de finalización de recepción

CLR RXE_BZ

CLR DATAC_BZ

CLR TI_BZ

LCALL CHECKCRC; Verifique BCC, si es correcto, configure el indicador de lectura y escritura de EEPROM

-----------Si el CRC es incorrecto, envíe un error. respuesta

JNB CRCR_BZ ,COMMRET ;Si ocurre un error de validación BCC, salga sin ejecutar la respuesta

CLR CRCR_BZ

;---------- -

MOV R1,# FUNC_R

MOV A,@R1

FUNC01:

CJNE A,#01H,FUNC03 ;Leer palabra de estado, bit

LCALL RDZT

JNB AORN_BZ,SNAK ;Si ocurre un error, se realizará una respuesta de objeción unificada

LCALL FMT01

LCALL SACKZT

JMP COMMRET

FUNC03:

CJNE A, #03H, FUNC04 ;Leer parámetros de configuración

LCALL RDEA ;Lee la configuración y convierte a binario

JNB AORN_BZ,SNAK ;Si ocurre un error, la respuesta de objeción se unificará

LCALL FMT03;Organiza los datos a enviar (longitud de los datos, CRC, número total de bytes a enviar, etc.)

LCALL SACKRDE

JMP COMMRET

............ ................. ................................. .......

... ................................. ................................ ..................

COMMRET:

CLR RS1

CLR RS0

RET

Lo recorté del programa, MODBUS, yo también

No lo solucionaré, ¡puedes consultarlo tú mismo!