¿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> 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!