📄 ds18b20.txt
字号:
000244 e3a04000 MOV r4,#0
;;;194 s3c2410_gpio_cfgpin(CFG_OUT);
000248 e3a00001 MOV r0,#1
00024c ebfffffe BL s3c2410_gpio_cfgpin
;;;195 s3c2410_gpio_pullup(0);
000250 e3a00000 MOV r0,#0
000254 ebfffffe BL s3c2410_gpio_pullup
;;;196 for(i=0; i<8; i++)
000258 e3a03000 MOV r3,#0
00025c ea000013 B |L1.688|
|L1.608|
;;;197 {
;;;198 data >>= 1;
000260 e1a040c4 ASR r4,r4,#1
;;;199 s3c2410_gpio_cfgpin(CFG_OUT);
000264 e3a00001 MOV r0,#1
000268 ebfffffe BL s3c2410_gpio_cfgpin
;;;200 //s3c2410_gpio_setpin(1);
;;;201 //udelay(6);
;;;202 s3c2410_gpio_setpin(0);
00026c e3a00000 MOV r0,#0
000270 ebfffffe BL s3c2410_gpio_setpin
;;;203 i = i;
000274 e1a00000 MOV r0,r0
;;;204 s3c2410_gpio_setpin(1);
000278 e3a00001 MOV r0,#1
00027c ebfffffe BL s3c2410_gpio_setpin
;;;205 i = i;
000280 e1a00000 MOV r0,r0
;;;206 s3c2410_gpio_cfgpin(CFG_IN);
000284 e3a00000 MOV r0,#0
000288 ebfffffe BL s3c2410_gpio_cfgpin
;;;207 if(s3c2410_gpio_getpin(DQ))
00028c e3a00b02 MOV r0,#0x800
000290 ebfffffe BL s3c2410_gpio_getpin
000294 e3500000 CMP r0,#0
000298 0a000001 BEQ |L1.676|
;;;208 data |= 0x80;
00029c e3844080 ORR r4,r4,#0x80
0002a0 ea000000 B |L1.680|
|L1.676|
;;;209 else
;;;210 data &= 0x7f;
0002a4 e204407f AND r4,r4,#0x7f
|L1.680|
0002a8 e2830001 ADD r0,r3,#1 ;196
0002ac e20030ff AND r3,r0,#0xff ;196
|L1.688|
0002b0 e3530008 CMP r3,#8 ;196
0002b4 baffffe9 BLT |L1.608|
;;;211 // udelay(2);
;;;212 //s3c2410_gpio_cfgpin(CFG_OUT);
;;;213 //s3c2410_gpio_pullup(0);
;;;214 //s3c2410_gpio_setpin(1);
;;;215 //
;;;216 }
;;;217 udelay(2);
0002b8 e3a00002 MOV r0,#2
0002bc ebfffffe BL udelay
;;;218 // s3c2410_gpio_cfgpin(CFG_OUT);
;;;219 // s3c2410_gpio_pullup(0);
;;;220 // s3c2410_gpio_setpin(1);
;;;221 return data;
0002c0 e1a00004 MOV r0,r4
0002c4 e8bd4010 POP {r4,lr}
;;;222 }
0002c8 e12fff1e BX lr
;;;223
ENDP
temperature_test PROC
;;;233 void temperature_test()
;;;234 {
0002cc e92d5fff PUSH {r0-r12,lr}
;;;235 unsigned int a = 0, b = 0,t = 0;
0002d0 e3a04000 MOV r4,#0
0002d4 e3a05000 MOV r5,#0
0002d8 e3a06000 MOV r6,#0
;;;236 float tt;
;;;237 int temp = 0,ret,i;
0002dc e3a07000 MOV r7,#0
;;;238 uart_printf(" Temperature Test!\n");
0002e0 e28f0f72 ADR r0,|L1.1200|
0002e4 ebfffffe BL uart_printf
;;;239 s3c2410_gpio_cfgpin(CFG_OUT);
0002e8 e3a00001 MOV r0,#1
0002ec ebfffffe BL s3c2410_gpio_cfgpin
;;;240 iic_init_8led();
0002f0 ebfffffe BL iic_init_8led
;;;241 do{
0002f4 e1a00000 MOV r0,r0
|L1.760|
;;;242 ret = ds18b20_reset();
0002f8 ebfffffe BL ds18b20_reset
0002fc e1a08000 MOV r8,r0
;;;243 if (ret == -1)
000300 e3780001 CMN r8,#1
000304 1a000001 BNE |L1.784|
;;;244 return ;
;;;245 write_byte(0xcc);
;;;246 write_byte(0x44);
;;;247 udelay(1000*800);
;;;248 ds18b20_reset();
;;;249 write_byte(0xcc);
;;;250 write_byte(0xbe);
;;;251
;;;252 a = read_byte();
;;;253 b = read_byte();
;;;254
;;;255 t = b;
;;;256 t <<= 8;
;;;257 t = t | a;
;;;258
;;;259 tt = t * 0.0625;
;;;260 tt = tt * 1 + 0.5; //放大10倍输出并四舍五入
;;;261 uart_printf(" The current temperature is: %5.4fC\r",tt);
;;;262 temp = (int)tt;
;;;263 iic_write_8led(0x70, 0x10, f_szDigital[(temp%10)]); //0
;;;264 iic_write_8led(0x70, 0x11, f_szDigital[temp/10]);
;;;265 if (temp >= Warning)
;;;266 {
;;;267 for(i = 0; i < 10; i++ )
;;;268 {
;;;269 iic_write_8led(0x70, 0x12, f_szDigital[8]);
;;;270 beep_on_off(temp);
;;;271 udelay(1000);
;;;272 iic_write_8led(0x70, 0x12, f_szDigital[0]);
;;;273 beep_on_off(temp);
;;;274 udelay(1000);
;;;275 }
;;;276 }
;;;277 }while(1);
;;;278 }
000308 e8bd5fff POP {r0-r12,lr}
00030c e12fff1e BX lr
|L1.784|
000310 e3a000cc MOV r0,#0xcc ;245
000314 ebfffffe BL write_byte
000318 e3a00044 MOV r0,#0x44 ;246
00031c ebfffffe BL write_byte
000320 e59f019c LDR r0,|L1.1220|
000324 ebfffffe BL udelay
000328 ebfffffe BL ds18b20_reset
00032c e3a000cc MOV r0,#0xcc ;249
000330 ebfffffe BL write_byte
000334 e3a000be MOV r0,#0xbe ;250
000338 ebfffffe BL write_byte
00033c ebfffffe BL read_byte
000340 e1a04000 MOV r4,r0 ;252
000344 ebfffffe BL read_byte
000348 e1a05000 MOV r5,r0 ;253
00034c e1a06005 MOV r6,r5 ;255
000350 e1a05006 MOV r5,r6 ;256
000354 e1a06406 LSL r6,r6,#8 ;256
000358 e1866004 ORR r6,r6,r4 ;257
00035c e1a00006 MOV r0,r6 ;259
000360 ebfffffe BL __aeabi_ui2d
000364 e58d0008 STR r0,[sp,#8] ;259
000368 e58d100c STR r1,[sp,#0xc] ;259
00036c e28f0f55 ADR r0,|L1.1224|
000370 e890000c LDM r0,{r2,r3} ;259
000374 e59d0008 LDR r0,[sp,#8] ;259
000378 ebfffffe BL __aeabi_dmul
00037c e88d0003 STM sp,{r0,r1} ;259
000380 ebfffffe BL __aeabi_d2f
000384 e1a0a000 MOV r10,r0 ;259
000388 e3a015fe MOV r1,#0x3f800000 ;260
00038c e1a0000a MOV r0,r10 ;260
000390 ebfffffe BL __aeabi_fmul
000394 e1a0b000 MOV r11,r0 ;260
000398 ebfffffe BL __aeabi_f2d
00039c e58d0008 STR r0,[sp,#8] ;260
0003a0 e58d100c STR r1,[sp,#0xc] ;260
0003a4 e28f0f49 ADR r0,|L1.1232|
0003a8 e890000c LDM r0,{r2,r3} ;260
0003ac e59d0008 LDR r0,[sp,#8] ;260
0003b0 ebfffffe BL __aeabi_dadd
0003b4 e88d0003 STM sp,{r0,r1} ;260
0003b8 ebfffffe BL __aeabi_d2f
0003bc e1a0a000 MOV r10,r0 ;260
0003c0 e1a0000a MOV r0,r10 ;261
0003c4 ebfffffe BL __aeabi_f2d
0003c8 e58d0008 STR r0,[sp,#8] ;261
0003cc e58d100c STR r1,[sp,#0xc] ;261
0003d0 e1a03001 MOV r3,r1 ;261
0003d4 e1a02000 MOV r2,r0 ;261
0003d8 e28f00f8 ADR r0,|L1.1240|
0003dc ebfffffe BL uart_printf
0003e0 e1a0000a MOV r0,r10 ;262
0003e4 ebfffffe BL __aeabi_f2iz
0003e8 e1a07000 MOV r7,r0 ;262
0003ec e3a0100a MOV r1,#0xa ;263
0003f0 e1a00007 MOV r0,r7 ;263
0003f4 ebfffffe BL __aeabi_idivmod
0003f8 e59f0100 LDR r0,|L1.1280|
0003fc e7d0b001 LDRB r11,[r0,r1] ;263
000400 e1a0200b MOV r2,r11 ;263
000404 e3a01010 MOV r1,#0x10 ;263
000408 e3a00070 MOV r0,#0x70 ;263
00040c ebfffffe BL iic_write_8led
000410 e3a0100a MOV r1,#0xa ;264
000414 e1a00007 MOV r0,r7 ;264
000418 ebfffffe BL __aeabi_idivmod
00041c e59f10dc LDR r1,|L1.1280|
000420 e7d1b000 LDRB r11,[r1,r0] ;264
000424 e1a0200b MOV r2,r11 ;264
000428 e3a01011 MOV r1,#0x11 ;264
00042c e3a00070 MOV r0,#0x70 ;264
000430 ebfffffe BL iic_write_8led
000434 e357001e CMP r7,#0x1e ;265
000438 ba000016 BLT |L1.1176|
00043c e3a09000 MOV r9,#0 ;267
000440 ea000012 B |L1.1168|
|L1.1092|
000444 e59f00b4 LDR r0,|L1.1280|
000448 e5d02008 LDRB r2,[r0,#8] ;269 ; f_szDigital
00044c e3a01012 MOV r1,#0x12 ;269
000450 e3a00070 MOV r0,#0x70 ;269
000454 ebfffffe BL iic_write_8led
000458 e1a00007 MOV r0,r7 ;270
00045c ebfffffe BL beep_on_off
000460 e3a00ffa MOV r0,#0x3e8 ;271
000464 ebfffffe BL udelay
000468 e59f0090 LDR r0,|L1.1280|
00046c e5d02000 LDRB r2,[r0,#0] ;272 ; f_szDigital
000470 e3a01012 MOV r1,#0x12 ;272
000474 e3a00070 MOV r0,#0x70 ;272
000478 ebfffffe BL iic_write_8led
00047c e1a00007 MOV r0,r7 ;273
000480 ebfffffe BL beep_on_off
000484 e3a00ffa MOV r0,#0x3e8 ;274
000488 ebfffffe BL udelay
00048c e2899001 ADD r9,r9,#1 ;267
|L1.1168|
000490 e359000a CMP r9,#0xa ;267
000494 baffffea BLT |L1.1092|
|L1.1176|
000498 eaffff96 B |L1.760|
|L1.1180|
00049c 21140000 DCD 0x21140000
|L1.1184|
0004a0 00002710 DCD 0x00002710
|L1.1188|
0004a4 0000f7ff DCD 0x0000f7ff
|L1.1192|
0004a8 20457272 DCB " Err"
0004ac 6f720a00 DCB "or\n\0"
|L1.1200|
0004b0 2054656d DCB " Tem"
0004b4 70657261 DCB "pera"
0004b8 74757265 DCB "ture"
0004bc 20546573 DCB " Tes"
0004c0 74210a00 DCB "t!\n\0"
|L1.1220|
0004c4 000c3500 DCD 0x000c3500
|L1.1224|
0004c8 00000000
0004cc 3fb00000 DCFD 0x3fb0000000000000 ; 0.0625
|L1.1232|
0004d0 00000000
0004d4 3fe00000 DCFD 0x3fe0000000000000 ; 0.5
|L1.1240|
0004d8 20546865 DCB " The"
0004dc 20637572 DCB " cur"
0004e0 72656e74 DCB "rent"
0004e4 2074656d DCB " tem"
0004e8 70657261 DCB "pera"
0004ec 74757265 DCB "ture"
0004f0 2069733a DCB " is:"
0004f4 2025352e DCB " %5."
0004f8 3466430d DCB "4fC\r"
0004fc 00000000 DCB "\0\0\0\0"
|L1.1280|
000500 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 + -