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

📄 cs8900.lst

📁 msp430 cs8900a msp430 servermsp430 servermsp430 servermsp430 servermsp430 server
💻 LST
📖 第 1 页 / 共 3 页
字号:
    197            P3OUT &= ~IOR;                                 // IOR-signal low
   \   00002C   F2C040001900 BIC.B   #0x40, &0x19
    198            ReturnValue |= P5IN;                           // get low order byte from data bus
   \   000032   5E423000     MOV.B   &0x30, R14
   \   000036   3EF0FF00     AND.W   #0xff, R14
   \   00003A   0FDE         BIS.W   R14, R15
    199            P3OUT |= IOR;
   \   00003C   F2D040001900 BIS.B   #0x40, &0x19
    200            P5DIR = 0xff;                                  // data port to output
   \   000042   F2433200     MOV.B   #0xff, &0x32
    201            
    202            return ReturnValue;
   \   000046   0C4F         MOV.W   R15, R12
   \   000048   3041         RET
    203          }
    204          //------------------------------------------------------------------------------
    205          // copies bytes from frame port to MCU-memory
    206          // NOTES:     * MCU-memory MUST start at word-boundary
    207          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    208          void CopyFromFrame8900(void *Dest, unsigned int Size)
   \                     CopyFromFrame8900:
    209          {
    210            unsigned int *pDest = Dest;
    211          
    212            P5DIR = 0x00;                                  // data port to input
   \   000000   C2433200     MOV.B   #0x0, &0x32
   \   000004   233C         JMP     ??CopyFromFrame8900_1
    213          
    214            while (Size > 1)
    215            {
    216              P3OUT = IOR | IOW | RX_FRAME_PORT;           // access to RX_FRAME_PORT
   \                     ??CopyFromFrame8900_0:
   \   000006   F240C0001900 MOV.B   #0xc0, &0x19
    217              P3OUT &= ~IOR;                               // IOR-signal low
   \   00000C   F2C040001900 BIC.B   #0x40, &0x19
    218              *pDest = P5IN;                               // get 1st byte from data bus (low-byte)
   \   000012   5F423000     MOV.B   &0x30, R15
   \   000016   3FF0FF00     AND.W   #0xff, R15
   \   00001A   8C4F0000     MOV.W   R15, 0(R12)
    219              P3OUT = IOR | IOW | (RX_FRAME_PORT + 1);     // IOR high and put next address on bus
   \   00001E   F240C1001900 MOV.B   #0xc1, &0x19
    220              P3OUT &= ~IOR;                               // IOR-signal low
   \   000024   F2C040001900 BIC.B   #0x40, &0x19
    221              *pDest++ |= P5IN << 8;                       // get 2nd byte from data bus (high-byte)
   \   00002A   0D4C         MOV.W   R12, R13
   \   00002C   0C4D         MOV.W   R13, R12
   \   00002E   2C53         ADD.W   #0x2, R12
   \   000030   5F423000     MOV.B   &0x30, R15
   \   000034   3FF0FF00     AND.W   #0xff, R15
   \   000038   3FF0FF00     AND.W   #0xff, R15
   \   00003C   8F10         SWPB    R15
   \   00003E   8DDF0000     BIS.W   R15, 0(R13)
    222              P3OUT |= IOR;
   \   000042   F2D040001900 BIS.B   #0x40, &0x19
    223              Size -= 2;
   \   000048   3E50FEFF     ADD.W   #0xfffe, R14
    224            }
   \                     ??CopyFromFrame8900_1:
   \   00004C   2E93         CMP.W   #0x2, R14
   \   00004E   DB2F         JC      ??CopyFromFrame8900_0
    225            
    226            if (Size)                                      // check for leftover byte...
   \   000050   0E93         CMP.W   #0x0, R14
   \   000052   0C24         JEQ     ??CopyFromFrame8900_2
    227            {
    228              P3OUT = IOR | IOW | RX_FRAME_PORT;           // access to RX_FRAME_PORT
   \   000054   F240C0001900 MOV.B   #0xc0, &0x19
    229              P3OUT &= ~IOR;                               // IOR-signal low
   \   00005A   F2C040001900 BIC.B   #0x40, &0x19
    230              *(unsigned char *)pDest = P5IN;              // get byte from data bus
   \   000060   DC4230000000 MOV.B   &0x30, 0(R12)
    231              P3OUT |= IOR;                                // IOR high
   \   000066   F2D040001900 BIS.B   #0x40, &0x19
    232            }
    233          
    234            P5DIR = 0xff;                                  // data port to output
   \                     ??CopyFromFrame8900_2:
   \   00006C   F2433200     MOV.B   #0xff, &0x32
    235          }
   \   000070   3041         RET
    236          //------------------------------------------------------------------------------
    237          // does a dummy read on the CS8900A frame-I/O-port
    238          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    239          void DummyReadFrame8900(unsigned int Size)
   \                     DummyReadFrame8900:
    240          {
    241            P5DIR = 0x00;                                  // data port to input
   \   000000   C2433200     MOV.B   #0x0, &0x32
   \   000004   063C         JMP     ??DummyReadFrame8900_1
    242          
    243            while (Size--)
    244            {
    245              P3OUT = IOR | IOW | RX_FRAME_PORT;           // access to RX_FRAME_PORT
   \                     ??DummyReadFrame8900_0:
   \   000006   F240C0001900 MOV.B   #0xc0, &0x19
    246              P3OUT &= ~IOR;                               // IOR-signal low
   \   00000C   F2C040001900 BIC.B   #0x40, &0x19
    247            }
   \                     ??DummyReadFrame8900_1:
   \   000012   0F4C         MOV.W   R12, R15
   \   000014   0C4F         MOV.W   R15, R12
   \   000016   3C53         ADD.W   #0xffff, R12
   \   000018   0F93         CMP.W   #0x0, R15
   \   00001A   F523         JNE     ??DummyReadFrame8900_0
    248            
    249            P3OUT |= IOR;                                  // IOR high
   \   00001C   F2D040001900 BIS.B   #0x40, &0x19
    250            P5DIR = 0xff;                                  // data port to output
   \   000022   F2433200     MOV.B   #0xff, &0x32
    251          }
   \   000026   3041         RET
    252          //------------------------------------------------------------------------------
    253          // requests space in CS8900 on-chip memory for
    254          // storing an outgoing frame
    255          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    256          void RequestSend(unsigned int FrameSize)
   \                     RequestSend:
    257          {
   \   000000   0D4C         MOV.W   R12, R13
    258            Write8900(TX_CMD_PORT, TX_START_ALL_BYTES);
   \   000002   3E40C000     MOV.W   #0xc0, R14
   \   000006   6C42         MOV.B   #0x4, R12
   \   000008   B012....     CALL    #Write8900
    259            Write8900(TX_LEN_PORT, FrameSize);
   \   00000C   0E4D         MOV.W   R13, R14
   \   00000E   7C400600     MOV.B   #0x6, R12
   \   000012   3040....     BR      #Write8900
    260          }
    261          //------------------------------------------------------------------------------
    262          // check if CS8900 is ready to accept the
    263          // frame we want to send
    264          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    265          unsigned int Rdy4Tx(void)
   \                     Rdy4Tx:
    266          {
    267            Write8900(ADD_PORT, PP_BusST);
   \   000000   3E403801     MOV.W   #0x138, R14
   \   000004   7C400A00     MOV.B   #0xa, R12
   \   000008   B012....     CALL    #Write8900
    268            return Read8900(DATA_PORT) & READY_FOR_TX_NOW;
   \   00000C   7C400C00     MOV.B   #0xc, R12
   \   000010   B012....     CALL    #Read8900
   \   000014   3CF00001     AND.W   #0x100, R12
   \   000018   3041         RET
    269          }

   Maximum stack usage in bytes:

     Function           CSTACK
     --------           ------
     CopyFromFrame8900      2
     CopyToFrame8900        2
     DummyReadFrame8900     2
     Init8900               2
       -> DelayCycles       2
       -> DelayCycles       2
       -> Write8900         2
       -> Write8900         2
       -> Write8900         2
       -> Read8900          2
       -> Write8900         2
       -> Write8900         2
     Rdy4Tx                 2
       -> Write8900         2
       -> Read8900          2
     Read8900               2
     ReadFrame8900          2
     ReadFrameBE8900        2
     ReadHB1ST8900          2
     RequestSend            2
       -> Write8900         2
       -> Write8900         2
     Write8900              2
     WriteFrame8900         2


   Segment part sizes:

     Function/Label     Bytes
     --------------     -----
     P3OUT                 1
     P3DIR                 1
     P5IN                  1
     P5OUT                 1
     P5DIR                 1
     MyMAC                 6
     InitSeq              20
     Init8900            132
     Write8900            60
     WriteFrame8900       52
     CopyToFrame8900      90
     Read8900             74
     ReadFrame8900        64
     ReadFrameBE8900      64
     ReadHB1ST8900        74
     CopyFromFrame8900   114
     DummyReadFrame8900   40
     RequestSend          22
     Rdy4Tx               26

 
 812 bytes in segment CODE
   5 bytes in segment DATA16_AN
  26 bytes in segment DATA16_C
 
 812 bytes of CODE  memory
  26 bytes of CONST memory
   0 bytes of DATA  memory (+ 5 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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