configuración MODBUS en 8051 microcontrolador

0

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
    
pregunta Blend Mexhuani

0 respuestas

Lea otras preguntas en las etiquetas