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

📄 iic_8led.txt

📁 在mdk下面实现对于ds18b20的控制
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; 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 + -