📄 iic_8led.txt
字号:
000208 e59f1200 LDR r1,|L1.1040|
00020c e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;112
;;;113 // Send control byte
;;;114 rIICDS = unSlaveAddr; // 0x70
000210 e3a00315 MOV r0,#0x54000000
000214 e580400c STR r4,[r0,#0xc]
;;;115 rIICSTAT = 0xb0; // Master Rx,Start
000218 e3a000b0 MOV r0,#0xb0
00021c e3a01315 MOV r1,#0x54000000
000220 e5810004 STR r0,[r1,#4]
;;;116 rIICCON = 0xef; // Resumes IIC operation.
000224 e3a000ef MOV r0,#0xef
000228 e5810000 STR r0,[r1,#0]
;;;117 while(f_nGetACK == 0); // Wait ACK
00022c e1a00000 MOV r0,r0
|L1.560|
000230 e59f01d8 LDR r0,|L1.1040|
000234 e5900000 LDR r0,[r0,#0] ; f_nGetACK
000238 e3500000 CMP r0,#0
00023c 0afffffb BEQ |L1.560|
;;;118 f_nGetACK = 0;
000240 e3a00000 MOV r0,#0
000244 e59f11c4 LDR r1,|L1.1040|
000248 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;119
;;;120 // Get data
;;;121 cRecvByte = rIICDS;
00024c e3a00315 MOV r0,#0x54000000
000250 e590000c LDR r0,[r0,#0xc]
000254 e20060ff AND r6,r0,#0xff
;;;122 rIICCON = 0x2f;
000258 e3a0002f MOV r0,#0x2f
00025c e3a01315 MOV r1,#0x54000000
000260 e5810000 STR r0,[r1,#0]
;;;123 delay(10);
000264 e3a0000a MOV r0,#0xa
000268 ebfffffe BL delay
;;;124
;;;125 // Get data
;;;126 cRecvByte = rIICDS;
00026c e3a00315 MOV r0,#0x54000000
000270 e590000c LDR r0,[r0,#0xc]
000274 e20060ff AND r6,r0,#0xff
;;;127
;;;128 // End receive
;;;129 rIICSTAT = 0x90; // Stop Master Rx condition
000278 e3a00090 MOV r0,#0x90
00027c e3a01315 MOV r1,#0x54000000
000280 e5810004 STR r0,[r1,#4]
;;;130 rIICCON = 0xef; // Resumes IIC operation.
000284 e3a000ef MOV r0,#0xef
000288 e5810000 STR r0,[r1,#0]
;;;131 delay(10); // Wait until stop condtion is in effect.
00028c e3a0000a MOV r0,#0xa
000290 ebfffffe BL delay
;;;132
;;;133 *pData = cRecvByte;
000294 e5c56000 STRB r6,[r5,#0]
;;;134 }
000298 e8bd41f0 POP {r4-r8,lr}
00029c e12fff1e BX lr
;;;135
ENDP
iic_write_8led_complex PROC
;;;136 void iic_write_8led_complex(UINT32T unSlaveAddr,UINT32T unAddr1,UINT8T ucData1,UINT8T ucData2)
;;;137 {
0002a0 e92d41f0 PUSH {r4-r8,lr}
0002a4 e1a04000 MOV r4,r0
0002a8 e1a05001 MOV r5,r1
0002ac e1a06002 MOV r6,r2
0002b0 e1a07003 MOV r7,r3
;;;138 f_nGetACK = 0;
0002b4 e3a00000 MOV r0,#0
0002b8 e59f1150 LDR r1,|L1.1040|
0002bc e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;139
;;;140 // Send control byte
;;;141 rIICDS = unSlaveAddr; // 0x70
0002c0 e3a00315 MOV r0,#0x54000000
0002c4 e580400c STR r4,[r0,#0xc]
;;;142 rIICSTAT = 0xf0; // Master Tx,Start
0002c8 e3a000f0 MOV r0,#0xf0
0002cc e3a01315 MOV r1,#0x54000000
0002d0 e5810004 STR r0,[r1,#4]
;;;143 while(f_nGetACK == 0); // Wait ACK
0002d4 e1a00000 MOV r0,r0
|L1.728|
0002d8 e59f0130 LDR r0,|L1.1040|
0002dc e5900000 LDR r0,[r0,#0] ; f_nGetACK
0002e0 e3500000 CMP r0,#0
0002e4 0afffffb BEQ |L1.728|
;;;144 delay(10);
0002e8 e3a0000a MOV r0,#0xa
0002ec ebfffffe BL delay
;;;145 f_nGetACK = 0;
0002f0 e3a00000 MOV r0,#0
0002f4 e59f1114 LDR r1,|L1.1040|
0002f8 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;146
;;;147 // Send address
;;;148 rIICDS = unAddr1;
0002fc e3a00315 MOV r0,#0x54000000
000300 e580500c STR r5,[r0,#0xc]
;;;149 rIICCON = 0xef; // Resumes IIC operation.
000304 e3a000ef MOV r0,#0xef
000308 e3a01315 MOV r1,#0x54000000
00030c e5810000 STR r0,[r1,#0]
;;;150 while(f_nGetACK == 0); // Wait ACK
000310 e1a00000 MOV r0,r0
|L1.788|
000314 e59f00f4 LDR r0,|L1.1040|
000318 e5900000 LDR r0,[r0,#0] ; f_nGetACK
00031c e3500000 CMP r0,#0
000320 0afffffb BEQ |L1.788|
;;;151 delay(10);
000324 e3a0000a MOV r0,#0xa
000328 ebfffffe BL delay
;;;152 f_nGetACK = 0;
00032c e3a00000 MOV r0,#0
000330 e59f10d8 LDR r1,|L1.1040|
000334 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;153
;;;154 // Send data
;;;155 rIICDS = ucData1;
000338 e3a00315 MOV r0,#0x54000000
00033c e580600c STR r6,[r0,#0xc]
;;;156 rIICCON = 0xef; // Resumes IIC operation.
000340 e3a000ef MOV r0,#0xef
000344 e3a01315 MOV r1,#0x54000000
000348 e5810000 STR r0,[r1,#0]
;;;157 while(f_nGetACK == 0); // Wait ACK
00034c e1a00000 MOV r0,r0
|L1.848|
000350 e59f00b8 LDR r0,|L1.1040|
000354 e5900000 LDR r0,[r0,#0] ; f_nGetACK
000358 e3500000 CMP r0,#0
00035c 0afffffb BEQ |L1.848|
;;;158 delay(10);
000360 e3a0000a MOV r0,#0xa
000364 ebfffffe BL delay
;;;159 f_nGetACK = 0;
000368 e3a00000 MOV r0,#0
00036c e59f109c LDR r1,|L1.1040|
000370 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;160
;;;161 // Send address
;;;162 rIICDS = 0x08;
000374 e3a00008 MOV r0,#8
000378 e3a01315 MOV r1,#0x54000000
00037c e581000c STR r0,[r1,#0xc]
;;;163 rIICCON = 0xef; // Resumes IIC operation.
000380 e3a000ef MOV r0,#0xef
000384 e5810000 STR r0,[r1,#0]
;;;164 while(f_nGetACK == 0); // Wait ACK
000388 e1a00000 MOV r0,r0
|L1.908|
00038c e59f007c LDR r0,|L1.1040|
000390 e5900000 LDR r0,[r0,#0] ; f_nGetACK
000394 e3500000 CMP r0,#0
000398 0afffffb BEQ |L1.908|
;;;165 delay(10);
00039c e3a0000a MOV r0,#0xa
0003a0 ebfffffe BL delay
;;;166 f_nGetACK = 0;
0003a4 e3a00000 MOV r0,#0
0003a8 e59f1060 LDR r1,|L1.1040|
0003ac e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;167
;;;168 // Send data
;;;169 rIICDS = ucData2;
0003b0 e3a00315 MOV r0,#0x54000000
0003b4 e580700c STR r7,[r0,#0xc]
;;;170 rIICCON = 0xef; // Resumes IIC operation.
0003b8 e3a000ef MOV r0,#0xef
0003bc e3a01315 MOV r1,#0x54000000
0003c0 e5810000 STR r0,[r1,#0]
;;;171 while(f_nGetACK == 0); // Wait ACK
0003c4 e1a00000 MOV r0,r0
|L1.968|
0003c8 e59f0040 LDR r0,|L1.1040|
0003cc e5900000 LDR r0,[r0,#0] ; f_nGetACK
0003d0 e3500000 CMP r0,#0
0003d4 0afffffb BEQ |L1.968|
;;;172 delay(10);
0003d8 e3a0000a MOV r0,#0xa
0003dc ebfffffe BL delay
;;;173 f_nGetACK = 0;
0003e0 e3a00000 MOV r0,#0
0003e4 e59f1024 LDR r1,|L1.1040|
0003e8 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;174
;;;175 // End send
;;;176 rIICSTAT = 0xd0; // Stop Master Tx condition
0003ec e3a000d0 MOV r0,#0xd0
0003f0 e3a01315 MOV r1,#0x54000000
0003f4 e5810004 STR r0,[r1,#4]
;;;177 rIICCON = 0xef; // Resumes IIC operation.
0003f8 e3a000ef MOV r0,#0xef
0003fc e5810000 STR r0,[r1,#0]
;;;178 delay(10); // Wait until stop condtion is in effect.
000400 e3a0000a MOV r0,#0xa
000404 ebfffffe BL delay
;;;179 }
000408 e8bd41f0 POP {r4-r8,lr}
00040c e12fff1e BX lr
;;;180
ENDP
|L1.1040|
000410 00000000 DCD f_nGetACK
|L1.1044|
000414 33fff000 DCD 0x33fff000
AREA ||.data||, DATA, ALIGN=2
f_nGetACK
000000 00000000 DCD 0x00000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -