📄 ds18b20.txt
字号:
;;;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 + -