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

📄 davinci_evm.lst

📁 msp430板子红外驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000012   7FF00F00     AND.B   #0xf, R15
   \   000016   C14F0100     MOV.B   R15, 0x1(SP)
    425            str[2] = 0;
   \   00001A   C1430200     MOV.B   #0x0, 0x2(SP)
    426          
    427            for(x = 0; x < 2; x++)
   \   00001E   4D43         MOV.B   #0x0, R13
   \                     ??txByte_0:
   \   000020   6D93         CMP.B   #0x2, R13
   \   000022   192C         JC      ??txByte_1
    428            {
    429              if( str[x] > 9 )
   \   000024   4F4D         MOV.B   R13, R15
   \   000026   3FF0FF00     AND.W   #0xff, R15
   \   00002A   0F51         ADD.W   SP, R15
   \   00002C   FF900A000000 CMP.B   #0xa, 0x0(R15)
   \   000032   0828         JNC     ??txByte_2
    430              {
    431                str[x] += 0x37;
   \   000034   4F4D         MOV.B   R13, R15
   \   000036   3FF0FF00     AND.W   #0xff, R15
   \   00003A   0F51         ADD.W   SP, R15
   \   00003C   FF5037000000 ADD.B   #0x37, 0x0(R15)
   \   000042   073C         JMP     ??txByte_3
    432              }
    433              else
    434              {
    435                str[x] += 0x30;
   \                     ??txByte_2:
   \   000044   4F4D         MOV.B   R13, R15
   \   000046   3FF0FF00     AND.W   #0xff, R15
   \   00004A   0F51         ADD.W   SP, R15
   \   00004C   FF5030000000 ADD.B   #0x30, 0x0(R15)
    436              }
    437            }
   \                     ??txByte_3:
   \   000052   5D53         ADD.B   #0x1, R13
   \   000054   E53F         JMP     ??txByte_0
    438          
    439            txStr(str);
   \                     ??txByte_1:
   \   000056   0C41         MOV.W   SP, R12
   \   000058   B012....     CALL    #txStr
    440          }
   \   00005C   2152         ADD.W   #0x4, SP
   \   00005E   3041         RET
    441          
    442          
    443          //
    444          // UART Function - transmit word data as ASCII characters
    445          //

   \                                 In segment CODE, align 2
    446          void txWord(unsigned int word)
   \                     txWord:
    447          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0A4C         MOV.W   R12, R10
    448            txByte(word >> 8);
   \   000004   0C4A         MOV.W   R10, R12
   \   000006   8C10         SWPB    R12
   \   000008   3CF0FF00     AND.W   #0xff, R12
   \   00000C   B012....     CALL    #txByte
    449            txByte(word & 0x00ff);
   \   000010   4C4A         MOV.B   R10, R12
   \   000012   B012....     CALL    #txByte
    450          }
   \   000016   3A41         POP.W   R10
   \   000018   3041         RET
    451          
    452          #endif /* FET_UART_DEBUG */
    453          
    454          
    455          //
    456          // Main Program Loop
    457          //

   \                                 In segment CODE, align 2
    458          void main(void)
   \                     main:
    459          {
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0812         PUSH.W  R8
    460            unsigned char P2State;
    461            unsigned char P3State;
    462            unsigned char stateChange;
    463          
    464            // Initialize System
    465            sysInit();
   \   000006   B012....     CALL    #sysInit
    466          
    467          #ifdef FET_UART_DEBUG
    468            txStr("\x1b[2JDaVinci ");
   \   00000A   3C40....     MOV.W   #`?<Constant "\\033[2JDaVinci ">`, R12
   \   00000E   B012....     CALL    #txStr
    469          #endif
    470          
    471            prevP2State = (P2IN & P2_MASK);           // Get current P2 state
   \   000012   5E422800     MOV.B   &0x28, R14
   \   000016   7EF01E00     AND.B   #0x1e, R14
   \   00001A   C24E....     MOV.B   R14, &prevP2State
    472            prevP3State = (P3IN & P3_MASK);           // Get current P3 state
   \   00001E   5E421800     MOV.B   &0x18, R14
   \   000022   7EF0C600     AND.B   #0xc6, R14
   \   000026   C24E....     MOV.B   R14, &prevP3State
    473          
    474            // Main Program Loop
    475            for(;;)
    476            {
    477              if( !Event )
   \                     ??main_0:
   \   00002A   C293....     CMP.B   #0x0, &Event
   \   00002E   0320         JNE     ??main_1
    478              {
    479                // Enter low-power mode 0 with interrupts enabled
    480                 _BIS_SR(LPM0_bits + GIE);
   \   000030   32D01800     BIS.W   #0x18, SR
    481          
    482                _NOP();
   \   000034   0343         NOP
    483              }
    484          
    485              if( Event & EVENT_TIMEOUT )             // Check for timeout event
   \                     ??main_1:
   \   000036   D2B3....     BIT.B   #0x1, &Event
   \   00003A   0E28         JNC     ??main_2
    486              {
    487                Event &= ~EVENT_TIMEOUT;              // Clear event flag
   \   00003C   D2C3....     BIC.B   #0x1, &Event
    488          
    489          // MW     P1OUT &= ~0x02;                       // Set P1.1 to low
    490                P1OUT |= 0x02;                        // Set P1.1 high (deassert DaVinci interrupt)
   \   000040   E2D32100     BIS.B   #0x2, &0x21
    491                i2cIndex = 0;                         // Reset buffer index
   \   000044   C243....     MOV.B   #0x0, &i2cIndex
    492                resetSWI2C();                         // Reset I2C
   \   000048   B012....     CALL    #resetSWI2C
    493                resetIR();                            // Reset IR
   \   00004C   B012....     CALL    #resetIR
    494                IE2 |= URXIE0;                        // Enable USART0 RX interrupt
   \   000050   D2D30100     BIS.B   #0x1, &0x1
    495                IE1 |= WDTIE;                         // Enable WDT interrupt
   \   000054   D2D30000     BIS.B   #0x1, &0x0
    496              }
    497          
    498              if( Event & EVENT_RTC )                 // Check for RTC event
   \                     ??main_2:
   \   000058   F2B2....     BIT.B   #0x8, &Event
   \   00005C   0428         JNC     ??main_3
    499              {
    500                Event &= ~EVENT_RTC;                  // Clear event flag
   \   00005E   F2C2....     BIC.B   #0x8, &Event
    501                incrementSeconds();                   // Increment seconds
   \   000062   B012....     CALL    #incrementSeconds
    502              }
    503          
    504              if( Event & EVENT_CHK_PINS )            // Check I/O pin state event
   \                     ??main_3:
   \   000066   E2B2....     BIT.B   #0x4, &Event
   \   00006A   2528         JNC     ??main_4
    505              {
    506                Event &= ~EVENT_CHK_PINS;             // Clear event flag
   \   00006C   E2C2....     BIC.B   #0x4, &Event
    507                stateChange = 0;                      // Clear flag
   \   000070   4B43         MOV.B   #0x0, R11
    508          
    509                P2State = (P2IN & P2_MASK);           // Read P2
   \   000072   5E422800     MOV.B   &0x28, R14
   \   000076   7EF01E00     AND.B   #0x1e, R14
   \   00007A   4A4E         MOV.B   R14, R10
    510                P3State = (P3IN & P3_MASK);           // Read P3
   \   00007C   5E421800     MOV.B   &0x18, R14
   \   000080   7EF0C600     AND.B   #0xc6, R14
   \   000084   484E         MOV.B   R14, R8
    511          
    512                if( P2State != prevP2State )          // Check for P2 input state change
   \   000086   5A92....     CMP.B   &prevP2State, R10
   \   00008A   0124         JEQ     ??main_5
    513                {
    514                  stateChange = 1;                    // Set state change flag
   \   00008C   5B43         MOV.B   #0x1, R11
    515                }
    516          
    517                if( P3State != prevP3State )         // Check for P3 input state change
   \                     ??main_5:
   \   00008E   5892....     CMP.B   &prevP3State, R8
   \   000092   0124         JEQ     ??main_6
    518                {
    519                  stateChange = 1;                    // Set state change flag
   \   000094   5B43         MOV.B   #0x1, R11
    520                }
    521          
    522                prevP2State = (P2State & P2_MASK);    // Save current P2 input state
   \                     ??main_6:
   \   000096   4E4A         MOV.B   R10, R14
   \   000098   7EF01E00     AND.B   #0x1e, R14
   \   00009C   C24E....     MOV.B   R14, &prevP2State
    523                prevP3State = (P3State & P3_MASK);    // Save current P3 input state
   \   0000A0   4E48         MOV.B   R8, R14
   \   0000A2   7EF0C600     AND.B   #0xc6, R14
   \   0000A6   C24E....     MOV.B   R14, &prevP3State
    524          
    525                if( stateChange )
   \   0000AA   4B93         CMP.B   #0x0, R11
   \   0000AC   0424         JEQ     ??main_4
    526                {
    527                  EventFlag = EVENT_STATE_CHG;        // Set event flag
   \   0000AE   D243....     MOV.B   #0x1, &EventFlag
    528                  interruptMaster();                  // Interrupt master I2C device
   \   0000B2   B012....     CALL    #interruptMaster
    529                }
    530              }
    531          
    532              if( Event & EVENT_IR )                  // Check for IR event flag
   \                     ??main_4:
   \   0000B6   E2B3....     BIT.B   #0x2, &Event
   \   0000BA   B72B         JNC     ??main_0
    533              {
    534                Event &= ~EVENT_IR;                   // Clear event flag
   \   0000BC   E2C3....     BIC.B   #0x2, &Event
    535          
    536          #ifdef IR_LED_DEBUG
    537                P2OUT ^= 0x18;                        // Toggle LEDs
    538          #endif
    539          
    540          #ifdef FET_UART_DEBUG
    541                txStr("\r\n");
   \   0000C0   3C40....     MOV.W   #`?<Constant "\\r\\n">`, R12
   \   0000C4   B012....     CALL    #txStr
    542                txStr("Raw: 0x");
   \   0000C8   3C40....     MOV.W   #`?<Constant "Raw: 0x">`, R12
   \   0000CC   B012....     CALL    #txStr
    543                txWord(IRData & 0x3FFF);
   \   0000D0   1C42....     MOV.W   &IRData, R12
   \   0000D4   3CF0FF3F     AND.W   #0x3fff, R12
   \   0000D8   B012....     CALL    #txWord
    544                txStr(", Addr: 0x");
   \   0000DC   3C40....     MOV.W   #`?<Constant ", Addr: 0x">`, R12
   \   0000E0   B012....     CALL    #txStr
    545                txWord((IRData & 0x07C0) >> 6);
   \   0000E4   1C42....     MOV.W   &IRData, R12
   \   0000E8   3CF0C007     AND.W   #0x7c0, R12
   \   0000EC   B012....     CALL    #?ShiftRight16u_6
   \   0000F0   B012....     CALL    #txWord
    546                txStr(", Data: 0x");
   \   0000F4   3C40....     MOV.W   #`?<Constant ", Data: 0x">`, R12
   \   0000F8   B012....     CALL    #txStr
    547                txWord(IRData & 0x003F);
   \   0000FC   1C42....     MOV.W   &IRData, R12
   \   000100   3CF03F00     AND.W   #0x3f, R12
   \   000104   B012....     CALL    #txWord
    548          #endif MW /* FET_UART_DEBUG */
    549          
    550                i2cIndex = 0;                         // Reset buffer index
   \   000108   C243....     MOV.B   #0x0, &i2cIndex
    551                resetSWI2C();                         // Reset I2C
   \   00010C   B012....     CALL    #resetSWI2C
    552                EventFlag = EVENT_IR_DATA;            // Set event flag
   \   000110   E243....     MOV.B   #0x2, &EventFlag
    553                interruptMaster();                    // Interrupt master I2C device
   \   000114   B012....     CALL    #interruptMaster
   \   000118   883F         JMP     ??main_0
    554              }
    555            }
    556          }
    557          
    558          
    559          //
    560          // UART0 RX Interrupt Service Routine
    561          //
    562          #pragma vector=UART0RX_VECTOR

   \                                 In segment CODE, align 2
    563          __interrupt void usart0_Rx_ISR(void)
   \                     usart0_Rx_ISR:
    564          {
   \   000000   0E12         PUSH.W  R14
    565            while( !(IFG2 & UTXIFG0) ){}              // Is USART0 TX buffer ready?
   \                     ??usart0_Rx_ISR_0:
   \   000002   E2B30300     BIT.B   #0x2, &0x3
   \   000006   FD2B         JNC     ??usart0_Rx_ISR_0
    566            TXBUF0 = RXBUF0 + 1;                      // Increment RXBUF0, copy to TXBUF0
   \   000008   5E427600     MOV.B   &0x76, R14
   \   00000C   5E53         ADD.B   #0x1, R14
   \   00000E   C24E7700     MOV.B   R14, &0x77

⌨️ 快捷键说明

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