📄 iic_8led.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 939] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o".\NOR FLASH\iic_8led.o" --depend=".\NOR FLASH\iic_8led.d" --device=DARMSS9 --apcs=interwork -O0 -I..\Common\Inc -I.\Include -IC:\Keil\ARM\INC\Samsung --omf_browse=".\NOR FLASH\iic_8led.crf" Source\iic_8led.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
iic_int_8led PROC
;;;189 void __irq iic_int_8led(void)
;;;190 {
000000 e92d0003 PUSH {r0,r1}
;;;191 ClearPending(BIT_IIC);
000004 e3a00302 MOV r0,#0x8000000
000008 e3a0144a MOV r1,#0x4a000000
00000c e5810000 STR r0,[r1,#0]
000010 e3a0044a MOV r0,#0x4a000000
000014 e5900010 LDR r0,[r0,#0x10]
000018 e5810010 STR r0,[r1,#0x10]
;;;192 f_nGetACK = 1;
00001c e3a00001 MOV r0,#1
000020 e59f13e8 LDR r1,|L1.1040|
000024 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;193 }
000028 e8bd0003 POP {r0,r1}
00002c e25ef004 SUBS pc,lr,#4
ENDP
iic_init_8led PROC
;;;28 {
;;;29 f_nGetACK = 0;
000030 e3a00000 MOV r0,#0
000034 e59f13d4 LDR r1,|L1.1040|
000038 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;30
;;;31 // Enable interrupt
;;;32 rINTMOD = 0x0;
00003c e3a0144a MOV r1,#0x4a000000
000040 e5810004 STR r0,[r1,#4]
;;;33 rSRCPND = rSRCPND; // clear all interrupt
000044 e3a0044a MOV r0,#0x4a000000
000048 e5900000 LDR r0,[r0,#0]
00004c e5810000 STR r0,[r1,#0]
;;;34 rINTPND = rINTPND; // clear all interrupt
000050 e3a0044a MOV r0,#0x4a000000
000054 e5900010 LDR r0,[r0,#0x10]
000058 e5810010 STR r0,[r1,#0x10]
;;;35 rINTMSK &= ~BIT_IIC;
00005c e3a0044a MOV r0,#0x4a000000
000060 e5900008 LDR r0,[r0,#8]
000064 e3c00302 BIC r0,r0,#0x8000000
000068 e5810008 STR r0,[r1,#8]
;;;36 pISR_IIC= (unsigned)iic_int_8led;
00006c e24f0074 ADR r0,iic_int_8led
000070 e59f139c LDR r1,|L1.1044|
000074 e5810f8c STR r0,[r1,#0xf8c]
;;;37
;;;38 // Initialize iic
;;;39 rIICADD = 0x10; // S3C2410X slave address
000078 e3a00010 MOV r0,#0x10
00007c e3a01315 MOV r1,#0x54000000
000080 e5810008 STR r0,[r1,#8]
;;;40 rIICCON = 0xef; // Enable ACK, interrupt, set IICCLK=MCLK/512
000084 e3a000ef MOV r0,#0xef
000088 e5810000 STR r0,[r1,#0]
;;;41 rIICSTAT= 0x10; // Enable TX/RX
00008c e3a00010 MOV r0,#0x10
000090 e5810004 STR r0,[r1,#4]
;;;42 }
000094 e12fff1e BX lr
;;;43
ENDP
iic_write_8led PROC
;;;54 void iic_write_8led(UINT32T unSlaveAddr,UINT32T unAddr,UINT8T ucData)
;;;55 {
000098 e92d4070 PUSH {r4-r6,lr}
00009c e1a04000 MOV r4,r0
0000a0 e1a05001 MOV r5,r1
0000a4 e1a06002 MOV r6,r2
;;;56 f_nGetACK = 0;
0000a8 e3a00000 MOV r0,#0
0000ac e59f135c LDR r1,|L1.1040|
0000b0 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;57
;;;58 // Send control byte
;;;59 rIICDS = unSlaveAddr; // 0x70
0000b4 e3a00315 MOV r0,#0x54000000
0000b8 e580400c STR r4,[r0,#0xc]
;;;60 rIICSTAT = 0xf0; // Master Tx,Start
0000bc e3a000f0 MOV r0,#0xf0
0000c0 e3a01315 MOV r1,#0x54000000
0000c4 e5810004 STR r0,[r1,#4]
;;;61 while(f_nGetACK == 0); // Wait ACK
0000c8 e1a00000 MOV r0,r0
|L1.204|
0000cc e59f033c LDR r0,|L1.1040|
0000d0 e5900000 LDR r0,[r0,#0] ; f_nGetACK
0000d4 e3500000 CMP r0,#0
0000d8 0afffffb BEQ |L1.204|
;;;62 delay(10);
0000dc e3a0000a MOV r0,#0xa
0000e0 ebfffffe BL delay
;;;63 f_nGetACK = 0;
0000e4 e3a00000 MOV r0,#0
0000e8 e59f1320 LDR r1,|L1.1040|
0000ec e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;64
;;;65 // Send address
;;;66 rIICDS = unAddr;
0000f0 e3a00315 MOV r0,#0x54000000
0000f4 e580500c STR r5,[r0,#0xc]
;;;67 rIICCON = 0xef; // Resumes IIC operation.
0000f8 e3a000ef MOV r0,#0xef
0000fc e3a01315 MOV r1,#0x54000000
000100 e5810000 STR r0,[r1,#0]
;;;68 while(f_nGetACK == 0); // Wait ACK
000104 e1a00000 MOV r0,r0
|L1.264|
000108 e59f0300 LDR r0,|L1.1040|
00010c e5900000 LDR r0,[r0,#0] ; f_nGetACK
000110 e3500000 CMP r0,#0
000114 0afffffb BEQ |L1.264|
;;;69 delay(10);
000118 e3a0000a MOV r0,#0xa
00011c ebfffffe BL delay
;;;70 f_nGetACK = 0;
000120 e3a00000 MOV r0,#0
000124 e59f12e4 LDR r1,|L1.1040|
000128 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;71
;;;72 // Send data
;;;73 rIICDS = ucData;
00012c e3a00315 MOV r0,#0x54000000
000130 e580600c STR r6,[r0,#0xc]
;;;74 rIICCON = 0xef; // Resumes IIC operation.
000134 e3a000ef MOV r0,#0xef
000138 e3a01315 MOV r1,#0x54000000
00013c e5810000 STR r0,[r1,#0]
;;;75 while(f_nGetACK == 0); // Wait ACK
000140 e1a00000 MOV r0,r0
|L1.324|
000144 e59f02c4 LDR r0,|L1.1040|
000148 e5900000 LDR r0,[r0,#0] ; f_nGetACK
00014c e3500000 CMP r0,#0
000150 0afffffb BEQ |L1.324|
;;;76 delay(10);
000154 e3a0000a MOV r0,#0xa
000158 ebfffffe BL delay
;;;77 f_nGetACK = 0;
00015c e3a00000 MOV r0,#0
000160 e59f12a8 LDR r1,|L1.1040|
000164 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;78
;;;79 // End send
;;;80 rIICSTAT = 0xd0; // Stop Master Tx condition
000168 e3a000d0 MOV r0,#0xd0
00016c e3a01315 MOV r1,#0x54000000
000170 e5810004 STR r0,[r1,#4]
;;;81 rIICCON = 0xef; // Resumes IIC operation.
000174 e3a000ef MOV r0,#0xef
000178 e5810000 STR r0,[r1,#0]
;;;82 delay(10); // Wait until stop condtion is in effect.
00017c e3a0000a MOV r0,#0xa
000180 ebfffffe BL delay
;;;83 }
000184 e8bd4070 POP {r4-r6,lr}
000188 e12fff1e BX lr
;;;84
ENDP
iic_read_8led PROC
;;;95 void iic_read_8led(UINT32T unSlaveAddr,UINT32T unAddr,UINT8T *pData)
;;;96 {
00018c e92d41f0 PUSH {r4-r8,lr}
000190 e1a04000 MOV r4,r0
000194 e1a07001 MOV r7,r1
000198 e1a05002 MOV r5,r2
;;;97 char cRecvByte;
;;;98
;;;99 f_nGetACK = 0;
00019c e3a00000 MOV r0,#0
0001a0 e59f1268 LDR r1,|L1.1040|
0001a4 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;100
;;;101 // Send control byte
;;;102 rIICDS = unSlaveAddr; // Write slave address to IICDS
0001a8 e3a00315 MOV r0,#0x54000000
0001ac e580400c STR r4,[r0,#0xc]
;;;103 rIICSTAT = 0xf0; // Master Tx,Start
0001b0 e3a000f0 MOV r0,#0xf0
0001b4 e3a01315 MOV r1,#0x54000000
0001b8 e5810004 STR r0,[r1,#4]
;;;104 while(f_nGetACK == 0); // Wait ACK
0001bc e1a00000 MOV r0,r0
|L1.448|
0001c0 e59f0248 LDR r0,|L1.1040|
0001c4 e5900000 LDR r0,[r0,#0] ; f_nGetACK
0001c8 e3500000 CMP r0,#0
0001cc 0afffffb BEQ |L1.448|
;;;105 f_nGetACK = 0;
0001d0 e3a00000 MOV r0,#0
0001d4 e59f1234 LDR r1,|L1.1040|
0001d8 e5810000 STR r0,[r1,#0] ; f_nGetACK
;;;106
;;;107 // Send address
;;;108 rIICDS = unAddr;
0001dc e3a00315 MOV r0,#0x54000000
0001e0 e580700c STR r7,[r0,#0xc]
;;;109 rIICCON = 0xef; // Resumes IIC operation.
0001e4 e3a000ef MOV r0,#0xef
0001e8 e3a01315 MOV r1,#0x54000000
0001ec e5810000 STR r0,[r1,#0]
;;;110 while(f_nGetACK == 0); // Wait ACK
0001f0 e1a00000 MOV r0,r0
|L1.500|
0001f4 e59f0214 LDR r0,|L1.1040|
0001f8 e5900000 LDR r0,[r0,#0] ; f_nGetACK
0001fc e3500000 CMP r0,#0
000200 0afffffb BEQ |L1.500|
;;;111 f_nGetACK = 0;
000204 e3a00000 MOV r0,#0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -