This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

MDU unit

hello ,
i am having some problems with the multiplication division unit of the xc878 infineon microcontroller.
i am trying to do a shift operation. the number to be shifted is a 32 bit. lets say i want to do this: 0x00FB00FF >> 16. i would require the MD0,MD1,MD2,MD3 registers. now my problem. i can load the MD0 and MD1 registers but i dont know how to load the MD2 and MD3 registers. please kindly help out.
stephen

Parents
  • This is how you can do it in assembly language:

    #include <xc878.h>
    
    ULSHR:          MOV     A,R0
                    JZ      RETURN
                    ANL     A,#1FH
                    ORL     A,#20H
                    MOV     MDU_MD0,R7
                    MOV     MDU_MD1,R6
                    MOV     MDU_MD2,R5
                    MOV     MDU_MD3,R4
                    MOV     MDU_MDUCON,A
                    LCALL   ?C?WAIT18       ;WAIT 18 CYCLES
                    MOV     R7,MDU_MD0
                    MOV     R6,MDU_MD1
                    MOV     R5,MDU_MD2
                    MOV     R4,MDU_MD3
    RETURN:         RET
    

    Note that this code is not tested, you should verify (using the datasheet) that it is working with the MDU of the XC878.

Reply
  • This is how you can do it in assembly language:

    #include <xc878.h>
    
    ULSHR:          MOV     A,R0
                    JZ      RETURN
                    ANL     A,#1FH
                    ORL     A,#20H
                    MOV     MDU_MD0,R7
                    MOV     MDU_MD1,R6
                    MOV     MDU_MD2,R5
                    MOV     MDU_MD3,R4
                    MOV     MDU_MDUCON,A
                    LCALL   ?C?WAIT18       ;WAIT 18 CYCLES
                    MOV     R7,MDU_MD0
                    MOV     R6,MDU_MD1
                    MOV     R5,MDU_MD2
                    MOV     R4,MDU_MD3
    RETURN:         RET
    

    Note that this code is not tested, you should verify (using the datasheet) that it is working with the MDU of the XC878.

Children
No data