Estoy trabajando con el protocolo de comunicación Maestro-Esclavo y quiero enviar datos (en mi caso, la tensión de un diodo) desde mi microcontrolador 8051 a mi computadora portátil. Estoy usando un microcontrolador RS232 y 8051 con velocidad de baudios 1200 y cristal de 8,0 MHz. He configurado MODBUS de una manera pero cuando recibo datos en mi computadora portátil solo obtengo 2 valores. No sé si el problema está en mi aplicación C # o en mi configuración del MODBUS. El código MODBUS está aquí:
PackageToRead EQU 000h
RxTxBuffer EQU 040h
NextByte EQU 051h
MODBUS_AnalyzePackage:
PUSH ACC
MOV A, R1
PUSH ACC
MOV A, 043H
CJNE A, #4, MODBUS_KRL
MOV R1, 044H
;CJNE A, #0, MODBUS_Unknown
MOV A, @R1
MOV 045h, A
SJMP MODBUS_SendPackage
MODBUS_KRL:
CJNE A, #6, MODBUS_FCIUnknown
MOV A, 044h
CJNE A, #0, MODBUS_RIUnknown
MOV A, 045H
MOV @R1,A
SJMP MODBUS_SendPackage
MODBUS_FCIUnknown:
MOV 044, #081 ;Function code wrong
MOV 045, #0
SJMP MODBUS_SendPackage
MODBUS_RIUnknown:
MOV 044, #082 ;Wrong register address
MOV 045, #0
SJMP MODBUS_SendPackage
MODBUS_SendPackage:
MOV 042h, #6
MOV 046h, #00Dh
MOV 047h, #00Ah
MOV PackageLength, #7
MOV NextByte, #0
SETB PackageToRead
MOV SBUF, RxTxBuffer
POP ACC
MOV R1, A
POP ACC
RET