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

📄 easyweb.lst

📁 msp430 cs8900a msp430 servermsp430 servermsp430 servermsp430 servermsp430 server
💻 LST
📖 第 1 页 / 共 4 页
字号:
     59            0x068F,
     60            0x0695,
     61            0x069B,
     62            0x06A0,
     63            0x06A6,                                        // 15C
     64            0x06AC,
     65            0x06B2,
     66            0x06B8,
     67            0x06BD,
     68            0x06C3,                                        // 20C
     69            0x06C9,
     70            0x06CF,
     71            0x06D5,
     72            0x06DB,
     73            0x06E0,                                        // 25C
     74            0x06E6,
     75            0x06EC,
     76            0x06F2,
     77            0x06F8,
     78            0x06FD,                                        // 30C
     79            0x0703,
     80            0x0709,
     81            0x070F,
     82            0x0715,
     83            0x071B,                                        // 35C
     84            0x0720,
     85            0x0726,
     86            0x072C,
     87            0x0732,
     88            0x0738,                                        // 40C
     89            0x073D,
     90            0x0743,
     91            0x0749,
     92            0x074F,
     93            0x0755,                                        // 45C
     94            0x0FFF                                         // Too high
     95          };
     96          //------------------------------------------------------------------------------
     97          // Local function prototypes
     98          //------------------------------------------------------------------------------
     99          static void InitOsc(void);
    100          static void InitPorts(void);
    101          static void InitADC12(void);
    102          static void HTTPServer(void);
    103          static void InsertDynamicValues(void);
    104          static unsigned int GetAD7Val(void);
    105          static unsigned int GetTempVal(void);
    106          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    107          void main(void)
   \                     main:
    108          {
    109            InitOsc();
   \   000000   B012....     CALL    #InitOsc
    110            InitPorts();
   \   000004   B012....     CALL    #InitPorts
    111            InitADC12();
   \   000008   B012....     CALL    #InitADC12
    112          
    113            TCPLowLevelInit();
   \   00000C   B012....     CALL    #TCPLowLevelInit
    114          
    115            __enable_interrupt();                          // enable interrupts
   \   000010   32D2         EINT
    116          
    117          /*
    118            *(unsigned char *)RemoteIP = 24;               // uncomment those lines to get the
    119            *((unsigned char *)RemoteIP + 1) = 8;          // quote of the day from a real
    120            *((unsigned char *)RemoteIP + 2) = 69;         // internet server! (gateway must be
    121            *((unsigned char *)RemoteIP + 3) = 7;          // set to your LAN-router)
    122          
    123            TCPLocalPort = 2025;
    124            TCPRemotePort = TCP_PORT_QOTD;
    125          
    126            TCPActiveOpen();
    127          
    128            while (SocketStatus & SOCK_ACTIVE)             // read the quote from memory
    129            {                                              // by using the hardware-debugger
    130              DoNetworkStuff();
    131            }
    132          */
    133          
    134            HTTPStatus = 0;                                // clear HTTP-server's flag register
   \   000012   C243....     MOV.B   #0x0, &HTTPStatus
    135          
    136            TCPLocalPort = TCP_PORT_HTTP;                  // set port we want to listen to
   \   000016   B2405000.... MOV.W   #0x50, &TCPLocalPort
    137            
    138            while (1)                                      // repeat forever
    139            {
    140              if (!(SocketStatus & SOCK_ACTIVE)) TCPPassiveOpen();   // listen for incoming TCP-connection
   \                     ??main_0:
   \   00001C   D2B3....     BIT.B   #0x1, &SocketStatus
   \   000020   022C         JC      ??main_1
   \   000022   B012....     CALL    #TCPPassiveOpen
    141              //DoNetworkStuff();                                      // handle network and easyWEB-stack
    142                                                                     // events
    143              HTTPServer();
   \                     ??main_1:
   \   000026   B012....     CALL    #HTTPServer
   \   00002A   F83F         JMP     ??main_0
    144            }
    145          }
    146          //------------------------------------------------------------------------------
    147          // This function implements a very simple dynamic HTTP-server.
    148          // It waits until connected, then sends a HTTP-header and the
    149          // HTML-code stored in memory. Before sending, it replaces
    150          // some special strings with dynamic values.
    151          // NOTE: For strings crossing page boundaries, replacing will
    152          // not work. In this case, simply add some extra lines
    153          // (e.g. CR and LFs) to the HTML-code.
    154          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    155          static void HTTPServer(void)
   \                     HTTPServer:
    156          {
    157            if (SocketStatus & SOCK_CONNECTED)             // check if somebody has connected to our TCP
   \   000000   E2B3....     BIT.B   #0x2, &SocketStatus
   \   000004   6128         JNC     ??HTTPServer_0
    158            {
    159              if (SocketStatus & SOCK_DATA_AVAILABLE)      // check if remote TCP sent data
   \   000006   E2B2....     BIT.B   #0x4, &SocketStatus
   \   00000A   0228         JNC     ??HTTPServer_1
    160                TCPReleaseRxBuffer();                      // and throw it away
   \   00000C   B012....     CALL    #TCPReleaseRxBuffer
    161          
    162              if (SocketStatus & SOCK_TX_BUF_RELEASED)     // check if buffer is free for TX
   \                     ??HTTPServer_1:
   \   000010   F2B2....     BIT.B   #0x8, &SocketStatus
   \   000014   5B28         JNC     ??HTTPServer_2
    163              {
    164                if (!(HTTPStatus & HTTP_SEND_PAGE))        // init byte-counter and pointer to webside
   \   000016   D2B3....     BIT.B   #0x1, &HTTPStatus
   \   00001A   062C         JC      ??HTTPServer_3
    165                {                                          // if called the 1st time
    166                  HTTPBytesToSend = sizeof(WebSide) - 1;   // get HTML length, ignore trailing zero
   \   00001C   B2409205.... MOV.W   #0x592, &HTTPBytesToSend
    167                  PWebSide = (unsigned char *)WebSide;     // pointer to HTML-code
   \   000022   B240........ MOV.W   #WebSide, &PWebSide
    168                }
    169          
    170                if (HTTPBytesToSend > MAX_TCP_TX_DATA_SIZE)     // transmit a segment of MAX_SIZE
   \                     ??HTTPServer_3:
   \   000028   B2900103.... CMP.W   #0x301, &HTTPBytesToSend
   \   00002E   3228         JNC     ??HTTPServer_4
    171                {
    172                  if (!(HTTPStatus & HTTP_SEND_PAGE))           // 1st time, include HTTP-header
   \   000030   D2B3....     BIT.B   #0x1, &HTTPStatus
   \   000034   182C         JC      ??HTTPServer_5
    173                  {
    174                    memcpy(TCP_TX_BUF, GetResponse, sizeof(GetResponse) - 1);
   \   000036   30122C00     PUSH.W  #0x2c
   \   00003A   3E40....     MOV.W   #GetResponse, R14
   \   00003E   3C40....     MOV.W   #TxFrame1Mem + 54, R12
   \   000042   B012....     CALL    #memcpy
    175                    memcpy(TCP_TX_BUF + sizeof(GetResponse) - 1, PWebSide,
    176                      MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1);
   \   000046   3012D402     PUSH.W  #0x2d4
   \   00004A   1E42....     MOV.W   &PWebSide, R14
   \   00004E   3C40....     MOV.W   #TxFrame1Mem + 98, R12
   \   000052   B012....     CALL    #memcpy
    177                    HTTPBytesToSend -= MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1;
   \   000056   B2502CFD.... ADD.W   #0xfd2c, &HTTPBytesToSend
    178                    PWebSide += MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1;
   \   00005C   B250D402.... ADD.W   #0x2d4, &PWebSide
   \   000062   2152         ADD.W   #0x4, SP
   \   000064   0F3C         JMP     ??HTTPServer_6
    179                  }
    180                  else
    181                  {
    182                    memcpy(TCP_TX_BUF, PWebSide, MAX_TCP_TX_DATA_SIZE);
   \                     ??HTTPServer_5:
   \   000066   30120003     PUSH.W  #0x300
   \   00006A   1E42....     MOV.W   &PWebSide, R14
   \   00006E   3C40....     MOV.W   #TxFrame1Mem + 54, R12
   \   000072   B012....     CALL    #memcpy
    183                    HTTPBytesToSend -= MAX_TCP_TX_DATA_SIZE;
   \   000076   B25000FD.... ADD.W   #0xfd00, &HTTPBytesToSend
    184                    PWebSide += MAX_TCP_TX_DATA_SIZE;
   \   00007C   B2500003.... ADD.W   #0x300, &PWebSide
   \   000082   2153         ADD.W   #0x2, SP
    185                  }
    186                    
    187                  TCPTxDataCount = MAX_TCP_TX_DATA_SIZE;   // bytes to xfer
   \                     ??HTTPServer_6:
   \   000084   B2400003.... MOV.W   #0x300, &TCPTxDataCount
    188                  InsertDynamicValues();                   // exchange some strings...
   \   00008A   B012....     CALL    #InsertDynamicValues
    189                  TCPTransmitTxBuffer();                   // xfer buffer
   \   00008E   B012....     CALL    #TCPTransmitTxBuffer
   \   000092   173C         JMP     ??HTTPServer_7
    190                }
    191                else if (HTTPBytesToSend)                  // transmit leftover bytes
   \                     ??HTTPServer_4:
   \   000094   8293....     CMP.W   #0x0, &HTTPBytesToSend
   \   000098   1424         JEQ     ??HTTPServer_7
    192                {
    193                  memcpy(TCP_TX_BUF, PWebSide, HTTPBytesToSend);
   \   00009A   1212....     PUSH.W  &HTTPBytesToSend
   \   00009E   1E42....     MOV.W   &PWebSide, R14
   \   0000A2   3C40....     MOV.W   #TxFrame1Mem + 54, R12
   \   0000A6   B012....     CALL    #memcpy
    194                  TCPTxDataCount = HTTPBytesToSend;        // bytes to xfer
   \   0000AA   9242........ MOV.W   &HTTPBytesToSend, &TCPTxDataCount
    195                  InsertDynamicValues();                   // exchange some strings...
   \   0000B0   B012....     CALL    #InsertDynamicValues
    196                  TCPTransmitTxBuffer();                   // send last segment
   \   0000B4   B012....     CALL    #TCPTransmitTxBuffer
    197                  TCPClose();                              // and close connection
   \   0000B8   B012....     CALL    #TCPClose
    198                  HTTPBytesToSend = 0;                     // all data sent
   \   0000BC   8243....     MOV.W   #0x0, &HTTPBytesToSend
   \   0000C0   2153         ADD.W   #0x2, SP
    199                }
    200          
    201                HTTPStatus |= HTTP_SEND_PAGE;              // ok, 1st loop executed
   \                     ??HTTPServer_7:
   \   0000C2   D2D3....     BIS.B   #0x1, &HTTPStatus
   \   0000C6   3041         RET
    202              }
    203            }
    204            else
    205              HTTPStatus &= ~HTTP_SEND_PAGE;               // reset help-flag if not connected
   \                     ??HTTPServer_0:
   \   0000C8   D2C3....     BIC.B   #0x1, &HTTPStatus
    206          }
   \                     ??HTTPServer_2:
   \   0000CC   3041         RET
    207          //------------------------------------------------------------------------------
    208          // samples and returns the AD-converter value of channel 7
    209          // (associated with Port P6.7)
    210          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    211          static unsigned int GetAD7Val(void)
   \                     GetAD7Val:
    212          {
    213            ADC12MCTL0 = SREF_1 + INCH_7;                  // Select channel 7, Vref+
   \   000000   F24017008000 MOV.B   #0x17, &0x80
    214            
    215            ADC12CTL0 |= ENC;                              // enable conversion
   \   000006   A2D3A001     BIS.W   #0x2, &0x1a0
    216            ADC12CTL0 |= ADC12SC;                          // sample & convert
   \   00000A   92D3A001     BIS.W   #0x1, &0x1a0
    217            
    218            while (ADC12CTL0 & ADC12SC);                   // wait until conversion is complete
   \                     ??GetAD7Val_0:
   \   00000E   92B3A001     BIT.W   #0x1, &0x1a0
   \   000012   FD2F         JC      ??GetAD7Val_0
    219            
    220            ADC12CTL0 &= ~ENC;                             // disable conversion
   \   000014   A2C3A001     BIC.W   #0x2, &0x1a0
    221          
    222            return ADC12MEM0 >> 5;                         // Scale value
   \   000018   1C424001     MOV.W   &0x140, R12
   \   00001C   12C3         CLRC
   \   00001E   0C10         RRC.W   R12
   \   000020   0C11         RRA.W   R12
   \   000022   0C11         RRA.W   R12
   \   000024   0C11         RRA.W   R12
   \   000026   0C11         RRA.W   R12
   \   000028   3041         RET
    223          }
    224          //------------------------------------------------------------------------------
    225          // samples and returns AD-converter value of channel 10
    226          // (MSP430 internal temperature reference diode)
    227          //------------------------------------------------------------------------------

   \                                 In segment CODE, align 2
    228          static unsigned int GetTempVal(void)
   \                     GetTempVal:
    229          {
    230            unsigned int i;
    231            unsigned int ADCResult;
    232          
    233            ADC12MCTL0 = SREF_1 + INCH_10;                 // Select channel A10, Vref+
   \   000000   F2401A008000 MOV.B   #0x1a, &0x80
    234          
    235            ADC12CTL0 |= ENC;                              // enable conversion
   \   000006   A2D3A001     BIS.W   #0x2, &0x1a0
    236            ADC12CTL0 |= ADC12SC;                          // sample & convert
   \   00000A   92D3A001     BIS.W   #0x1, &0x1a0
    237            
    238            while (ADC12CTL0 & ADC12SC);                   // wait until conversion is complete
   \                     ??GetTempVal_0:
   \   00000E   92B3A001     BIT.W   #0x1, &0x1a0
   \   000012   FD2F         JC      ??GetTempVal_0
    239            

⌨️ 快捷键说明

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