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

📄 ds18b20.txt

📁 在mdk下面实现对于ds18b20的控制
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;173    {
0001d8  e92d4010          PUSH     {r4,lr}
;;;174      unsigned char i;
;;;175      unsigned char data=0;
0001dc  e3a04000          MOV      r4,#0
;;;176      s3c2410_gpio_cfgpin(CFG_OUT);
0001e0  e3a00001          MOV      r0,#1
0001e4  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;177      s3c2410_gpio_pullup(0);
0001e8  e3a00000          MOV      r0,#0
0001ec  ebfffffe          BL       s3c2410_gpio_pullup
;;;178      for(i=0; i<8; i++)
0001f0  e3a03000          MOV      r3,#0
0001f4  ea000013          B        |L1.584|
                  |L1.504|
;;;179        { 
;;;180    	  data >>= 1;
0001f8  e1a040c4          ASR      r4,r4,#1
;;;181    	  s3c2410_gpio_cfgpin(CFG_OUT);
0001fc  e3a00001          MOV      r0,#1
000200  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;182    	  //s3c2410_gpio_setpin(1);
;;;183    	  //udelay(6);
;;;184          s3c2410_gpio_setpin(0);
000204  e3a00000          MOV      r0,#0
000208  ebfffffe          BL       s3c2410_gpio_setpin
;;;185          i = i;
00020c  e1a00000          MOV      r0,r0
;;;186          s3c2410_gpio_setpin(1);
000210  e3a00001          MOV      r0,#1
000214  ebfffffe          BL       s3c2410_gpio_setpin
;;;187    	  i = i; 
000218  e1a00000          MOV      r0,r0
;;;188          s3c2410_gpio_cfgpin(CFG_IN);  
00021c  e3a00000          MOV      r0,#0
000220  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;189          if(s3c2410_gpio_getpin(DQ))
000224  e3a00b02          MOV      r0,#0x800
000228  ebfffffe          BL       s3c2410_gpio_getpin
00022c  e3500000          CMP      r0,#0
000230  0a000001          BEQ      |L1.572|
;;;190        		data |= 0x80;
000234  e3844080          ORR      r4,r4,#0x80
000238  ea000000          B        |L1.576|
                  |L1.572|
;;;191    	  else
;;;192    	  		data &= 0x7f;
00023c  e204407f          AND      r4,r4,#0x7f
                  |L1.576|
000240  e2830001          ADD      r0,r3,#1              ;178
000244  e20030ff          AND      r3,r0,#0xff           ;178
                  |L1.584|
000248  e3530008          CMP      r3,#8                 ;178
00024c  baffffe9          BLT      |L1.504|
;;;193        //  udelay(2);
;;;194          //s3c2410_gpio_cfgpin(CFG_OUT);
;;;195          //s3c2410_gpio_pullup(0);
;;;196          //s3c2410_gpio_setpin(1);
;;;197          //
;;;198        }	
;;;199      udelay(2);
000250  e3a00002          MOV      r0,#2
000254  ebfffffe          BL       udelay
;;;200     // s3c2410_gpio_cfgpin(CFG_OUT);
;;;201     // s3c2410_gpio_pullup(0);
;;;202     // s3c2410_gpio_setpin(1);
;;;203      return data;
000258  e1a00004          MOV      r0,r4
00025c  e8bd4010          POP      {r4,lr}
;;;204    }
000260  e12fff1e          BX       lr
;;;205    
                          ENDP

                  temperature_test PROC
;;;215    void temperature_test() 
;;;216    { 
000264  e92d47ff          PUSH     {r0-r10,lr}
;;;217    	unsigned int a = 0, b = 0,t = 0;
000268  e3a04000          MOV      r4,#0
00026c  e3a05000          MOV      r5,#0
000270  e3a06000          MOV      r6,#0
;;;218    	float tt;
;;;219    	int temp;
;;;220    	uart_printf(" Temperature Test!\n");
000274  e28f0f52          ADR      r0,|L1.964|
000278  ebfffffe          BL       uart_printf
;;;221    	s3c2410_gpio_cfgpin(CFG_OUT);
00027c  e3a00001          MOV      r0,#1
000280  ebfffffe          BL       s3c2410_gpio_cfgpin
;;;222    	iic_init_8led();
000284  ebfffffe          BL       iic_init_8led
;;;223    	do{ //
000288  e1a00000          MOV      r0,r0
                  |L1.652|
;;;224    #if 1
;;;225    		ds18b20_reset();
00028c  ebfffffe          BL       ds18b20_reset
;;;226    		write_byte(0xcc);
000290  e3a000cc          MOV      r0,#0xcc
000294  ebfffffe          BL       write_byte
;;;227    		write_byte(0x44);
000298  e3a00044          MOV      r0,#0x44
00029c  ebfffffe          BL       write_byte
;;;228    		udelay(1000*800);
0002a0  e59f0130          LDR      r0,|L1.984|
0002a4  ebfffffe          BL       udelay
;;;229    		ds18b20_reset();
0002a8  ebfffffe          BL       ds18b20_reset
;;;230    		write_byte(0xcc);
0002ac  e3a000cc          MOV      r0,#0xcc
0002b0  ebfffffe          BL       write_byte
;;;231    		write_byte(0xbe);
0002b4  e3a000be          MOV      r0,#0xbe
0002b8  ebfffffe          BL       write_byte
;;;232    
;;;233    		a = read_byte();
0002bc  ebfffffe          BL       read_byte
0002c0  e1a04000          MOV      r4,r0
;;;234    		b = read_byte(); 
0002c4  ebfffffe          BL       read_byte
0002c8  e1a05000          MOV      r5,r0
;;;235    				
;;;236    	//	uart_printf("a = %X\r",a);
;;;237    	//	uart_printf("b = %X\r",b);
;;;238    		t = b;
0002cc  e1a06005          MOV      r6,r5
;;;239    		t <<= 8;
0002d0  e1a05006          MOV      r5,r6
0002d4  e1a06406          LSL      r6,r6,#8
;;;240    		t = t | a;
0002d8  e1866004          ORR      r6,r6,r4
;;;241    
;;;242    		tt = t * 0.0625;
0002dc  e1a00006          MOV      r0,r6
0002e0  ebfffffe          BL       __aeabi_ui2d
0002e4  e58d0008          STR      r0,[sp,#8]
0002e8  e58d100c          STR      r1,[sp,#0xc]
0002ec  e28f00e8          ADR      r0,|L1.988|
0002f0  e890000c          LDM      r0,{r2,r3}
0002f4  e59d0008          LDR      r0,[sp,#8]
0002f8  ebfffffe          BL       __aeabi_dmul
0002fc  e88d0003          STM      sp,{r0,r1}
000300  ebfffffe          BL       __aeabi_d2f
000304  e1a08000          MOV      r8,r0
;;;243       		tt = tt * 1 + 0.5; //放大10倍输出并四舍五入
000308  e3a015fe          MOV      r1,#0x3f800000
00030c  e1a00008          MOV      r0,r8
000310  ebfffffe          BL       __aeabi_fmul
000314  e1a07000          MOV      r7,r0
000318  ebfffffe          BL       __aeabi_f2d
00031c  e58d0008          STR      r0,[sp,#8]
000320  e58d100c          STR      r1,[sp,#0xc]
000324  e28f00b8          ADR      r0,|L1.996|
000328  e890000c          LDM      r0,{r2,r3}
00032c  e59d0008          LDR      r0,[sp,#8]
000330  ebfffffe          BL       __aeabi_dadd
000334  e88d0003          STM      sp,{r0,r1}
000338  ebfffffe          BL       __aeabi_d2f
00033c  e1a08000          MOV      r8,r0
;;;244    		uart_printf(" The current temperature is: %5.4fC\r",tt);
000340  e1a00008          MOV      r0,r8
000344  ebfffffe          BL       __aeabi_f2d
000348  e58d0008          STR      r0,[sp,#8]
00034c  e58d100c          STR      r1,[sp,#0xc]
000350  e1a03001          MOV      r3,r1
000354  e1a02000          MOV      r2,r0
000358  e28f008c          ADR      r0,|L1.1004|
00035c  ebfffffe          BL       uart_printf
;;;245    		temp = (int)tt;
000360  e1a00008          MOV      r0,r8
000364  ebfffffe          BL       __aeabi_f2iz
000368  e1a09000          MOV      r9,r0
;;;246    		iic_write_8led(0x70, 0x10, f_szDigital[(temp%10)]);	 //0
00036c  e3a0100a          MOV      r1,#0xa
000370  e1a00009          MOV      r0,r9
000374  ebfffffe          BL       __aeabi_idivmod
000378  e59f0094          LDR      r0,|L1.1044|
00037c  e7d07001          LDRB     r7,[r0,r1]
000380  e1a02007          MOV      r2,r7
000384  e3a01010          MOV      r1,#0x10
000388  e3a00070          MOV      r0,#0x70
00038c  ebfffffe          BL       iic_write_8led
;;;247    		iic_write_8led(0x70, 0x11, f_szDigital[temp/10]);
000390  e3a0100a          MOV      r1,#0xa
000394  e1a00009          MOV      r0,r9
000398  ebfffffe          BL       __aeabi_idivmod
00039c  e59f1070          LDR      r1,|L1.1044|
0003a0  e7d17000          LDRB     r7,[r1,r0]
0003a4  e1a02007          MOV      r2,r7
0003a8  e3a01011          MOV      r1,#0x11
0003ac  e3a00070          MOV      r0,#0x70
0003b0  ebfffffe          BL       iic_write_8led
;;;248     #endif	
;;;249    	}while(1); //
0003b4  eaffffb4          B        |L1.652|
                  |L1.952|
0003b8  0000f7ff          DCD      0x0000f7ff
                  |L1.956|
0003bc  6572720a          DCB      "err\n"
0003c0  00000000          DCB      "\0\0\0\0"
                  |L1.964|
0003c4  2054656d          DCB      " Tem"
0003c8  70657261          DCB      "pera"
0003cc  74757265          DCB      "ture"
0003d0  20546573          DCB      " Tes"
0003d4  74210a00          DCB      "t!\n\0"
                  |L1.984|
0003d8  000c3500          DCD      0x000c3500
                  |L1.988|
0003dc  00000000
0003e0  3fb00000          DCFD     0x3fb0000000000000 ; 0.0625
                  |L1.996|
0003e4  00000000
0003e8  3fe00000          DCFD     0x3fe0000000000000 ; 0.5
                  |L1.1004|
0003ec  20546865          DCB      " The"
0003f0  20637572          DCB      " cur"
0003f4  72656e74          DCB      "rent"
0003f8  2074656d          DCB      " tem"
0003fc  70657261          DCB      "pera"
000400  74757265          DCB      "ture"
000404  2069733a          DCB      " is:"
000408  2025352e          DCB      " %5."
00040c  3466430d          DCB      "4fC\r"
000410  00000000          DCB      "\0\0\0\0"
                  |L1.1044|
000414  00000000          DCD      f_szDigital
                          ENDP


                          AREA ||.data||, DATA, ALIGN=0

                  f_szDigital
000000  fc60daf2          DCB      0xfc,0x60,0xda,0xf2
000004  66b6bee0          DCB      0x66,0xb6,0xbe,0xe0
000008  fef6              DCB      0xfe,0xf6

⌨️ 快捷键说明

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