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

📄 18b20.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\18b20.o" --depend=".\NOR FLASH\18b20.d" --device=DARMSS9 --apcs=interwork -O0 -I..\Common\Inc -I.\Include -IC:\Keil\ARM\INC\Samsung --omf_browse=".\NOR FLASH\18b20.crf" Source\18b20.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  TempDelay PROC
;;;71     {
;;;72     	while(us--);
000000  e1a00000          MOV      r0,r0
                  |L1.4|
000004  e1b01000          MOVS     r1,r0
000008  e2402001          SUB      r2,r0,#1
00000c  e20200ff          AND      r0,r2,#0xff
000010  1afffffb          BNE      |L1.4|
;;;73     }
000014  e12fff1e          BX       lr
;;;74     /************************************************************
                          ENDP

                  ds18b20_dq_high PROC
;;;81     {
;;;82     	rGPEDAT = rGPEDAT | 0x0800;
000018  e3a00456          MOV      r0,#0x56000000
00001c  e5900044          LDR      r0,[r0,#0x44]
000020  e3800b02          ORR      r0,r0,#0x800
000024  e3a01456          MOV      r1,#0x56000000
000028  e5810044          STR      r0,[r1,#0x44]
;;;83     }
00002c  e12fff1e          BX       lr
;;;84     
                          ENDP

                  ds18b20_dq_low PROC
;;;92     {
;;;93     	rGPEDAT = rGPEDAT & 0xf7ff;
000030  e3a00456          MOV      r0,#0x56000000
000034  e5900044          LDR      r0,[r0,#0x44]
000038  e59f1388          LDR      r1,|L1.968|
00003c  e0000001          AND      r0,r0,r1
000040  e3a01456          MOV      r1,#0x56000000
000044  e5810044          STR      r0,[r1,#0x44]
;;;94     }
000048  e12fff1e          BX       lr
;;;95     void _nop_(void)
                          ENDP

                  _nop_ PROC
;;;96     {
;;;97     	int i=0;
00004c  e3a00000          MOV      r0,#0
;;;98     	i = i;
000050  e1a00000          MOV      r0,r0
;;;99     }
000054  e12fff1e          BX       lr
;;;100    
                          ENDP

                  Init18b20 PROC
;;;115    
;;;116    {
000058  e52de004          PUSH     {lr}
;;;117    
;;;118    //dq=1;
;;;119    	ds18b20_dq_high();
00005c  ebfffffe          BL       ds18b20_dq_high
;;;120    	_nop_();
000060  ebfffffe          BL       _nop_
;;;121    //dq=0;
;;;122    	ds18b20_dq_low();
000064  ebfffffe          BL       ds18b20_dq_low
;;;123    	TempDelay(86);   //delay 530 uS//80
000068  e3a00056          MOV      r0,#0x56
00006c  ebfffffe          BL       TempDelay
;;;124    	_nop_();
000070  ebfffffe          BL       _nop_
;;;125    
;;;126    //dq=1;
;;;127    	ds18b20_dq_high();
000074  ebfffffe          BL       ds18b20_dq_high
;;;128    	TempDelay(14);   //delay 100 uS//14
000078  e3a0000e          MOV      r0,#0xe
00007c  ebfffffe          BL       TempDelay
;;;129    	_nop_();
000080  ebfffffe          BL       _nop_
;;;130    	_nop_();
000084  ebfffffe          BL       _nop_
;;;131    	_nop_();
000088  ebfffffe          BL       _nop_
;;;132    
;;;133    	if( (rGPEDAT & 0x0800) == 0x0000)
00008c  e3a00456          MOV      r0,#0x56000000
000090  e5900044          LDR      r0,[r0,#0x44]
000094  e3100b02          TST      r0,#0x800
000098  1a000003          BNE      |L1.172|
;;;134     		flag = 1;   //detect 1820 success!
00009c  e3a00001          MOV      r0,#1
0000a0  e59f1324          LDR      r1,|L1.972|
0000a4  e5810000          STR      r0,[r1,#0]  ; flag
0000a8  ea000002          B        |L1.184|
                  |L1.172|
;;;135     	else
;;;136     		flag = 0;    //detect 1820 fail!
0000ac  e3a00000          MOV      r0,#0
0000b0  e59f1314          LDR      r1,|L1.972|
0000b4  e5810000          STR      r0,[r1,#0]  ; flag
                  |L1.184|
;;;137    
;;;138    	TempDelay(20);       //20
0000b8  e3a00014          MOV      r0,#0x14
0000bc  ebfffffe          BL       TempDelay
;;;139    	_nop_();
0000c0  ebfffffe          BL       _nop_
;;;140    	_nop_();
0000c4  ebfffffe          BL       _nop_
;;;141    //	dq = 1;
;;;142    	ds18b20_dq_high();
0000c8  ebfffffe          BL       ds18b20_dq_high
;;;143    
;;;144    }
0000cc  e49de004          POP      {lr}
0000d0  e12fff1e          BX       lr
;;;145    
                          ENDP

                  WriteByte PROC
;;;158    void WriteByte (uchar wr) //单字节写入
;;;159    {
0000d4  e92d4030          PUSH     {r4,r5,lr}
0000d8  e1a03000          MOV      r3,r0
;;;160    	int dpbit;
;;;161    	uchar i;
;;;162    	for (i=0;i<8;i++)
0000dc  e3a05000          MOV      r5,#0
0000e0  ea00000f          B        |L1.292|
                  |L1.228|
;;;163    	{
;;;164    		//dq = 0;
;;;165    		ds18b20_dq_low();
0000e4  ebfffffe          BL       ds18b20_dq_low
;;;166    		_nop_();
0000e8  ebfffffe          BL       _nop_
;;;167    
;;;168    		dpbit = wr&0x01;
0000ec  e2034001          AND      r4,r3,#1
;;;169    		if(dpbit == 0x0) 
0000f0  e3540000          CMP      r4,#0
0000f4  1a000001          BNE      |L1.256|
;;;170    			ds18b20_dq_low();
0000f8  ebfffffe          BL       ds18b20_dq_low
0000fc  ea000000          B        |L1.260|
                  |L1.256|
;;;171    		else
;;;172    			ds18b20_dq_high();
000100  ebfffffe          BL       ds18b20_dq_high
                  |L1.260|
;;;173    
;;;174    		TempDelay(5);   //delay 45 uS //5
000104  e3a00005          MOV      r0,#5
000108  ebfffffe          BL       TempDelay
;;;175    		_nop_();
00010c  ebfffffe          BL       _nop_
;;;176    		_nop_();
000110  ebfffffe          BL       _nop_
;;;177    		//dq=1;
;;;178    		ds18b20_dq_high();
000114  ebfffffe          BL       ds18b20_dq_high
;;;179    		wr >>= 1;
000118  e1a030c3          ASR      r3,r3,#1
00011c  e2850001          ADD      r0,r5,#1              ;162
000120  e20050ff          AND      r5,r0,#0xff           ;162
                  |L1.292|
000124  e3550008          CMP      r5,#8                 ;162
000128  baffffed          BLT      |L1.228|
;;;180    	}
;;;181    
;;;182    }
00012c  e8bd4030          POP      {r4,r5,lr}
000130  e12fff1e          BX       lr
;;;183    
                          ENDP

                  ReadByte PROC
;;;196    uchar ReadByte (void)     //读取单字节
;;;197    {
000134  e92d4010          PUSH     {r4,lr}
;;;198    	uchar i,u=0;
000138  e3a04000          MOV      r4,#0
;;;199    	for(i=0;i<8;i++)
00013c  e3a03000          MOV      r3,#0
000140  ea00000d          B        |L1.380|
                  |L1.324|
;;;200    	{
;;;201    		//dq = 0;
;;;202    		ds18b20_dq_low();
000144  ebfffffe          BL       ds18b20_dq_low
;;;203    		u >>= 1;
000148  e1a040c4          ASR      r4,r4,#1
;;;204    		//dq = 1;
;;;205    		ds18b20_dq_high();
00014c  ebfffffe          BL       ds18b20_dq_high
;;;206    		if((rGPEDAT & 0x0800) == 0x0800)
000150  e3a00456          MOV      r0,#0x56000000
000154  e5900044          LDR      r0,[r0,#0x44]
000158  e2000b02          AND      r0,r0,#0x800
00015c  e3500b02          CMP      r0,#0x800
000160  1a000000          BNE      |L1.360|
;;;207    			u |= 0x80;
000164  e3844080          ORR      r4,r4,#0x80
                  |L1.360|
;;;208    		TempDelay (4);
000168  e3a00004          MOV      r0,#4
00016c  ebfffffe          BL       TempDelay
;;;209     		_nop_();
000170  ebfffffe          BL       _nop_
000174  e2830001          ADD      r0,r3,#1              ;199
000178  e20030ff          AND      r3,r0,#0xff           ;199
                  |L1.380|
00017c  e3530008          CMP      r3,#8                 ;199
000180  baffffef          BLT      |L1.324|
;;;210    	}
;;;211    	return(u);
000184  e1a00004          MOV      r0,r4
000188  e8bd4010          POP      {r4,lr}
;;;212    }
00018c  e12fff1e          BX       lr
;;;213    
                          ENDP

                  read_bytes PROC
;;;227    
;;;228    {
000190  e92d4030          PUSH     {r4,r5,lr}
000194  e1a04000          MOV      r4,r0
;;;229    
;;;230    	uchar i;
;;;231    	for(i=0;i < j; i++) {
000198  e3a05000          MOV      r5,#0
00019c  ea00000a          B        |L1.460|
                  |L1.416|
;;;232        	*p = ReadByte();
0001a0  ebfffffe          BL       ReadByte
0001a4  e59f1224          LDR      r1,|L1.976|
0001a8  e5911000          LDR      r1,[r1,#0]  ; p
0001ac  e5c10000          STRB     r0,[r1,#0]
;;;233        	p++;
0001b0  e59f0218          LDR      r0,|L1.976|
0001b4  e5900000          LDR      r0,[r0,#0]  ; p
0001b8  e2800001          ADD      r0,r0,#1
0001bc  e59f120c          LDR      r1,|L1.976|
0001c0  e5810000          STR      r0,[r1,#0]  ; p
0001c4  e2850001          ADD      r0,r5,#1              ;231
0001c8  e20050ff          AND      r5,r0,#0xff           ;231
                  |L1.460|
0001cc  e1550004          CMP      r5,r4                 ;231
0001d0  bafffff2          BLT      |L1.416|
;;;234    	}
;;;235    }
0001d4  e8bd4030          POP      {r4,r5,lr}
0001d8  e12fff1e          BX       lr
;;;236    
                          ENDP

                  ||CRC|| PROC
;;;249    uchar CRC (uchar j)
;;;250    {
0001dc  e1a02000          MOV      r2,r0
;;;251    
;;;252    	uchar i,crc_data=0;
0001e0  e3a00000          MOV      r0,#0
;;;253       	for(i=0;i < 256; i++)     
0001e4  e3a01000          MOV      r1,#0
0001e8  ea000006          B        |L1.520|
                  |L1.492|
;;;254       		crc_data = CrcTable[crc_data^temp_buff[i]];
0001ec  e59f31e0          LDR      r3,|L1.980|
0001f0  e7d33001          LDRB     r3,[r3,r1]
0001f4  e0233000          EOR      r3,r3,r0
0001f8  e59fc1d8          LDR      r12,|L1.984|
0001fc  e7dc0003          LDRB     r0,[r12,r3]
000200  e2813001          ADD      r3,r1,#1              ;253
000204  e20310ff          AND      r1,r3,#0xff           ;253
                  |L1.520|
000208  e3510c01          CMP      r1,#0x100             ;253
00020c  bafffff6          BLT      |L1.492|
;;;255        return (crc_data);
;;;256    }
000210  e12fff1e          BX       lr
;;;257    
                          ENDP

                  GemTemp PROC
;;;271    
;;;272    {
000214  e92d4010          PUSH     {r4,lr}
;;;273    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -