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 + -
显示快捷键?