📄 iic.txt
字号:
000af4 e1a00000 NOP
;;;326 {
;;;327 rIICDS = slvAddr;
000af8 e3a00454 MOV r0,#0x54000000
000afc e580400c STR r4,[r0,#0xc]
;;;328 _iicStatus = 0x100; //To check if _iicStatus is changed
000b00 e3a00f40 MOV r0,#0x100
000b04 e51f1428 LDR r1,|L1.1764|
000b08 e5810000 STR r0,[r1,#0] ; _iicStatus
;;;329 rIICSTAT = 0xf0; //Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
000b0c e3a000f0 MOV r0,#0xf0
000b10 e3a01454 MOV r1,#0x54000000
000b14 e5810004 STR r0,[r1,#4]
;;;330 rIICCON = 0xaf; //Resumes IIC operation.
000b18 e3a000af MOV r0,#0xaf
000b1c e3a01454 MOV r1,#0x54000000
000b20 e5810000 STR r0,[r1,#0]
;;;331 while(_iicStatus==0x100)
000b24 e1a00000 NOP
|L1.2856|
000b28 e51f044c LDR r0,|L1.1764|
000b2c e5900000 LDR r0,[r0,#0] ; _iicStatus
000b30 e3500f40 CMP r0,#0x100
000b34 1a000001 BNE |L1.2880|
;;;332 Run_IicPoll();
000b38 ebfffffe BL Run_IicPoll
000b3c eafffff9 B |L1.2856|
;;;333
;;;334 if(!(_iicStatus & 0x1))
|L1.2880|
000b40 e51f0464 LDR r0,|L1.1764|
000b44 e5900000 LDR r0,[r0,#0] ; _iicStatus
000b48 e3100001 TST r0,#1
000b4c 1a000000 BNE |L1.2900|
;;;335 break; //When ACK is received
000b50 ea000000 B |L1.2904|
;;;336 }
|L1.2900|
000b54 eaffffe6 B |L1.2804|
;;;337 rIICSTAT = 0xd0; //Master Tx condition, Stop(Write), Output Enable
|L1.2904|
000b58 e3a000d0 MOV r0,#0xd0
000b5c e3a01454 MOV r1,#0x54000000
000b60 e5810004 STR r0,[r1,#4]
;;;338 rIICCON = 0xaf; //Resumes IIC operation.
000b64 e3a000af MOV r0,#0xaf
000b68 e3a01454 MOV r1,#0x54000000
000b6c e5810000 STR r0,[r1,#0]
;;;339 Delay(1); //Wait until stop condtion is in effect.
000b70 e3a00001 MOV r0,#1
000b74 ebfffffe BL Delay
;;;340 //Write is completed.
;;;341 }
000b78 e8bd8070 LDMFD sp!,{r4-r6,pc}
ENDP
Test_Iic2 PROC
;;;263 void Test_Iic2(void)
;;;264 {
000b7c e92d40f8 STMFD sp!,{r3-r7,lr}
;;;265 unsigned int i,j,save_E,save_PE;
;;;266 static U8 data[256];
;;;267
;;;268 Uart_Printf("[ IIC Test(Polling) using KS24C080 ]\n");
000b80 e28f0f59 ADR r0,|L1.3308|
000b84 ebfffffe BL Uart_Printf
;;;269
;;;270 save_E = rGPECON;
000b88 e3a00456 MOV r0,#0x56000000
000b8c e5900040 LDR r0,[r0,#0x40]
000b90 e1a06000 MOV r6,r0
;;;271 save_PE = rGPEUP;
000b94 e3a00456 MOV r0,#0x56000000
000b98 e5900048 LDR r0,[r0,#0x48]
000b9c e1a07000 MOV r7,r0
;;;272
;;;273 rGPEUP |= 0xc000; //Pull-up disable
000ba0 e3a00456 MOV r0,#0x56000000
000ba4 e5900048 LDR r0,[r0,#0x48]
000ba8 e3800cc0 ORR r0,r0,#0xc000
000bac e3a01456 MOV r1,#0x56000000
000bb0 e5810048 STR r0,[r1,#0x48]
;;;274 rGPECON |= 0xa00000; //GPE15:IICSDA , GPE14:IICSCL
000bb4 e3a00456 MOV r0,#0x56000000
000bb8 e5900040 LDR r0,[r0,#0x40]
000bbc e38008a0 ORR r0,r0,#0xa00000
000bc0 e3a01456 MOV r1,#0x56000000
000bc4 e5810040 STR r0,[r1,#0x40]
;;;275
;;;276 //Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
;;;277 rIICCON = (1<<7) | (0<<6) | (1<<5) | (0xf);
000bc8 e3a000af MOV r0,#0xaf
000bcc e3a01454 MOV r1,#0x54000000
000bd0 e5810000 STR r0,[r1,#0]
;;;278
;;;279 rIICADD = 0x10; //2442 slave address = [7:1]
000bd4 e3a00010 MOV r0,#0x10
000bd8 e3a01454 MOV r1,#0x54000000
000bdc e5810008 STR r0,[r1,#8]
;;;280 rIICSTAT = 0x10; //IIC bus data output enable(Rx/Tx)
000be0 e3a00010 MOV r0,#0x10
000be4 e3a01454 MOV r1,#0x54000000
000be8 e5810004 STR r0,[r1,#4]
;;;281 //rIICLC = (1<<2)|(3); // Filter enable, 15 clocks SDA output delay added by junon
;;;282
;;;283 Uart_Printf("Write test data into KS24C080\n");
000bec e59f0120 LDR r0,|L1.3348|
000bf0 ebfffffe BL Uart_Printf
;;;284
;;;285 for(i=0;i<256;i++)
000bf4 e3a04000 MOV r4,#0
|L1.3064|
000bf8 e3540f40 CMP r4,#0x100
000bfc 2a000008 BCS |L1.3108|
000c00 ea000001 B |L1.3084|
|L1.3076|
000c04 e2844001 ADD r4,r4,#1
000c08 eafffffa B |L1.3064|
;;;286 _Wr24C080(0xa0,(U8)i,255-i);
|L1.3084|
000c0c e26400ff RSB r0,r4,#0xff
000c10 e20020ff AND r2,r0,#0xff
000c14 e20410ff AND r1,r4,#0xff
000c18 e3a000a0 MOV r0,#0xa0
000c1c ebfffffe BL _Wr24C080
000c20 eafffff7 B |L1.3076|
;;;287 for(i=0;i<256;i++)
|L1.3108|
000c24 e3a04000 MOV r4,#0
|L1.3112|
000c28 e3540f40 CMP r4,#0x100
000c2c 2a000006 BCS |L1.3148|
000c30 ea000001 B |L1.3132|
|L1.3124|
000c34 e2844001 ADD r4,r4,#1
000c38 eafffffa B |L1.3112|
;;;288 data[i] = 0;
|L1.3132|
000c3c e3a00000 MOV r0,#0
000c40 e59f10d0 LDR r1,|L1.3352|
000c44 e7c10004 STRB r0,[r1,r4]
000c48 eafffff9 B |L1.3124|
;;;289
;;;290 Uart_Printf("Read test data from KS24C080\n");
|L1.3148|
000c4c e59f00c8 LDR r0,|L1.3356|
000c50 ebfffffe BL Uart_Printf
;;;291 for(i=0;i<256;i++)
000c54 e3a04000 MOV r4,#0
|L1.3160|
000c58 e3540f40 CMP r4,#0x100
000c5c 2a000008 BCS |L1.3204|
000c60 ea000001 B |L1.3180|
|L1.3172|
000c64 e2844001 ADD r4,r4,#1
000c68 eafffffa B |L1.3160|
;;;292 _Rd24C080(0xa0,(U8)i,&(data[i]));
|L1.3180|
000c6c e59f00a4 LDR r0,|L1.3352|
000c70 e0802004 ADD r2,r0,r4
000c74 e20410ff AND r1,r4,#0xff
000c78 e3a000a0 MOV r0,#0xa0
000c7c ebfffffe BL _Rd24C080
000c80 eafffff7 B |L1.3172|
;;;293
;;;294 for(i=0;i<16;i++)
|L1.3204|
000c84 e3a04000 MOV r4,#0
|L1.3208|
000c88 e3540010 CMP r4,#0x10
000c8c 2a000011 BCS |L1.3288|
000c90 ea000001 B |L1.3228|
|L1.3220|
000c94 e2844001 ADD r4,r4,#1
000c98 eafffffa B |L1.3208|
;;;295 {
;;;296 for(j=0;j<16;j++)
|L1.3228|
000c9c e3a05000 MOV r5,#0
|L1.3232|
000ca0 e3550010 CMP r5,#0x10
000ca4 2a000008 BCS |L1.3276|
000ca8 ea000001 B |L1.3252|
|L1.3244|
000cac e2855001 ADD r5,r5,#1
000cb0 eafffffa B |L1.3232|
;;;297 Uart_Printf("%2x ",data[i*16+j]);
|L1.3252|
000cb4 e0850204 ADD r0,r5,r4,LSL #4
000cb8 e59f2058 LDR r2,|L1.3352|
000cbc e7d21000 LDRB r1,[r2,r0]
000cc0 e28f0058 ADR r0,|L1.3360|
000cc4 ebfffffe BL Uart_Printf
000cc8 eafffff7 B |L1.3244|
;;;298 Uart_Printf("\n");
|L1.3276|
000ccc e28f003c ADR r0,|L1.3344|
000cd0 ebfffffe BL Uart_Printf
;;;299 }
000cd4 eaffffee B |L1.3220|
;;;300
;;;301 rGPEUP = save_PE;
|L1.3288|
000cd8 e3a00456 MOV r0,#0x56000000
000cdc e5807048 STR r7,[r0,#0x48]
;;;302 rGPECON = save_E;
000ce0 e3a00456 MOV r0,#0x56000000
000ce4 e5806040 STR r6,[r0,#0x40]
;;;303 }
000ce8 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.3308|
000cec 4949205b DCB "[ II"
000cf0 65542043 DCB "C Te"
000cf4 50287473 DCB "st(P"
000cf8 696c6c6f DCB "olli"
000cfc 2029676e DCB "ng) "
000d00 6e697375 DCB "usin"
000d04 534b2067 DCB "g KS"
000d08 30433432 DCB "24C0"
000d0c 5d203038 DCB "80 ]"
|L1.3344|
000d10 0000000a DCB "\n\0\0\0"
|L1.3348|
000d14 00000000 DCD |L1.1816|
|L1.3352|
000d18 00000100 DCD ||.bss$2|| + 256
|L1.3356|
000d1c 00000000 DCD |L1.1852|
|L1.3360|
000d20 20783225 DCB "%2x "
000d24 00000000 DCB "\0\0\0\0"
ENDP
AREA ||.data||, DATA, ALIGN=2
||.data$0||
func_iic_test
DCD Test_Iic
DCD ||.constdata$1||
DCD Test_Iic2
DCD ||.constdata$1||+0x11
DCD 0x00000000
DCD 0x00000000
AREA ||.constdata||, DATA, READONLY, ALIGN=0
||.constdata$1||
DCB 0x49,0x49,0x43,0x28
DCB 0x4b,0x53,0x32,0x34
DCB 0x43,0x30,0x38,0x30
DCB 0x29,0x49,0x4e,0x54
DCB 0x00
DCB 0x49,0x49,0x43,0x28
DCB 0x4b,0x53,0x32,0x34
DCB 0x43,0x30,0x38,0x30
DCB 0x29,0x50,0x4f,0x4c
DCB 0x00
AREA ||.bss||, NOINIT, ALIGN=2
||data@Test_Iic_0||
||.bss$2||
% 256
||data@Test_Iic2_0||
% 256
_iicData
% 32
_iicDataCount
% 4
_iicStatus
% 4
_iicMode
% 4
_iicPt
% 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -