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

📄 i2c.lst

📁 Lpc2103的小程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    140            WriteData(C02SlaveAddr);
   \   0000000C   0020               MOV         R0,#+0
   \   0000000E   ........           BL          WriteData
    141            I2C_Stop();
   \   00000012   ........           BL          I2C_Stop
    142          
    143            I2C_Start();
   \   00000016   ........           BL          I2C_Start
    144            WriteAddr(RDMode);
   \   0000001A   0120               MOV         R0,#+1
   \   0000001C   ........           BL          WriteAddr
    145            for(i=0;i<4;i++) I2C_buf2[i]=0;
   \   00000020   0020               MOV         R0,#+0
   \   00000022   041C               MOV         R4,R0
   \                     ??ReadC02_0:
   \   00000024   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   00000026   240E               LSR         R4,R4,#+24
   \   00000028   042C               CMP         R4,#+4
   \   0000002A   06D2               BCS         ??ReadC02_1
   \   0000002C   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   0000002E   240E               LSR         R4,R4,#+24
   \   00000030   ....               LDR         R0,??DataTable41   ;; I2C_buf2
   \   00000032   0021               MOV         R1,#+0
   \   00000034   0155               STRB        R1,[R0, R4]
   \   00000036   641C               ADD         R4,#+1
   \   00000038   F4E7               B           ??ReadC02_0
    146            for(i=0;i<3;i++)
   \                     ??ReadC02_1:
   \   0000003A   0020               MOV         R0,#+0
   \   0000003C   041C               MOV         R4,R0
   \                     ??ReadC02_2:
   \   0000003E   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   00000040   240E               LSR         R4,R4,#+24
   \   00000042   032C               CMP         R4,#+3
   \   00000044   08D2               BCS         ??ReadC02_3
    147            {
    148              I2C_buf2[i]=ReadByte(!lastbyte);
   \   00000046   0020               MOV         R0,#+0
   \   00000048   ........           BL          ReadByte
   \   0000004C   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   0000004E   240E               LSR         R4,R4,#+24
   \   00000050   ....               LDR         R1,??DataTable41   ;; I2C_buf2
   \   00000052   0855               STRB        R0,[R1, R4]
    149            }
   \   00000054   641C               ADD         R4,#+1
   \   00000056   F2E7               B           ??ReadC02_2
    150            I2C_buf2[3]=ReadByte(lastbyte);
   \                     ??ReadC02_3:
   \   00000058   0120               MOV         R0,#+1
   \   0000005A   ........           BL          ReadByte
   \   0000005E   1149               LDR         R1,??ReadC02_4     ;; I2C_buf2 + 3
   \   00000060   0870               STRB        R0,[R1, #+0]
    151            I2C_Stop();
   \   00000062   ........           BL          I2C_Stop
    152            //把从I2C上读到的数据在串口上打印出来
    153            UART0_PutString(" \nRead form I2C BUS:\n");
   \   00000066   1048               LDR         R0,??ReadC02_4+0x4  ;; `?<Constant " \\nRead form I2C BUS:\\n">`
   \   00000068   ........           _BLF        UART0_PutString,??UART0_PutString??rT
    154            DelayMs(5000);
   \   0000006C   ....               LDR         R0,??DataTable30   ;; 0x1388
   \   0000006E   ........           BL          DelayMs
    155            for(i=0;i<4;i++)
   \   00000072   0020               MOV         R0,#+0
   \   00000074   041C               MOV         R4,R0
   \                     ??ReadC02_5:
   \   00000076   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   00000078   240E               LSR         R4,R4,#+24
   \   0000007A   042C               CMP         R4,#+4
   \   0000007C   0ED2               BCS         ??ReadC02_6
    156            {
    157              UART0_PutChar(I2C_buf2[i]+48);
   \   0000007E   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   00000080   240E               LSR         R4,R4,#+24
   \   00000082   ....               LDR         R0,??DataTable41   ;; I2C_buf2
   \   00000084   005D               LDRB        R0,[R0, R4]
   \   00000086   3030               ADD         R0,#+48
   \   00000088   ........           _BLF        UART0_PutChar,??UART0_PutChar??rT
    158              UART0_PutString("\n");
   \   0000008C   ....               ADR         R0,??DataTable29   ;; "\n"
   \   0000008E   ........           _BLF        UART0_PutString,??UART0_PutString??rT
    159              DelayMs(5000);
   \   00000092   ....               LDR         R0,??DataTable30   ;; 0x1388
   \   00000094   ........           BL          DelayMs
    160          
    161            }
   \   00000098   641C               ADD         R4,#+1
   \   0000009A   ECE7               B           ??ReadC02_5
    162          }
   \                     ??ReadC02_6:
   \   0000009C   10BC               POP         {R4}
   \   0000009E   01BC               POP         {R0}
   \   000000A0   0047               BX          R0                 ;; return
   \   000000A2   C046               NOP         
   \                     ??ReadC02_4:
   \   000000A4   ........           DC32        I2C_buf2 + 3
   \   000000A8   ........           DC32        `?<Constant " \\nRead form I2C BUS:\\n">`
    163          
    164          /************************beep鸣叫********************/

   \                                 In segment CODE, align 4, keep-with-next
    165          void Beep()
    166          {
   \                     Beep:
   \   00000000   00B5               PUSH        {LR}
    167            while(1)
    168            {IO0CLR=BEEP;
   \                     ??Beep_0:
   \   00000002   ....               LDR         R0,??DataTable34   ;; 0xe002800c
   \   00000004   8021               MOV         R1,#+128
   \   00000006   8903               LSL         R1,R1,#+14         ;; #+2097152
   \   00000008   0160               STR         R1,[R0, #+0]
    169             DelayMs(100);
   \   0000000A   6420               MOV         R0,#+100
   \   0000000C   ........           BL          DelayMs
    170             IO0SET=BEEP;
   \   00000010   ....               LDR         R0,??DataTable36   ;; 0xe0028004
   \   00000012   8021               MOV         R1,#+128
   \   00000014   8903               LSL         R1,R1,#+14         ;; #+2097152
   \   00000016   0160               STR         R1,[R0, #+0]
    171             DelayMs(10000);
   \   00000018   ....               LDR         R0,??DataTable39   ;; 0x2710
   \   0000001A   ........           BL          DelayMs
   \   0000001E   F0E7               B           ??Beep_0
    172            }
    173          }
    174          
    175          /************************led闪烁******************/

   \                                 In segment CODE, align 4, keep-with-next
    176          void LedFlash()
    177          {
   \                     LedFlash:
   \   00000000   00B5               PUSH        {LR}
    178            while(1)
    179            {IO0CLR=LED1CON;
   \                     ??LedFlash_0:
   \   00000002   ....               LDR         R0,??DataTable34   ;; 0xe002800c
   \   00000004   8021               MOV         R1,#+128
   \   00000006   C902               LSL         R1,R1,#+11         ;; #+262144
   \   00000008   0160               STR         R1,[R0, #+0]
    180             DelayMs(500);
   \   0000000A   FA20               MOV         R0,#+250
   \   0000000C   4000               LSL         R0,R0,#+1          ;; #+500
   \   0000000E   ........           BL          DelayMs
    181             IO0SET=LED1CON;
   \   00000012   ....               LDR         R0,??DataTable36   ;; 0xe0028004
   \   00000014   8021               MOV         R1,#+128
   \   00000016   C902               LSL         R1,R1,#+11         ;; #+262144
   \   00000018   0160               STR         R1,[R0, #+0]
    182             DelayMs(500);
   \   0000001A   FA20               MOV         R0,#+250
   \   0000001C   4000               LSL         R0,R0,#+1          ;; #+500
   \   0000001E   ........           BL          DelayMs
   \   00000022   EEE7               B           ??LedFlash_0
    183            }
    184          }
    185          /*************************主函数*********************/

   \                                 In segment CODE, align 4, keep-with-next
    186          void main()
    187          {
   \                     main:
   \   00000000   10B5               PUSH        {R4,LR}
    188            U8 i;
    189            PINSEL0 = 0x00000055;			// 设置I/O口工作模式,使用I2C0口,P0.2,P0.3。其余口为GPIO口
   \   00000002   2048               LDR         R0,??main_0        ;; 0xe002c000
   \   00000004   5521               MOV         R1,#+85
   \   00000006   0160               STR         R1,[R0, #+0]
    190            PINSEL1 = 0x00000000;
   \   00000008   1F48               LDR         R0,??main_0+0x4    ;; 0xe002c004
   \   0000000A   0021               MOV         R1,#+0
   \   0000000C   0160               STR         R1,[R0, #+0]
    191            IO0DIR=LED1CON|BEEP;
   \   0000000E   1F48               LDR         R0,??main_0+0x8    ;; 0xe0028008
   \   00000010   9021               MOV         R1,#+144
   \   00000012   8903               LSL         R1,R1,#+14         ;; #+2359296
   \   00000014   0160               STR         R1,[R0, #+0]
    192            IO0SET=LED1CON|BEEP;
   \   00000016   ....               LDR         R0,??DataTable36   ;; 0xe0028004
   \   00000018   9021               MOV         R1,#+144
   \   0000001A   8903               LSL         R1,R1,#+14         ;; #+2359296
   \   0000001C   0160               STR         R1,[R0, #+0]
    193            PLL_Init();
   \   0000001E   ........           _BLF        PLL_Init,??PLL_Init??rT
    194            I2C_Init();                           //I2C初始化
   \   00000022   ........           BL          I2C_Init
    195            UART0_Init();
   \   00000026   ........           _BLF        UART0_Init,??UART0_Init??rT
    196            WriteC02();                         //往24C02写4个字节数据
   \   0000002A   ........           BL          WriteC02
    197            DelayMs(10000);
   \   0000002E   ....               LDR         R0,??DataTable39   ;; 0x2710
   \   00000030   ........           BL          DelayMs
    198            ReadC02();                           //从24C02把写进去的数读出来
   \   00000034   ........           BL          ReadC02
    199          
    200            UART0_PutString(" \nIf the data that write to and read from I2C BUS is equation,LED will flash\n");
   \   00000038   1548               LDR         R0,??main_0+0xC    ;; `?<Constant " \\nIf the data that wr...">`
   \   0000003A   ........           _BLF        UART0_PutString,??UART0_PutString??rT
    201            DelayMs(10000);
   \   0000003E   ....               LDR         R0,??DataTable39   ;; 0x2710
   \   00000040   ........           BL          DelayMs
    202            UART0_PutString(" \nIf the data that write to and read from I2C BUS is not equation,buzzer will make sound\n");
   \   00000044   1348               LDR         R0,??main_0+0x10   ;; `?<Constant " \\nIf the data that wr...">_1`
   \   00000046   ........           _BLF        UART0_PutString,??UART0_PutString??rT
    203            DelayMs(10000);
   \   0000004A   ....               LDR         R0,??DataTable39   ;; 0x2710
   \   0000004C   ........           BL          DelayMs
    204            /*********判断是否相等,并显示***************/
    205            for(i=0;i<4;i++)
   \   00000050   0020               MOV         R0,#+0
   \   00000052   041C               MOV         R4,R0
   \                     ??main_1:
   \   00000054   2406               LSL         R4,R4,#+24         ;; ZeroExt     R4,R4,#+24,#+24
   \   00000056   240E               LSR         R4,R4,#+24
   \   00000058   042C               CMP         R4,#+4
   \   0000005A   10D2               BCS         ??main_2
    206            {

⌨️ 快捷键说明

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