📄 18b202114.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 939] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\SDRAM\18b202114.o --depend=.\SDRAM\18b202114.d --device=DARMSS9 --apcs=interwork -O0 -I..\Common\Inc -I.\Include -IC:\Keil\ARM\INC\Samsung --omf_browse=.\SDRAM\18b202114.crf ..\18b202114.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
udelay PROC
;;;16 int i;
;;;17 num = num / 2;
000000 e1a01000 MOV r1,r0
000004 e0803fa0 ADD r3,r0,r0,LSR #31
000008 e1a000c3 ASR r0,r3,#1
;;;18 for(i=0;i<num;i++);
00000c e3a02000 MOV r2,#0
000010 ea000000 B |L1.24|
|L1.20|
000014 e2822001 ADD r2,r2,#1
|L1.24|
000018 e1520000 CMP r2,r0
00001c bafffffc BLT |L1.20|
;;;19 }
000020 e12fff1e BX lr
;;;20
ENDP
s3c2410_gpio_cfgpin PROC
;;;22 {
;;;23 if(state == CFG_IN)
000024 e3500000 CMP r0,#0
000028 1a000005 BNE |L1.68|
;;;24 rGPECON = (rGPECON & 0xff3fffff) | 0x00000000; //set GE11
00002c e3a01456 MOV r1,#0x56000000
000030 e5911040 LDR r1,[r1,#0x40]
000034 e3c11503 BIC r1,r1,#0xc00000
000038 e3a02456 MOV r2,#0x56000000
00003c e5821040 STR r1,[r2,#0x40]
000040 ea000005 B |L1.92|
|L1.68|
;;;25 else
;;;26 rGPECON = (rGPECON & 0xff3fffff) | 0x00400000; //set GE11
000044 e3a01456 MOV r1,#0x56000000
000048 e5911040 LDR r1,[r1,#0x40]
00004c e3c11503 BIC r1,r1,#0xc00000
000050 e3811501 ORR r1,r1,#0x400000
000054 e3a02456 MOV r2,#0x56000000
000058 e5821040 STR r1,[r2,#0x40]
|L1.92|
;;;27
;;;28 }
00005c e12fff1e BX lr
;;;29 void s3c2410_gpio_pullup(int state)
ENDP
s3c2410_gpio_pullup PROC
;;;30 {
;;;31 if(state == 0)
000060 e3500000 CMP r0,#0
000064 1a000006 BNE |L1.132|
;;;32 rGPEUP = rGPEUP & 0xf7ff;
000068 e3a01456 MOV r1,#0x56000000
00006c e5911048 LDR r1,[r1,#0x48]
000070 e59f22e8 LDR r2,|L1.864|
000074 e0011002 AND r1,r1,r2
000078 e3a02456 MOV r2,#0x56000000
00007c e5821048 STR r1,[r2,#0x48]
000080 ea000004 B |L1.152|
|L1.132|
;;;33 else
;;;34 rGPEUP = rGPEUP | 0x0800;
000084 e3a01456 MOV r1,#0x56000000
000088 e5911048 LDR r1,[r1,#0x48]
00008c e3811b02 ORR r1,r1,#0x800
000090 e3a02456 MOV r2,#0x56000000
000094 e5821048 STR r1,[r2,#0x48]
|L1.152|
;;;35 }
000098 e12fff1e BX lr
;;;36
ENDP
s3c2410_gpio_setpin PROC
;;;38 {
;;;39 if(bit == 0)
00009c e3500000 CMP r0,#0
0000a0 1a000006 BNE |L1.192|
;;;40 rGPEDAT = rGPEDAT & 0xf7ff;
0000a4 e3a01456 MOV r1,#0x56000000
0000a8 e5911044 LDR r1,[r1,#0x44]
0000ac e59f22ac LDR r2,|L1.864|
0000b0 e0011002 AND r1,r1,r2
0000b4 e3a02456 MOV r2,#0x56000000
0000b8 e5821044 STR r1,[r2,#0x44]
0000bc ea000004 B |L1.212|
|L1.192|
;;;41 else
;;;42 rGPEDAT = rGPEDAT | 0x0800;
0000c0 e3a01456 MOV r1,#0x56000000
0000c4 e5911044 LDR r1,[r1,#0x44]
0000c8 e3811b02 ORR r1,r1,#0x800
0000cc e3a02456 MOV r2,#0x56000000
0000d0 e5821044 STR r1,[r2,#0x44]
|L1.212|
;;;43
;;;44 }
0000d4 e12fff1e BX lr
;;;45 int s3c2410_gpio_getpin(int dq)
ENDP
s3c2410_gpio_getpin PROC
;;;46 {
0000d8 e1a01000 MOV r1,r0
;;;47 if((rGPEDAT & 0x0800) == 0x0)
0000dc e3a00456 MOV r0,#0x56000000
0000e0 e5900044 LDR r0,[r0,#0x44]
0000e4 e3100b02 TST r0,#0x800
0000e8 1a000001 BNE |L1.244|
;;;48 return 0;
0000ec e3a00000 MOV r0,#0
|L1.240|
;;;49 else
;;;50 return 1;
;;;51 }
0000f0 e12fff1e BX lr
|L1.244|
0000f4 e3a00001 MOV r0,#1 ;50
0000f8 eafffffc B |L1.240|
;;;52
ENDP
ds18b20_reset PROC
;;;54 int ds18b20_reset() //18b20总线复位 //ds18b20复位,返回0成功,返回1失败
;;;55 {
0000fc e92d4010 PUSH {r4,lr}
;;;56 int i,ret;
;;;57 s3c2410_gpio_cfgpin(CFG_OUT);
000100 e3a00001 MOV r0,#1
000104 ebfffffe BL s3c2410_gpio_cfgpin
;;;58 s3c2410_gpio_pullup(0);
000108 e3a00000 MOV r0,#0
00010c ebfffffe BL s3c2410_gpio_pullup
;;;59 s3c2410_gpio_setpin(1);
000110 e3a00001 MOV r0,#1
000114 ebfffffe BL s3c2410_gpio_setpin
;;;60 udelay(20);
000118 e3a00014 MOV r0,#0x14
00011c ebfffffe BL udelay
;;;61 s3c2410_gpio_setpin(0); //拉低数据线电平
000120 e3a00000 MOV r0,#0
000124 ebfffffe BL s3c2410_gpio_setpin
;;;62 udelay(600); //精确延时480us-960us
000128 e3a00f96 MOV r0,#0x258
00012c ebfffffe BL udelay
;;;63 s3c2410_gpio_setpin(1); //拉高电平
000130 e3a00001 MOV r0,#1
000134 ebfffffe BL s3c2410_gpio_setpin
;;;64 udelay(30); //精确延时15us-60us
000138 e3a0001e MOV r0,#0x1e
00013c ebfffffe BL udelay
;;;65 s3c2410_gpio_cfgpin(CFG_IN);
000140 e3a00000 MOV r0,#0
000144 ebfffffe BL s3c2410_gpio_cfgpin
;;;66 ret = s3c2410_gpio_getpin(DQ);
000148 e3a00b02 MOV r0,#0x800
00014c ebfffffe BL s3c2410_gpio_getpin
000150 e1a04000 MOV r4,r0
;;;67 if(ret)
000154 e3540000 CMP r4,#0
000158 0a000004 BEQ |L1.368|
;;;68 {
;;;69 uart_printf("err\n");
00015c e28f0c02 ADR r0,|L1.868|
000160 ebfffffe BL uart_printf
;;;70 return -1;
000164 e3e00000 MVN r0,#0
|L1.360|
000168 e8bd4010 POP {r4,lr}
;;;71 }
;;;72 else
;;;73 {
;;;74 uart_printf("OK!");
;;;75 }
;;;76 s3c2410_gpio_cfgpin(CFG_OUT);
;;;77 s3c2410_gpio_pullup(0);
;;;78 s3c2410_gpio_setpin(1);
;;;79 return ret;
;;;80 }
00016c e12fff1e BX lr
|L1.368|
000170 e28f0f7d ADR r0,|L1.876|
000174 ebfffffe BL uart_printf
000178 e3a00001 MOV r0,#1 ;76
00017c ebfffffe BL s3c2410_gpio_cfgpin
000180 e3a00000 MOV r0,#0 ;77
000184 ebfffffe BL s3c2410_gpio_pullup
000188 e3a00001 MOV r0,#1 ;78
00018c ebfffffe BL s3c2410_gpio_setpin
000190 e1a00004 MOV r0,r4 ;79
000194 eafffff3 B |L1.360|
;;;81
ENDP
write_byte PROC
;;;84 void write_byte(unsigned char data)//向18b20写一个字节
;;;85 {
000198 e92d4030 PUSH {r4,r5,lr}
00019c e1a04000 MOV r4,r0
;;;86 char i = 0;
0001a0 e3a05000 MOV r5,#0
;;;87 s3c2410_gpio_cfgpin(CFG_OUT);
0001a4 e3a00001 MOV r0,#1
0001a8 ebfffffe BL s3c2410_gpio_cfgpin
;;;88 s3c2410_gpio_pullup(1);
0001ac e3a00001 MOV r0,#1
0001b0 ebfffffe BL s3c2410_gpio_pullup
;;;89 for(i=0; i<8; i++){
0001b4 e1a00000 MOV r0,r0
0001b8 ea00000e B |L1.504|
|L1.444|
;;;90 s3c2410_gpio_setpin(0);
0001bc e3a00000 MOV r0,#0
0001c0 ebfffffe BL s3c2410_gpio_setpin
;;;91 //udelay(2);
;;;92 i = i;
0001c4 e1a00000 MOV r0,r0
;;;93 i = i;
0001c8 e1a00000 MOV r0,r0
;;;94 //s3c2410_gpio_setpin(1);
;;;95 s3c2410_gpio_setpin(data&0x01);
0001cc e2040001 AND r0,r4,#1
0001d0 ebfffffe BL s3c2410_gpio_setpin
;;;96 udelay(60);
0001d4 e3a0003c MOV r0,#0x3c
0001d8 ebfffffe BL udelay
;;;97 s3c2410_gpio_setpin(1);
0001dc e3a00001 MOV r0,#1
0001e0 ebfffffe BL s3c2410_gpio_setpin
;;;98 udelay(4);
0001e4 e3a00004 MOV r0,#4
0001e8 ebfffffe BL udelay
;;;99 data >>= 1;
0001ec e1a040c4 ASR r4,r4,#1
0001f0 e2850001 ADD r0,r5,#1 ;89
0001f4 e20050ff AND r5,r0,#0xff ;89
|L1.504|
0001f8 e3550008 CMP r5,#8 ;89
0001fc baffffee BLT |L1.444|
;;;100 }
;;;101 }
000200 e8bd4030 POP {r4,r5,lr}
000204 e12fff1e BX lr
;;;102 unsigned char read_byte(void)//从18b20读一个字节
ENDP
read_byte PROC
;;;103 {
000208 e92d4030 PUSH {r4,r5,lr}
;;;104 unsigned char i;
;;;105 unsigned char data=0;
00020c e3a05000 MOV r5,#0
;;;106 s3c2410_gpio_cfgpin(CFG_OUT);
000210 e3a00001 MOV r0,#1
000214 ebfffffe BL s3c2410_gpio_cfgpin
;;;107 s3c2410_gpio_pullup(0);
000218 e3a00000 MOV r0,#0
00021c ebfffffe BL s3c2410_gpio_pullup
;;;108 for(i=0; i<8; i++)
000220 e3a04000 MOV r4,#0
000224 ea000015 B |L1.640|
|L1.552|
;;;109 {
;;;110 data >>= 1;
000228 e1a050c5 ASR r5,r5,#1
;;;111 s3c2410_gpio_cfgpin(CFG_OUT);
00022c e3a00001 MOV r0,#1
000230 ebfffffe BL s3c2410_gpio_cfgpin
;;;112 s3c2410_gpio_setpin(0);
000234 e3a00000 MOV r0,#0
000238 ebfffffe BL s3c2410_gpio_setpin
;;;113 udelay(20);
00023c e3a00014 MOV r0,#0x14
000240 ebfffffe BL udelay
;;;114 s3c2410_gpio_setpin(1);
000244 e3a00001 MOV r0,#1
000248 ebfffffe BL s3c2410_gpio_setpin
;;;115 s3c2410_gpio_cfgpin(CFG_IN);
00024c e3a00000 MOV r0,#0
000250 ebfffffe BL s3c2410_gpio_cfgpin
;;;116 //udelay(10);
;;;117 if(s3c2410_gpio_getpin(DQ))
000254 e3a00b02 MOV r0,#0x800
000258 ebfffffe BL s3c2410_gpio_getpin
00025c e3500000 CMP r0,#0
000260 0a000001 BEQ |L1.620|
;;;118 data |= 0x80;
000264 e3855080 ORR r5,r5,#0x80
000268 ea000000 B |L1.624|
|L1.620|
;;;119 else
;;;120 data &= 0x7f;
00026c e205507f AND r5,r5,#0x7f
|L1.624|
;;;121 udelay(62);
000270 e3a0003e MOV r0,#0x3e
000274 ebfffffe BL udelay
000278 e2840001 ADD r0,r4,#1 ;108
00027c e20040ff AND r4,r0,#0xff ;108
|L1.640|
000280 e3540008 CMP r4,#8 ;108
000284 baffffe7 BLT |L1.552|
;;;122 //s3c2410_gpio_cfgpin(CFG_OUT);
;;;123 //s3c2410_gpio_pullup(0);
;;;124 //s3c2410_gpio_setpin(1);
;;;125 //udelay(10);
;;;126 }
;;;127 return data;
000288 e1a00005 MOV r0,r5
00028c e8bd4030 POP {r4,r5,lr}
;;;128 }
000290 e12fff1e BX lr
;;;129
ENDP
convert PROC
;;;130 void convert(void)
;;;131 {
000294 e92d4010 PUSH {r4,lr}
;;;132 ds18b20_reset();
000298 ebfffffe BL ds18b20_reset
;;;133 //udelay(100);
;;;134 write_byte(0xcc);
00029c e3a000cc MOV r0,#0xcc
0002a0 ebfffffe BL write_byte
;;;135 write_byte(0x44);
0002a4 e3a00044 MOV r0,#0x44
0002a8 ebfffffe BL write_byte
;;;136 }
0002ac e8bd4010 POP {r4,lr}
0002b0 e12fff1e BX lr
;;;137
ENDP
temp_read PROC
;;;138 void temp_read(void)
;;;139 {
0002b4 e92d41f0 PUSH {r4-r8,lr}
;;;140 unsigned char a,b;
;;;141 uchar i,j;
;;;142 for(j = 0;j < 4;j++)
0002b8 e3a07000 MOV r7,#0
0002bc ea000023 B |L1.848|
|L1.704|
;;;143 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -