util.txt
来自「工厂环境污染控制数据采集器」· 文本 代码 · 共 149 行
TXT
149 行
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 939] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\util.o --depend=.\obj\util.d --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips --omf_browse=.\obj\util.crf util.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
addmindata PROC
;;;13 void addmindata(char *rt, MEASUREDATA *md)
;;;14 {
000000 e92d4ff0 PUSH {r4-r11,lr}
000004 e24dd014 SUB sp,sp,#0x14
000008 e1a04000 MOV r4,r0
00000c e1a0b001 MOV r11,r1
;;;15 unsigned char fname[10];
;;;16 unsigned char tmp[8];
;;;17 unsigned int fh; //数据文件句柄
;;;18 unsigned int flen ; //文件的长度
;;;19 unsigned int fpagenum;
;;;20 unsigned int i;
;;;21 unsigned int curpos = 0;
000010 e3a09000 MOV r9,#0
;;;22 unsigned int curlinelen = 0;//当前行长
000014 e3a0a000 MOV r10,#0
;;;23
;;;24 //1.通过rt组织数据文件名yymmdd.Min
;;;25 inttoasc(rt[POS_YearL], &tmp[0], 2);
000018 e5d40001 LDRB r0,[r4,#1]
00001c e3a02002 MOV r2,#2
000020 e28d1000 ADD r1,sp,#0
000024 ebfffffe BL inttoasc
;;;26 strncpy(&fname[0], &tmp[0], 2);
000028 e3a02002 MOV r2,#2
00002c e28d1000 ADD r1,sp,#0
000030 e28d0008 ADD r0,sp,#8
000034 ebfffffe BL strncpy
;;;27 inttoasc(rt[POS_Month], &tmp[0], 2);
000038 e5d40002 LDRB r0,[r4,#2]
00003c e3a02002 MOV r2,#2
000040 e28d1000 ADD r1,sp,#0
000044 ebfffffe BL inttoasc
;;;28 strncpy(&fname[0], &tmp[0], 2);
000048 e3a02002 MOV r2,#2
00004c e28d1000 ADD r1,sp,#0
000050 e28d0008 ADD r0,sp,#8
000054 ebfffffe BL strncpy
;;;29 inttoasc(rt[POS_Date], &tmp[0], 2);
000058 e5d40003 LDRB r0,[r4,#3]
00005c e3a02002 MOV r2,#2
000060 e28d1000 ADD r1,sp,#0
000064 ebfffffe BL inttoasc
;;;30 strncpy(&fname[0], &tmp[0], 2);
000068 e3a02002 MOV r2,#2
00006c e28d1000 ADD r1,sp,#0
000070 e28d0008 ADD r0,sp,#8
000074 ebfffffe BL strncpy
;;;31 fname[6] = '.';
000078 e3a0002e MOV r0,#0x2e
00007c e5cd000e STRB r0,[sp,#0xe]
;;;32 fname[7] = 'm';
000080 e3a0006d MOV r0,#0x6d
000084 e5cd000f STRB r0,[sp,#0xf]
;;;33 fname[8] = 'i';
000088 e3a00069 MOV r0,#0x69
00008c e5cd0010 STRB r0,[sp,#0x10]
;;;34 fname[9] = 'n';
000090 e3a0006e MOV r0,#0x6e
000094 e5cd0011 STRB r0,[sp,#0x11]
;;;35 //2.打开文件
;;;36 fh=__fopen((char *)fname, FILE_A);
000098 e3a01008 MOV r1,#8
00009c e28d0008 ADD r0,sp,#8
0000a0 ebfffffe BL __fopen
0000a4 e1a05000 MOV r5,r0
;;;37 flen =__get_flen(fh);
0000a8 e3a0100d MOV r1,#0xd
0000ac e0010195 MUL r1,r5,r1
0000b0 e59f2074 LDR r2,|L1.300|
0000b4 e0820101 ADD r0,r2,r1,LSL #2
0000b8 e3a01000 MOV r1,#0
0000bc ebfffffe BL __getfsize
0000c0 e1a06000 MOV r6,r0
;;;38 if (flen > 0)
0000c4 e3560000 CMP r6,#0
0000c8 0a000004 BEQ |L1.224|
;;;39 fpagenum = (flen / MAX_CFG_BUF) + 1;
0000cc e3a01064 MOV r1,#0x64
0000d0 e1a00006 MOV r0,r6
0000d4 ebfffffe BL __aeabi_uidivmod
0000d8 e2807001 ADD r7,r0,#1
0000dc ea000000 B |L1.228|
|L1.224|
;;;40 else
;;;41 {
;;;42 //打开文件错误
;;;43 fpagenum = 0;
0000e0 e3a07000 MOV r7,#0
|L1.228|
;;;44 //addexceptionmsg();
;;;45 //showexception(char *rt, char * buf);
;;;46 }
;;;47 //3.通过时间关键字查找 ,参考ConfigGetKey
;;;48 for (i = 0; i < fpagenum; i++)
0000e4 e3a08000 MOV r8,#0
0000e8 ea000008 B |L1.272|
|L1.236|
;;;49 {
;;;50 //__setfpos(fh, lastpos);
;;;51 //__read(fh, cfgfilebuffer, MAX_CFG_BUF);
;;;52
;;;53 //__write(fh,tmp_buf1, 12);
;;;54 curlinelen = FileGetLine(fh, curpos, cfgfilebuffer, MAX_CFG_BUF);
0000ec e3a03064 MOV r3,#0x64
0000f0 e59f2038 LDR r2,|L1.304|
0000f4 e1a01009 MOV r1,r9
0000f8 e1a00005 MOV r0,r5
0000fc ebfffffe BL FileGetLine
000100 e1a0a000 MOV r10,r0
;;;55 curpos += curlinelen + 2;
000104 e28a0002 ADD r0,r10,#2
000108 e0899000 ADD r9,r9,r0
00010c e2888001 ADD r8,r8,#1 ;48
|L1.272|
000110 e1580007 CMP r8,r7 ;48
000114 3afffff4 BCC |L1.236|
;;;56
;;;57 //4.比较日期
;;;58
;;;59 //5. ...
;;;60 }
;;;61
;;;62 //....
;;;63
;;;64 //关闭文件
;;;65 __fclose(fh);
000118 e1a00005 MOV r0,r5
00011c ebfffffe BL __fclose
;;;66
;;;67 }
000120 e28dd014 ADD sp,sp,#0x14
000124 e8bd4ff0 POP {r4-r11,lr}
000128 e12fff1e BX lr
;;;68 /*void updatemindata(char *rt, MEASUREDATA *md);
ENDP
|L1.300|
00012c 00000000 DCD _iob
|L1.304|
000130 00000000 DCD cfgfilebuffer
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?