📄 i2c.lst
字号:
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 + -