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

📄 simulatei2c.s79

📁 用于监视I2C通信总线
💻 S79
📖 第 1 页 / 共 3 页
字号:
        CMP      R1,#+0
        BNE.N    ??data_convert_0
//  265   {
//  266     if((tempp_count1>=100)||(tempp1[tempp_count1-1]==0x200))//over 100 words or the last data is stop condition
        LDR      R4,[R0, #+4]
        LDR.N    R5,??DataTable20  ;; tempp1
        CMP      R4,#+100
        BCS.N    ??data_convert_1
        MOVS     R2,#+512
        ADDS     R1,R5,R4, LSL #+1
        SUBS     R1,R1,#+2
        LDRH     R1,[R1, #+0]
        CMP      R1,R2
        BNE.N    ??data_convert_2
//  267     {
//  268       tempp_count2=0;
??data_convert_1:
        STR      R6,[R0, #+8]
//  269       tempp_choise=1;//change the no
        MOVS     R1,#+1
        STRH     R1,[R0, #+0]
//  270       for(i=0;i<tempp_count1;i++)
        B.N      ??data_convert_3
//  271       {
//  272         if(tempp1[i]==0x100)//the data is a start condition signal
//  273         {
//  274           WINDOW_In('s');
//  275           WINDOW_In('\n');
//  276         }
//  277         else if(tempp1[i]==0x200)//the data is a stop condition signal
//  278         {
//  279           WINDOW_In('\n');
//  280           WINDOW_In('p');
//  281           WINDOW_In('\n');
//  282         }
//  283         else if(tempp1[i]==0x300)//the data is a ack signal
//  284         {
//  285           WINDOW_In('a');
//  286           WINDOW_In(' ');
//  287         }
//  288         else if(tempp1[i]==0x400)//the data is a nack signal
//  289         {
//  290           WINDOW_In('n');
//  291           WINDOW_In(' ');
//  292         }
//  293         else //it's a valid data
//  294         {
//  295           WINDOW_In(data_to_ascii((uint8)(tempp1[i]>>4)));
??data_convert_4:
        LSRS     R0,R7,#+4
        UXTB     R0,R0
        BL       data_to_ascii
        BL       WINDOW_In
//  296           WINDOW_In(data_to_ascii((uint8)(tempp1[i]&0xf)));
        LSLS     R0,R7,#+28
        LSRS     R0,R0,#+28
        BL       data_to_ascii
        BL       WINDOW_In
//  297           WINDOW_In(' ');
        MOVS     R0,#+32
??data_convert_5:
        BL       WINDOW_In
//  298         }
        ADDS     R6,R6,#+1
??data_convert_3:
        CMP      R6,R4
        BCS.N    ??data_convert_6
        LDRH     R7,[R5, R6, LSL #+1]
        MOVS     R0,#+256
        CMP      R7,R0
        BNE.N    ??data_convert_7
        MOVS     R0,#+115
        BL       WINDOW_In
        MOVS     R0,#+10
        B.N      ??data_convert_5
??data_convert_7:
        LSLS     R0,R0,#+1
        CMP      R7,R0
        BNE.N    ??data_convert_8
        MOVS     R0,#+10
        BL       WINDOW_In
        MOVS     R0,#+112
        BL       WINDOW_In
        MOVS     R0,#+10
        B.N      ??data_convert_5
??data_convert_8:
        MOVS     R0,#+768
        CMP      R7,R0
        BNE.N    ??data_convert_9
        MOVS     R0,#+97
        BL       WINDOW_In
        MOVS     R0,#+32
        B.N      ??data_convert_5
??data_convert_9:
        MOVS     R0,#+1024
        CMP      R7,R0
        BNE.N    ??data_convert_4
        MOVS     R0,#+110
        BL       WINDOW_In
        MOVS     R0,#+32
        B.N      ??data_convert_5
//  299       }
//  300     }
//  301   }
//  302   else
//  303   {
//  304     if((tempp_count2>=100)||(tempp2[tempp_count2-1]==0x200))//over 100 words or the last data is stop condition
??data_convert_0:
        LDR      R4,[R0, #+8]
        LDR.N    R5,??DataTable21  ;; tempp2
        CMP      R4,#+100
        BCS.N    ??data_convert_10
        MOVS     R2,#+512
        ADDS     R1,R5,R4, LSL #+1
        SUBS     R1,R1,#+2
        LDRH     R1,[R1, #+0]
        CMP      R1,R2
??data_convert_2:
        BNE.N    ??data_convert_6
//  305     {
//  306       tempp_count1=0;
??data_convert_10:
        STR      R6,[R0, #+4]
//  307       tempp_choise=0;//change the no
        STRH     R6,[R0, #+0]
//  308       for(i=0;i<tempp_count2;i++)
        B.N      ??data_convert_11
//  309       {
//  310         if(tempp2[i]==0x100)//the data is a start condition signal
//  311         {
//  312           WINDOW_In('s');
//  313           WINDOW_In('\n');
//  314         }
//  315         else if(tempp2[i]==0x200)//the data is a stop condition signal
//  316         {
//  317           WINDOW_In('\n');
//  318           WINDOW_In('p');
//  319           WINDOW_In('\n');
//  320         }
//  321         else if(tempp2[i]==0x300)//the data is a ack signal
//  322         {
//  323           WINDOW_In('a');
//  324           WINDOW_In(' ');
//  325         }
//  326         else if(tempp2[i]==0x400)//the data is a nack signal
//  327         {
//  328           WINDOW_In('n');
//  329           WINDOW_In(' ');
//  330         }
//  331         else //it's a valid data
//  332         {
//  333           WINDOW_In(data_to_ascii((uint8)(tempp2[i]>>4)));
??data_convert_12:
        LSRS     R0,R7,#+4
        UXTB     R0,R0
        BL       data_to_ascii
        BL       WINDOW_In
//  334           WINDOW_In(data_to_ascii((uint8)(tempp2[i]&0xf)));
        LSLS     R0,R7,#+28
        LSRS     R0,R0,#+28
        BL       data_to_ascii
        BL       WINDOW_In
//  335           WINDOW_In(' ');
        MOVS     R0,#+32
??data_convert_13:
        BL       WINDOW_In
//  336         }
        ADDS     R6,R6,#+1
??data_convert_11:
        CMP      R6,R4
        BCS.N    ??data_convert_6
        LDRH     R7,[R5, R6, LSL #+1]
        MOVS     R0,#+256
        CMP      R7,R0
        BNE.N    ??data_convert_14
        MOVS     R0,#+115
        BL       WINDOW_In
        MOVS     R0,#+10
        B.N      ??data_convert_13
??data_convert_14:
        LSLS     R0,R0,#+1
        CMP      R7,R0
        BNE.N    ??data_convert_15
        MOVS     R0,#+10
        BL       WINDOW_In
        MOVS     R0,#+112
        BL       WINDOW_In
        MOVS     R0,#+10
        B.N      ??data_convert_13
??data_convert_15:
        MOVS     R0,#+768
        CMP      R7,R0
        BNE.N    ??data_convert_16
        MOVS     R0,#+97
        BL       WINDOW_In
        MOVS     R0,#+32
        B.N      ??data_convert_13
??data_convert_16:
        MOVS     R0,#+1024
        CMP      R7,R0
        BNE.N    ??data_convert_12
        MOVS     R0,#+110
        BL       WINDOW_In
        MOVS     R0,#+32
        B.N      ??data_convert_13
//  337       }
//  338     }
//  339     
//  340     
//  341   }
//  342 }
??data_convert_6:
        POP      {R4-R7,PC}       ;; return
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable19:
        DC32     tempp_choise

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable20:
        DC32     tempp1

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable21:
        DC32     tempp2
//  343 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI Function I2C_To_USB_Send_Data
        THUMB
//  344 void I2C_To_USB_Send_Data(void)
//  345 {
//  346   uint32 i;
//  347   uint32 count=100;
//  348   if(BitTst(si2c1.flag,0))
I2C_To_USB_Send_Data:
        LDR.N    R0,??I2C_To_USB_Send_Data_0  ;; 0x7924
        PUSH     {R4-R7,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
        LDR.N    R4,??DataTable22  ;; si2c1
        MOVS     R6,#+100
        ADDS     R5,R4,R0
        LDRB     R0,[R5, #+12]
        LSLS     R0,R0,#+31
        BPL.N    ??I2C_To_USB_Send_Data_1
//  349   {
//  350     if(si2c1.windowcount>100)
        LDR      R0,[R5, #+0]
        MOVS     R7,#+0
        CMP      R0,#+101
        BCC.N    ??I2C_To_USB_Send_Data_2
//  351     {
//  352       for(i=0;i<count;i++)
//  353       {
//  354         si2c1.temp[i]=WINDOW_Out();
??I2C_To_USB_Send_Data_3:
        BL       WINDOW_Out
        LDR.N    R1,??I2C_To_USB_Send_Data_0+0x4  ;; 0x7531
        ADDS     R2,R4,R7
//  355       }
        ADDS     R7,R7,#+1
        CMP      R7,#+100
        STRB     R0,[R2, R1]
        BCS.N    ??I2C_To_USB_Send_Data_4
        B.N      ??I2C_To_USB_Send_Data_3
//  356     }
//  357     else
//  358     {
//  359       count=si2c1.windowcount;
??I2C_To_USB_Send_Data_2:
        MOVS     R6,R0
//  360       for(i=0;i<count;i++)
        B.N      ??I2C_To_USB_Send_Data_5
//  361       {
//  362         si2c1.temp[i]=WINDOW_Out();
??I2C_To_USB_Send_Data_6:
        BL       WINDOW_Out
        LDR.N    R1,??I2C_To_USB_Send_Data_0+0x4  ;; 0x7531
        ADDS     R2,R4,R7
//  363       }
        ADDS     R7,R7,#+1
        STRB     R0,[R2, R1]
??I2C_To_USB_Send_Data_5:
        CMP      R7,R6
        BCC.N    ??I2C_To_USB_Send_Data_6
//  364     }
//  365     UserToPMABufferCopy(si2c1.temp, ENDP1_TXADDR, count);
??I2C_To_USB_Send_Data_4:
        LDR.N    R0,??I2C_To_USB_Send_Data_0+0x4  ;; 0x7531
        UXTH     R2,R6
        MOVS     R1,#+192
        ADDS     R0,R4,R0
        _BLF     UserToPMABufferCopy,??UserToPMABufferCopy??rT
//  366     SetEPTxCount(ENDP1, count);
        UXTH     R1,R6
        MOVS     R0,#+1
        _BLF     SetEPTxCount,??SetEPTxCount??rT
//  367     SetEPTxValid(ENDP1);
        MOVS     R0,#+1
        _BLF     SetEPTxValid,??SetEPTxValid??rT
//  368     BitClr(si2c1.flag,0); 
        LDRB     R0,[R5, #+12]
        ANDS     R0,R0,#0xFE
        STRB     R0,[R5, #+12]
//  369   }
//  370 } 
??I2C_To_USB_Send_Data_1:
        POP      {R4-R7,PC}       ;; return
        Nop      
        DATA
??I2C_To_USB_Send_Data_0:
        DC32     0x7924
        DC32     0x7531
        CFI EndBlock cfiBlock8

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable22:
        DC32     si2c1

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon0
        CFI NoFunction
        THUMB
??UserToPMABufferCopy??rT:
        LDR.N    R3,??Subroutine0_0  ;; UserToPMABufferCopy
        BX       R3
        DATA
??Subroutine0_0:
        DC32     UserToPMABufferCopy
        CFI EndBlock cfiBlock9

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
        THUMB
??SetEPTxCount??rT:
        LDR.N    R3,??Subroutine1_0  ;; SetEPTxCount
        BX       R3
        DATA
??Subroutine1_0:
        DC32     SetEPTxCount
        CFI EndBlock cfiBlock10

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock11 Using cfiCommon0
        CFI NoFunction
        THUMB
??SetEPTxValid??rT:
        LDR.N    R3,??Subroutine2_0  ;; SetEPTxValid
        BX       R3
        DATA
??Subroutine2_0:
        DC32     SetEPTxValid
        CFI EndBlock cfiBlock11

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_Z:
        DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        END
//  371 
// 
//    954 bytes in segment CODE
// 39 044 bytes in segment DATA_Z
//     12 bytes in segment INITTAB
// 
//    930 bytes of CODE memory (+ 36 bytes shared)
// 39 044 bytes of DATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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