We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I wrote a program compress time to long. But some output give to much ( outout asm ). How can I reduce unuse code. see output below. my source.
extern unsigned char convBcd2Hex(unsigned char c); void convert( void ) { unsigned long dwTmp; dwTmp = convBcd2Hex( sClock[YEAR] ); // 4 year _lrol_( dwTmp, 4 ); dwTmp = dwTmp | convBcd2Hex( sClock[MONTH] ); // 4 month _lrol_( dwTmp, 5 ); dwTmp = dwTmp | convBcd2Hex( sClock[DAY] ); // 5 day _lrol_( dwTmp, 5 ); dwTmp = dwTmp | convBcd2Hex( sClock[HOUR] ); // 5 hour _lrol_( dwTmp, 6 ); dwTmp = dwTmp | convBcd2Hex( sClock[MINUTE]); // 6 minute _lrol_( dwTmp, 6 ); dwTmp = dwTmp | convBcd2Hex( sClock[SECOND]); // 6 second }
; SOURCE LINE # 140 001F AF00 E MOV R7,sClock+06H 0021 120000 R LCALL _convBcd2Hex 0024 E4 CLR A 0025 8F00 R MOV dwTmp+03H,R7 0027 F500 R MOV dwTmp+02H,A 0029 F500 R MOV dwTmp+01H,A 002B F500 R MOV dwTmp,A ; SOURCE LINE # 141 002D AE00 R MOV R6,dwTmp+02H 002F AD00 R MOV R5,dwTmp+01H 0031 AC00 R MOV R4,dwTmp 0033 7804 MOV R0,#04H 0035 120000 E LCALL ?C?LROL 0038 AF00 E MOV R7,sClock+05H 003A 120000 R LCALL _convBcd2Hex 003D E4 CLR A 003E EF MOV A,R7 003F 4500 R ORL A,dwTmp+03H 0041 F500 R MOV dwTmp+03H,A 0043 E500 R MOV A,dwTmp+02H + 0045 F500 R MOV dwTmp+02H,A | 0047 E500 R MOV A,dwTmp+01H |-- How can I reduct this code? 0049 F500 R MOV dwTmp+01H,A | 004B E500 R MOV A,dwTmp | 004D F500 R MOV dwTmp,A + ; SOURCE LINE # 142 004F AF00 R MOV R7,dwTmp+03H 0051 AE00 R MOV R6,dwTmp+02H 0053 AD00 R MOV R5,dwTmp+01H 0055 FC MOV R4,A 0056 7805 MOV R0,#05H 0058 120000 E LCALL ?C?LROL 005B AF00 E MOV R7,sClock+04H 005D 120000 R LCALL _convBcd2Hex 0060 E4 CLR A 0061 EF MOV A,R7 0062 4500 R ORL A,dwTmp+03H 0064 F500 R MOV dwTmp+03H,A 0066 E500 R MOV A,dwTmp+02H + 0068 F500 R MOV dwTmp+02H,A | 006A E500 R MOV A,dwTmp+01H |-- How can I reduct this code? 006C F500 R MOV dwTmp+01H,A | 006E E500 R MOV A,dwTmp | 0070 F500 R MOV dwTmp,A +