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

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

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

                  udelay PROC
;;;36     	int i;
;;;37      	for(i=0; i < num;i++);
000000  e3a01000          MOV      r1,#0
000004  ea000000          B        |L1.12|
                  |L1.8|
000008  e2811001          ADD      r1,r1,#1
                  |L1.12|
00000c  e1510000          CMP      r1,r0
000010  bafffffc          BLT      |L1.8|
;;;38     }
000014  e12fff1e          BX       lr
;;;39     /*********************************************************************************************
                          ENDP

                  s3c2410_gpio_cfgpin PROC
;;;49     {	
;;;50     	if(state == CFG_IN)
000018  e3500000          CMP      r0,#0
00001c  1a000005          BNE      |L1.56|
;;;51     		rGPECON = (rGPECON & 0xff3fffff) | 0x00000000; //set GE11
000020  e3a01456          MOV      r1,#0x56000000
000024  e5911040          LDR      r1,[r1,#0x40]
000028  e3c11503          BIC      r1,r1,#0xc00000
00002c  e3a02456          MOV      r2,#0x56000000
000030  e5821040          STR      r1,[r2,#0x40]
000034  ea000005          B        |L1.80|
                  |L1.56|
;;;52     	else
;;;53     		rGPECON = (rGPECON & 0xff3fffff) | 0x00400000; //set GE11
000038  e3a01456          MOV      r1,#0x56000000
00003c  e5911040          LDR      r1,[r1,#0x40]
000040  e3c11503          BIC      r1,r1,#0xc00000
000044  e3811501          ORR      r1,r1,#0x400000
000048  e3a02456          MOV      r2,#0x56000000
00004c  e5821040          STR      r1,[r2,#0x40]
                  |L1.80|
;;;54     		
;;;55     }
000050  e12fff1e          BX       lr
;;;56     /*********************************************************************************************
                          ENDP

                  s3c2410_gpio_pullup PROC
;;;66     {
;;;67     	if(state == 0)
000054  e3500000          CMP      r0,#0
000058  1a000006          BNE      |L1.120|
;;;68     		rGPEUP  = rGPEUP & 0xf7ff;
00005c  e3a01456          MOV      r1,#0x56000000
000060  e5911048          LDR      r1,[r1,#0x48]
000064  e59f234c          LDR      r2,|L1.952|
000068  e0011002          AND      r1,r1,r2
00006c  e3a02456          MOV      r2,#0x56000000
000070  e5821048          STR      r1,[r2,#0x48]
000074  ea000004          B        |L1.140|
                  |L1.120|
;;;69     	else
;;;70     		rGPEUP  = rGPEUP | 0x0800;	
000078  e3a01456          MOV      r1,#0x56000000
00007c  e5911048          LDR      r1,[r1,#0x48]
000080  e3811b02          ORR      r1,r1,#0x800
000084  e3a02456          MOV      r2,#0x56000000
000088  e5821048          STR      r1,[r2,#0x48]
                  |L1.140|
;;;71     }
00008c  e12fff1e          BX       lr
;;;72     /*********************************************************************************************
                          ENDP

                  s3c2410_gpio_setpin PROC
;;;81     {
;;;82     	if(bit == 0)
000090  e3500000          CMP      r0,#0
000094  1a000006          BNE      |L1.180|
;;;83     		rGPEDAT  = rGPEDAT & 0xf7ff;
000098  e3a01456          MOV      r1,#0x56000000
00009c  e5911044          LDR      r1,[r1,#0x44]
0000a0  e59f2310          LDR      r2,|L1.952|
0000a4  e0011002          AND      r1,r1,r2
0000a8  e3a02456          MOV      r2,#0x56000000
0000ac  e5821044          STR      r1,[r2,#0x44]
0000b0  ea000004          B        |L1.200|
                  |L1.180|
;;;84     	else
;;;85     		rGPEDAT  = rGPEDAT | 0x0800;
0000b4  e3a01456          MOV      r1,#0x56000000
0000b8  e5911044          LDR      r1,[r1,#0x44]
0000bc  e3811b02          ORR      r1,r1,#0x800
0000c0  e3a02456          MOV      r2,#0x56000000
0000c4  e5821044          STR      r1,[r2,#0x44]
                  |L1.200|
;;;86     	
;;;87     }
0000c8  e12fff1e          BX       lr
;;;88     /*********************************************************************************************
                          ENDP

                  s3c2410_gpio_getpin PROC
;;;97     int s3c2410_gpio_getpin(int dq)
;;;98     {	
0000cc  e1a01000          MOV      r1,r0
;;;99     	if((rGPEDAT & 0x0800) == 0x0) 
0000d0  e3a00456          MOV      r0,#0x56000000
0000d4  e5900044          LDR      r0,[r0,#0x44]
0000d8  e3100b02          TST      r0,#0x800
0000dc  1a000001          BNE      |L1.232|
;;;100    		return 0;
0000e0  e3a00000          MOV      r0,#0
                  |L1.228|
;;;101    	else 
;;;102    		return 1;
;;;103    }
0000e4  e12fff1e          BX       lr
                  |L1.232|
0000e8  e3a00001          MOV      r0,#1                 ;102
0000ec  eafffffc          B        |L1.228|
;;;104    /*********************************************************************************************
                          ENDP

                  ds18b20_reset PROC
;;;113    int ds18b20_reset(void)      				//ds18b20复位,返回0成功,返回1失败
;;;114    {
0000f0  e92d4010          PUSH     {r4,lr}
;;;115    	int ret;
;;;116    	s3c2410_gpio_cfgpin(CFG_OUT);
0000f4  e3a00001          MOV      r0,#1
0000f8  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;117      	s3c2410_gpio_pullup(0);
0000fc  e3a00000          MOV      r0,#0
000100  ebfffffe          BL       s3c2410_gpio_pullup
;;;118    	s3c2410_gpio_setpin(0);                	//拉低数据线电平
000104  e3a00000          MOV      r0,#0
000108  ebfffffe          BL       s3c2410_gpio_setpin
;;;119    	udelay(300);          					//精确延时480us-960us
00010c  e3a00f4b          MOV      r0,#0x12c
000110  ebfffffe          BL       udelay
;;;120    	s3c2410_gpio_setpin(1);                	//拉高电平
000114  e3a00001          MOV      r0,#1
000118  ebfffffe          BL       s3c2410_gpio_setpin
;;;121    	udelay(25);           					//精确延时15us-60us
00011c  e3a00019          MOV      r0,#0x19
000120  ebfffffe          BL       udelay
;;;122    	s3c2410_gpio_cfgpin(CFG_IN);
000124  e3a00000          MOV      r0,#0
000128  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;123      	ret = s3c2410_gpio_getpin(DQ);
00012c  e3a00b02          MOV      r0,#0x800
000130  ebfffffe          BL       s3c2410_gpio_getpin
000134  e1a04000          MOV      r4,r0
;;;124      	if(ret)
000138  e3540000          CMP      r4,#0
00013c  0a000004          BEQ      |L1.340|
;;;125      	{
;;;126     		uart_printf("err\n");
000140  e28f0f9d          ADR      r0,|L1.956|
000144  ebfffffe          BL       uart_printf
;;;127    		return -1;
000148  e3e00000          MVN      r0,#0
                  |L1.332|
00014c  e8bd4010          POP      {r4,lr}
;;;128    	}
;;;129    	else
;;;130    	{
;;;131    	//	uart_printf("OK!");
;;;132    		udelay(40);
;;;133    	}
;;;134    	return ret; 
;;;135    }
000150  e12fff1e          BX       lr
                  |L1.340|
000154  e3a00028          MOV      r0,#0x28              ;132
000158  ebfffffe          BL       udelay
00015c  e1a00004          MOV      r0,r4                 ;134
000160  eafffff9          B        |L1.332|
;;;136    
                          ENDP

                  write_byte PROC
;;;146    void write_byte(unsigned char data)//向18b20写一个字节
;;;147    {
000164  e92d4010          PUSH     {r4,lr}
000168  e1a03000          MOV      r3,r0
;;;148      char i = 0;
00016c  e3a04000          MOV      r4,#0
;;;149      s3c2410_gpio_cfgpin(CFG_OUT);
000170  e3a00001          MOV      r0,#1
000174  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;150      s3c2410_gpio_pullup(0);
000178  e3a00000          MOV      r0,#0
00017c  ebfffffe          BL       s3c2410_gpio_pullup
;;;151      for(i=0; i<8; i++){	
000180  e1a00000          MOV      r0,r0
000184  ea00000d          B        |L1.448|
                  |L1.392|
;;;152      	s3c2410_gpio_setpin(1);
000188  e3a00001          MOV      r0,#1
00018c  ebfffffe          BL       s3c2410_gpio_setpin
;;;153    	i = i;
000190  e1a00000          MOV      r0,r0
;;;154        s3c2410_gpio_setpin(0);
000194  e3a00000          MOV      r0,#0
000198  ebfffffe          BL       s3c2410_gpio_setpin
;;;155        //udelay(2);
;;;156    	udelay(1);
00019c  e3a00001          MOV      r0,#1
0001a0  ebfffffe          BL       udelay
;;;157        s3c2410_gpio_setpin(data&0x01);
0001a4  e2030001          AND      r0,r3,#1
0001a8  ebfffffe          BL       s3c2410_gpio_setpin
;;;158        udelay(25);
0001ac  e3a00019          MOV      r0,#0x19
0001b0  ebfffffe          BL       udelay
;;;159        data >>= 1;
0001b4  e1a030c3          ASR      r3,r3,#1
0001b8  e2840001          ADD      r0,r4,#1              ;151
0001bc  e20040ff          AND      r4,r0,#0xff           ;151
                  |L1.448|
0001c0  e3540008          CMP      r4,#8                 ;151
0001c4  baffffef          BLT      |L1.392|
;;;160      }
;;;161      s3c2410_gpio_setpin(1);
0001c8  e3a00001          MOV      r0,#1
0001cc  ebfffffe          BL       s3c2410_gpio_setpin
;;;162    }
0001d0  e8bd4010          POP      {r4,lr}
0001d4  e12fff1e          BX       lr
;;;163    /*********************************************************************************************
                          ENDP

                  read_byte PROC
;;;172    unsigned char read_byte(void)//从18b20读一个字节

⌨️ 快捷键说明

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