⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmplc56k.h

📁 美国Delta Tau公司PMAC多轴运动控制卡的VC++示例程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
        File: cmplc56k.h

        PMAC Compiled PLC Motorola DSP 56000 defines

        Author(s):      Ed Lay

        08/03/93      EBL     Created

        Change log:

          Date       Rev     Who         Description
        ---------    -----   -----   -----------------------------------------
        01/11/4              EBL     Changes for windows DLL
        02/09/4              EBL     Changes for integer math & size of 56k used
        03/08/5              EBL     ADD LADDER FUNCTION BLOCK CODE
        03/04/99             EBL     CHNG STRING CMD USE OF R2 TO R4 FOR TURBO
        06/01/99             EBL     CHNG PLCN & 0 BUFFER ADDRESSES
        10/12/99             EBL     CHNG ENDWCODE LENGTH

*/
//

//***************************************************************
//**  Instruction Defines **
//***************************************************************

#define JSR             0x0D0000
#define JSRL            0x0BF080
#define MOVItoN4        0x3C0000 // MOV IMMEDIATE SHORT TO REG 'N4'
#define MOVILtoN4       0x74F400 // MOV IMMEDIATE LONG  TO REG 'N4'
#define MOVA1toN4       0x219C00 // "MOVE A1,N4"
#define MOVA1toN5       0x219D00 // "MOVE A1,N5"
#define MOVItoR1        0x61F400 // MOV IMMEDIATE LONG  TO REG 'R1'
#define MOVItoR2        0x62F400 // MOVE #LONG_ADDR,R2
#define MOVEAtoXR4      0x565C00 // MOVE A,X:(R4)+
#define MOVER4toXSM     0x640000 // MOVE R4,X:ADDR short + ADDR << 8
#define MOVER4toYSM     0x6C0000 // MOVE R4,Y:ADDR short + ADDR << 8
#define MOVEYLMtoR4     0x6CF000 // MOVE Y:$2000,R4
#define MOVItoR4        0x64F400 // MOV IMMEDIATE LONG  TO REG 'R4'
#define MOVIStoR4       0x340000 // MOV IMMEDIATE SHORT TO REG 'R4'
#define MOVItoB0        0x51F400 // MOV IMMEDIATE LONG  TO REG 'B0'
#define MOVItoB1        0x55F400 // MOV IMMEDIATE LONG  TO REG 'B1'
#define MOVIStoB0       0x290000 // MOV IMMEDIATE SHORT TO REG 'B0'#=MID 8 bit
#define MOVIStoB1       0x2D0000 // MOV IMMEDIATE SHORT TO REG 'B1'
#define MOVIStoB        0x2F0000 // MOV IMMEDIATE SHORT TO REG 'B' #=MID 8 bit
#define MOVILtoB        0x57F400 // MOV IMMEDIATE LONG TO REG 'B'
#define MOVItoR5        0x65F400 // MOV IMMEDIATE LONG  TO REG 'R5'
#define MOVEMR4toP      0x077094 // MOVEM R4,P:$ADDR
#define MOVEMPtoR4      0x07F094 // MOVEM P:$ADDR,R4
                                 //
                                 //      56K code for ADDRESS command
                                 //
#define MOVEMPtoX0      0x07F084 // MOVEM P:$ADDR,X0
#define MOVEMPtoX1      0x07F085 // MOVEM P:$ADDR,X1
#define MOVEMPtoA       0x07F08E // MOVEM P:$ADDR,A
#define CLRA            0x200013 // CLR  A
#define CLRB            0x20001B // CLR  B
#define MOVIStoA        0x2E0000 // MOV IMMEDIATE SHORT TO REG 'A'
#define MOVILtoA        0x56F400 // MOV IMMEDIATE LONG TO REG 'A'
#define MOVIStoA1       0x2C0000 // MOVE IMMEDIATE SHORT TO REG 'A1'
#define MOVIStoA0       0x280000 // MOVE IMMEDIATE SHORT TO REG 'A0'
#define MOVILtoA0       0x50F400 // MOV IMMEDIATE LONG TO REG 'A0'
#define NOTAISX1        0x250017 // NOT A #SDATA,X1
#define NOTAXADRtoY1    0x47F017 // NOT A X:#ADDR,Y1
#define ANDX0A          0x200046 // AND X0,A
#define ORX1A           0x200062 // OR  X1,A
#define MOVEMA1toP      0x07708C // MOVEM A1,P:#$ADDR
#define ANDILA          0x0140C6 // AND #$LONG,A
#define ANDISA          0x014086 // AND #$SHORT,A // data << 8
#define ORILA           0x0140C2 // OR #$LONG,A
#define MOVECSRtoY0     0x0446B9 // MOVEC   SR,Y0
#define MOVECY0toSR     0x04C6B9 // MOVEC   Y0,SR
#define ORIintrBLK      0x0003F8 // ORI #%00000011,MR
                                 //
                                 //      56K code for CMD ^ command
                                 //
#define MOVA1XR3        0x545B00 // MOVE  A1,X:(R3)+
                                 //
                                 //      56K code for String commands SEND, SENDP, SENDS, CMD
                                 //
#define MOVEMR4toP      0x077094 // MOVEM R4,P:$ADDR
#define MOVEYMtoA       0x5EF000 // MOVE Y:$ADDR,A ADDR = CMD_STACK
#define MOVEYSMtoA      0x5E8000 // MOVE Y:$SADDR,A + $SADDR << 8
#define TSTAItoX1       0x45F403 // TST A        #ADDRofSTRING,X1
#define TSTAItoR1       0x61F403 // TST A        #ADDRofSTRING,R1
#define MOVEMR1toA      0x07D98E // MOVEM   P:(R1)+,A
#define ADDX1AItoX0     0x24FF60 // ADD X1,A     #$FF,X0
#define ANDX0toB        0x20004E // AND X0,B
#define ADDY1toAB0toB   0x212F70 // ADD Y1,A     B0,B
#define MOVEA1toYM      0x5C7000 // MOVE A1,Y:$CMD_STACK
#define CLRB_R5toR4     0x22B41B // CLR B        R5,R4
#define MOVER4toR5      0x229500 // MOVE         R4,R5
#define MOVEMPtoB1      0x07F08D // MOVEM P:$C.S ADDR,B1
#define MOVEMPtoB       0x07F08F // MOVEM P:$C.S ADDR,B
#define MOVEYR5toR5     0x6DE500 // MOVE Y:(R5),R5
#define MOVEYR5toR1     0x69E500 // MOVE Y:(R5),R1
#define MOVXP_BASEtoR5  0x65A400 // MOVE X:P_BASE,R5
#define MOVXP_BASEtoR4  0x64A400 // MOVE X:P_BASE,R4
                                 //
                                 //      56K code for Q Write
                                 //
#define MOVEMPRtoR5     0x07ED95 // MOVEM P:(R5+N5),R5
#define MOVItoN5        0x3D0000 // MOVE #QNUM,N5 ; where QNUM < 256
#define MOVILtoN5       0x75F400 // MOVE #QNUM,N5 ; LONG MOVE
#define MOVEILtoN5      0x75F400 // MOVE #QNUM,N5 ; LONG MOVE
#define MOVEILtoM5      0x05F425 // MOVE #$3FF,M5
#define MOVEAtoR5N5     0x486D00 // MOVE A,L:(R5+N5)
#define MOVEAtoR4N4     0x486C00 // MOVE A,L:(R4+N4)
#define MOVEAtoR4       0x486400 // MOVE A,L:(R4)
#define MOVEA1toXR4N4   0x546C00 // MOVE A1,X:(R4+N4)
#define MOVEA1toXR4     0x546400 // MOVE A1,X:(R4)
#define MOVEM4toM5      0x0465A4 // MOVE M4,M5
                                 //
                                 //      56K code for Q Read
                                 //
#define MOVELR5N5toA    0x48ED00 // MOVE L:(R5+N5),A
#define MOVELR5N5toX    0x42ED00 // MOVE L:(R5+N5),X
#define MOVELR4N4toA    0x48EC00 // MOVE L:(R4+N4),A
#define MOVELR4N4toX    0x42EC00 // MOVE L:(R4+N4),X
#define MOVELR4toA      0x48E400 // MOVE L:(R4),A
#define MOVELR4toX      0x42E400 // MOVE L:(R4),X
#define MOVELR5toX      0x42E500 // MOVE L:(R5),X
#define MOVEXR4N4toA    0x56EC00 // MOVE X:(R4+N4),A
#define MOVEXR4N4toX1   0x45EC00 // MOVE X:(R4+N4),X1
#define MOVEXR4toA      0x56E400 // MOVE X:(R4),A
#define MOVEXR4toX1     0x45E400 // MOVE X:(R4),X1
                                 //
                                 //      Lnn L-Variable code
                                 //
#define NOTA            0x200017 // NOT  A ; for "=" compare need the NOT
#define NOTA_AtoB       0x21CF17 // NOT  A  A,B
#define NOTB            0x20001F // NOT  B
#define MOV0toA0        0x280000 // MOVE    #0,A0   ; CLR LSB OF A REG
#define NEGA            0x200036 // NEG  A
#define ABSA            0x200026 // ABS  A
#define NORMR5A         0x01DD15 // NORM R5,A
#define ANDX1A          0x200066 // AND  X1,A
#define ADDX1A          0x200060 // ADD  X1,A
#define EORX1A          0x200063 // EOR  X1,A also used on compare
#define SUBX1A          0x200064 // SUB  X1,A
#define ANDY1A          0x200076 // AND  Y1,A
#define ANDY1AY1toB     0x20EF76 // AND  Y1,A   Y1,B
#define ANDY1B          0x20007E // AND  Y1,B
#define EORY1B          0x20007B // EOR  Y1,B
#define EORY1A          0x200073 // EOR  Y1,A
#define ORY1B           0x20007A // OR   Y1,B
#define ORY1AB0toB      0x212F72 // OR   Y1,A   B0,B
#define ADDBtoA         0x200010 // ADD  B,A
#define MOVXADRtoX0     0x44F000 // MOVE X:$ADDR,X0
#define MOVXADRtoX1     0x45F000 // MOVE X:$ADDR,X1
#define MOVXADRtoY1     0x47F000 // MOVE X:$ADDR,Y1
#define MOVXADRtoA      0x56F000 // MOVE X:$ADDR,A
#define MOVXADRtoB      0x57F000 // MOVE X:$ADDR,B
#define MOVYADRtoR1     0x69F000 // MOVE Y:$ADDR,R1
#define MOVXSADRtoA     0x568000 // MOVE X:$SADDR,A  + SADDR << 8
#define MOVILtoY1       0x47F400 // MOV IMMEDIATE LONG TO REG 'Y1'
#define MOVItoY1        0x270000 // MOV IMMEDIATE SHORT TO REG 'Y1'
#define MOVEB0toX0      0x212400 // MOVE    B0,X0
#define TFRX1AB0toX0    0x212461 // TFR X1,A    B0,X0
#define MOVEA1toX0      0x218400 // MOVE    A1,X0
#define MOVEX0toA       0x208E00 // MOVE    X0,A
#define TFRX0toAtoX1    0x218541 // TFR     X0,A  A1,X1  
#define MOVEB1toA       0x21AE00 // MOVE    B1,A
#define MOVEB1toX1      0x21A500 // MOVE    B1,X1
#define MPYX0Y1AtoX1    0x2185C0 // MPY     X0,Y1,A   A1,X1
#define MPYX0Y1BIStoY1  0x2700C8 // MPY     X0,Y1,B   #<,Y1
#define MPYX0Y1BILtoY1  0x47F4C8 // MPY     X0,Y1,B   #>,Y1
#define MPYX0Y1A        0x2000C0 // MPY     X0,Y1,A
#define MPYX0Y1B        0x2000C8 // MPY     X0,Y1,B
#define MOVEA1toY1      0x218700 // MOVE    A1,Y1
#define MPYX1Y1A        0x2000F0 // MPY     X1,Y1,A
#define ASRA            0x200022 // ASR     A
#define ASLInA          0x0C1D00 // ASL     #n,A,A  + n << 1
#define ASRInA          0x0C1C00 // ASR     #n,A,A  + n << 1
#define ASRInBtoB       0x0C1C81 // ASR     #n,B,B + (n << 1)
#define MOVEA0toA       0x210E00 // MOVE    A0,A  SIGN EXTEND
#define MOVEA1toA       0x218E00 // MOVE    A1,A  SIGN EXTEND
#define MOVEB1toX1      0x21A500 // MOVE    B1,X1
#define MOVEA1toB       0x218F00 // MOVE    A1,B
#define LRSA            0x200023 // LSR     A
#define LSRInA          0x0C1EC0 // LSR     #n,A  + n << 1
#define LSRInB          0x0C1EC1 // LSR     #n,B  + n << 1
#define CLRAA1toX1      0x218513 // CLR     A  A1,X1
#define CLRAA1toX0      0x218413 // CLR     A  A1,X0
#define MOVA1toX1       0x218500 // MOVE    A1,X1 ; MOVE CURRENT A1 to X1
#define MOV1toA1        0x2C0100 // MOVE    #1,A1     ; LOAD CONSTANT 1
#define MOVEA1toXM      0x547000 // MOVE    A1,X:$MEM_ADDR
#define MOVEA1toSXM     0x540000 // MOVE    A1,X:$MEM_ADDR + SHORT MEM << 8
#define MOVEA1toSYM     0x5C0000 // MOVE    A1,Y:$MEM_ADDR + SHORT MEM << 8
#define BCLRXMEM        0x0A7000 // BCLR    #0,X:$D000
                                 // 0x0A7017          BCLR    #23,X:$D000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -