resource.lst

来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LST 代码 · 共 310 行

LST
310
字号
   1               		.file	"Resource.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 101               	.global	Os_Enter_Sum
 102               	.global	Os_Enter_Sum
 103               		.section .bss
 106               	Os_Enter_Sum:
 107 0000 00        		.skip 1,0
 108               		.text
 112               	.global	HexToBcd
 114               	HexToBcd:
   1:driver/Resource.c **** /**********************************************
   2:driver/Resource.c **** 公司名称:
   3:driver/Resource.c **** 文 件 名:
   4:driver/Resource.c **** 版 本 号:
   5:driver/Resource.c **** 程序设计:
   6:driver/Resource.c **** 说    明:几种不同的延时、BCD处理、小数点处理函数
   7:driver/Resource.c **** 完成日期:
   8:driver/Resource.c **** 修改日期:
   9:driver/Resource.c **** 功能摘要:	
  10:driver/Resource.c **** ***********************************************/
  11:driver/Resource.c **** #define  _Resource
  12:driver/Resource.c **** #include"Includes.h"
  13:driver/Resource.c **** 
  14:driver/Resource.c **** volatile uint8 	Os_Enter_Sum = 0;
  15:driver/Resource.c **** void    HexToBcd(uint8 *pBuf,uint16 temp);             //十六进制BCD码转换
  16:driver/Resource.c **** void    DealZero(uint8 *pBuf);
  17:driver/Resource.c **** void    DoPot(uint8 *pBuf,uint32 temp);
  18:driver/Resource.c **** uint16   DealRms(uint8 *pBuf,uint32 Kval);
  19:driver/Resource.c **** 
  20:driver/Resource.c **** //--------------------------------
  21:driver/Resource.c **** void    HexToBcd(uint8 *pBuf,uint16 temp)
  22:driver/Resource.c **** {
 116               	.LM1:
 117               	/* prologue: frame size=0 */
 118               	/* prologue end (size=0) */
 119 0000 FC01      		movw r30,r24
 120 0002 DC01      		movw r26,r24
 121 0004 83E0      		ldi r24,lo8(3)
 122               	.L5:
  23:driver/Resource.c ****     uint8 i;
  24:driver/Resource.c ****     for (i=0; i<4; i++) {pBuf[i] = 0;}
 124               	.LM2:
 125 0006 1D92      		st X+,__zero_reg__
 126 0008 8150      		subi r24,lo8(-(-1))
 127 000a 87FF      		sbrs r24,7
 128 000c FCCF      		rjmp .L5
  25:driver/Resource.c ****     while (temp >= 1000){temp -= 1000; pBuf[3]++;}
 130               	.LM3:
 131 000e 83E0      		ldi r24,hi8(1000)
 132 0010 683E      		cpi r22,lo8(1000)
 133 0012 7807      		cpc r23,r24
 134 0014 48F0      		brlo .L18
 135 0016 8381      		ldd r24,Z+3
 136               	.L8:
 137 0018 685E      		subi r22,lo8(-(-1000))
 138 001a 7340      		sbci r23,hi8(-(-1000))
 139 001c 8F5F      		subi r24,lo8(-(1))
 140 001e 93E0      		ldi r25,hi8(1000)
 141 0020 683E      		cpi r22,lo8(1000)
 142 0022 7907      		cpc r23,r25
 143 0024 C8F7      		brsh .L8
 144 0026 8383      		std Z+3,r24
 145               	.L18:
  26:driver/Resource.c ****     while (temp >= 100) {temp -= 100; pBuf[2]++;}     
 147               	.LM4:
 148 0028 6436      		cpi r22,100
 149 002a 7105      		cpc r23,__zero_reg__
 150 002c 40F0      		brlo .L20
 151 002e 8281      		ldd r24,Z+2
 152               	.L11:
 153 0030 6456      		subi r22,lo8(-(-100))
 154 0032 7040      		sbci r23,hi8(-(-100))
 155 0034 8F5F      		subi r24,lo8(-(1))
 156 0036 6436      		cpi r22,100
 157 0038 7105      		cpc r23,__zero_reg__
 158 003a D0F7      		brsh .L11
 159 003c 8283      		std Z+2,r24
 160               	.L20:
  27:driver/Resource.c ****     while (temp >= 10)  {temp -= 10; pBuf[1]++;}    
 162               	.LM5:
 163 003e 6A30      		cpi r22,10
 164 0040 7105      		cpc r23,__zero_reg__
 165 0042 40F0      		brlo .L22
 166 0044 8181      		ldd r24,Z+1
 167               	.L14:
 168 0046 6A50      		subi r22,lo8(-(-10))
 169 0048 7040      		sbci r23,hi8(-(-10))
 170 004a 8F5F      		subi r24,lo8(-(1))
 171 004c 6A30      		cpi r22,10
 172 004e 7105      		cpc r23,__zero_reg__
 173 0050 D0F7      		brsh .L14
 174 0052 8183      		std Z+1,r24
 175               	.L22:
  28:driver/Resource.c ****     pBuf[0] = temp;
 177               	.LM6:
 178 0054 6083      		st Z,r22
 179               	/* epilogue: frame size=0 */
 180 0056 0895      		ret
 181               	/* epilogue end (size=1) */
 182               	/* function HexToBcd size 44 (43) */
 187               	.Lscope0:
 190               	.global	DealZero
 192               	DealZero:
  29:driver/Resource.c **** }
  30:driver/Resource.c **** //---------------------------------
  31:driver/Resource.c **** void    DealZero(uint8 *pBuf)
  32:driver/Resource.c **** {
 194               	.LM7:
 195               	/* prologue: frame size=0 */
 196               	/* prologue end (size=0) */
  33:driver/Resource.c ****     uint8 i;   
  34:driver/Resource.c **** 
  35:driver/Resource.c ****     for(i=3;i!=0;i--)
 198               	.LM8:
 199 0058 23E0      		ldi r18,lo8(3)
 200 005a 3FE2      		ldi r19,lo8(47)
 201 005c FC01      		movw r30,r24
 202 005e 3396      		adiw r30,3
 203               	.L32:
  36:driver/Resource.c ****     {
  37:driver/Resource.c ****        if (pBuf[i] == 0)
 205               	.LM9:
 206 0060 8081      		ld r24,Z
 207 0062 8823      		tst r24
 208 0064 29F4      		brne .L28
  38:driver/Resource.c ****        {
  39:driver/Resource.c ****          pBuf[i] = HIDE;         
 210               	.LM10:
 211 0066 3083      		st Z,r19
 213               	.LM11:
 214 0068 2150      		subi r18,lo8(-(-1))
 215 006a 3197      		sbiw r30,1
 216 006c 2223      		tst r18
 217 006e C1F7      		brne .L32
 218               	.L28:
 219 0070 0895      		ret
 220               	/* epilogue: frame size=0 */
 221               	/* epilogue: noreturn */
 222               	/* epilogue end (size=0) */
 223               	/* function DealZero size 13 (13) */
 228               	.Lscope1:
 232               	.global	DoPot
 234               	DoPot:
  40:driver/Resource.c ****        }
  41:driver/Resource.c ****        else
  42:driver/Resource.c ****        {
  43:driver/Resource.c ****          break; 
  44:driver/Resource.c ****        }
  45:driver/Resource.c ****      }
  46:driver/Resource.c **** }
  47:driver/Resource.c **** //---------------------------------
  48:driver/Resource.c **** void  DoPot(uint8 *pBuf,uint32 temp)
  49:driver/Resource.c **** {    
 236               	.LM12:
 237               	/* prologue: frame size=0 */
 238 0072 1F93      		push r17
 239 0074 CF93      		push r28
 240 0076 DF93      		push r29
 241               	/* prologue end (size=3) */
 242 0078 EC01      		movw r28,r24
 243 007a 9A01      		movw r18,r20
 244 007c AB01      		movw r20,r22
  50:driver/Resource.c ****     uint8 i = 3;
 246               	.LM13:
 247 007e 13E0      		ldi r17,lo8(3)
 248               	.L41:
  51:driver/Resource.c ****         
  52:driver/Resource.c ****     while (temp >= 10000)          //小数点处理
  53:driver/Resource.c ****    {
  54:driver/Resource.c **** 	  temp /= 10;
  55:driver/Resource.c ****       i--;	  
 250               	.LM14:
 251 0080 2031      		cpi r18,lo8(10000)
 252 0082 87E2      		ldi r24,hi8(10000)
 253 0084 3807      		cpc r19,r24
 254 0086 80E0      		ldi r24,hlo8(10000)
 255 0088 4807      		cpc r20,r24
 256 008a 80E0      		ldi r24,hhi8(10000)
 257 008c 5807      		cpc r21,r24
 258 008e 48F0      		brlo .L40
 260               	.LM15:
 261 0090 CA01      		movw r24,r20
 262 0092 B901      		movw r22,r18
 263 0094 2AE0      		ldi r18,lo8(10)
 264 0096 30E0      		ldi r19,hi8(10)
 265 0098 40E0      		ldi r20,hlo8(10)
 266 009a 50E0      		ldi r21,hhi8(10)
 267 009c 00D0      		rcall __udivmodsi4
 269               	.LM16:
 270 009e 1150      		subi r17,lo8(-(-1))
 271 00a0 EFCF      		rjmp .L41
 272               	.L40:
  56:driver/Resource.c **** 	}	
  57:driver/Resource.c ****     HexToBcd(pBuf,temp);    
 274               	.LM17:
 275 00a2 B901      		movw r22,r18
 276 00a4 CE01      		movw r24,r28
 277 00a6 ACDF      		rcall HexToBcd
  58:driver/Resource.c ****     if (i != 0)
 279               	.LM18:
 280 00a8 1123      		tst r17
 281 00aa 31F0      		breq .L34
  59:driver/Resource.c ****     {
  60:driver/Resource.c ****        pBuf[i] += 10;            //添加小数点
 283               	.LM19:
 284 00ac FE01      		movw r30,r28
 285 00ae E10F      		add r30,r17
 286 00b0 F11D      		adc r31,__zero_reg__
 287 00b2 8081      		ld r24,Z
 288 00b4 865F      		subi r24,lo8(-(10))
 289 00b6 8083      		st Z,r24
 290               	.L34:
 291               	/* epilogue: frame size=0 */
 292 00b8 DF91      		pop r29
 293 00ba CF91      		pop r28
 294 00bc 1F91      		pop r17
 295 00be 0895      		ret
 296               	/* epilogue end (size=4) */
 297               	/* function DoPot size 39 (32) */
 302               	.Lscope2:
 306               	.global	DealRms
 308               	DealRms:
  61:driver/Resource.c ****     }     
  62:driver/Resource.c **** }
  63:driver/Resource.c **** //----------------------------------
  64:driver/Resource.c **** uint16   DealRms(uint8 *pBuf,uint32 Kval)
  65:driver/Resource.c **** {
 310               	.LM20:
 311               	/* prologue: frame size=0 */
 312 00c0 EF92      		push r14
 313 00c2 FF92      		push r15
 314 00c4 0F93      		push r16
 315 00c6 1F93      		push r17
 316               	/* prologue end (size=4) */
 317 00c8 FC01      		movw r30,r24
 318 00ca 7A01      		movw r14,r20
 319 00cc 8B01      		movw r16,r22
  66:driver/Resource.c **** 	  uint16  temp1;
  67:driver/Resource.c **** 	  uint32  temp2;
  68:driver/Resource.c **** 
  69:driver/Resource.c **** 	  temp1 = (uint16)(*pBuf) << 8;
 321               	.LM21:
 322 00ce 8191      		ld r24,Z+
 323 00d0 9927      		clr r25
 324 00d2 982F      		mov r25,r24
 325 00d4 8827      		clr r24
  70:driver/Resource.c **** 	  pBuf++;
  71:driver/Resource.c **** 	  temp1 += *pBuf;
 327               	.LM22:
 328 00d6 2081      		ld r18,Z
 329 00d8 820F      		add r24,r18
 330 00da 911D      		adc r25,__zero_reg__
  72:driver/Resource.c **** 	       
  73:driver/Resource.c ****       temp2  = temp1 * Kval;
 332               	.LM23:
 333 00dc AA27      		clr r26
 334 00de BB27      		clr r27
 335 00e0 BC01      		movw r22,r24
 336 00e2 CD01      		movw r24,r26
 337 00e4 A801      		movw r20,r16
 338 00e6 9701      		movw r18,r14
 339 00e8 00D0      		rcall __mulsi3
 340 00ea DC01      		movw r26,r24
 341 00ec CB01      		movw r24,r22
  74:driver/Resource.c **** 	  temp1 = temp2 >> 16;
 343               	.LM24:
 344 00ee CD01      		movw r24,r26
 345 00f0 AA27      		clr r26
 346 00f2 BB27      		clr r27
 347               	/* epilogue: frame size=0 */
 348 00f4 1F91      		pop r17
 349 00f6 0F91      		pop r16
 350 00f8 FF90      		pop r15
 351 00fa EF90      		pop r14
 352 00fc 0895      		ret
 353               	/* epilogue end (size=5) */
 354               	/* function DealRms size 31 (22) */
 360               	.Lscope3:
 362               		.text
 364               	Letext:
 365               	/* File "driver/Resource.c": code  127 = 0x007f ( 110), prologues   7, epilogues  10 */
DEFINED SYMBOLS
                            *ABS*:00000000 Resource.c
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:106    .bss:00000000 Os_Enter_Sum
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:114    .text:00000000 HexToBcd
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:192    .text:00000058 DealZero
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:234    .text:00000072 DoPot
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:308    .text:000000c0 DealRms
C:\DOCUME~1\zgh\LOCALS~1\Temp/ccYZaaaa.s:364    .text:000000fe Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__udivmodsi4
__mulsi3

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?