📄 eeprom.lst
字号:
t --> Y+0
dec --> R20
00D6 940E023C CALL push_gset1
00D8 2F40 MOV R20,R16
00D9 9722 SBIW R28,2
(0156) /*--------------------------------------------------------------------
(0157) 函数全称:十进制强制转换为十六进制
(0158) 函数功能:
(0159) 注意事项:无
(0160) 提示说明:调用changeDToH(33),return 0x33
(0161) 输 入:
(0162) 返 回:uint8 hex
(0163) --------------------------------------------------------------------*/
(0164) uint8 changeDToH(uint8 dec)
(0165) {
(0166) uint8 hex;
(0167) uint8 t[2];
(0168) t[1]=dec/10;
00DA E01A LDI R17,0xA
00DB 2F04 MOV R16,R20
00DC 940E01F3 CALL div8u
00DE 8309 STD Y+1,R16
(0169) t[0]=dec%10;
00DF E01A LDI R17,0xA
00E0 2F04 MOV R16,R20
00E1 940E01F1 CALL mod8u
00E3 8308 STD Y+0,R16
(0170) hex=t[1]*16+t[0];
00E4 8029 LDD R2,Y+1
00E5 E180 LDI R24,0x10
00E6 9D82 MUL R24,R2
00E7 2D40 MOV R20,R0
00E8 0F40 ADD R20,R16
(0171) return hex;
00E9 2F04 MOV R16,R20
00EA 9622 ADIW R28,2
00EB 940E023F CALL pop_gset1
00ED 9508 RET
_converseDToH:
hex --> R20
t --> Y+0
dec --> R20
00EE 940E023C CALL push_gset1
00F0 2F40 MOV R20,R16
00F1 9722 SBIW R28,2
(0172) }
(0173) /*--------------------------------------------------------------------
(0174) 函数全称:十进制化为十六进制
(0175) 函数功能:
(0176) 注意事项:无
(0177) 提示说明:调用converseDToH(33),return 21
(0178) 输 入:
(0179) 返 回:uint8 hex
(0180) --------------------------------------------------------------------*/
(0181) uint8 converseDToH(uint8 dec)
(0182) {
(0183) uint8 hex;
(0184) uint8 t[2];
(0185) t[1]=dec/16;
00F2 2F84 MOV R24,R20
00F3 9582 SWAP R24
00F4 708F ANDI R24,0xF
00F5 8389 STD Y+1,R24
(0186) t[0]=dec%16;
00F6 E110 LDI R17,0x10
00F7 2F04 MOV R16,R20
00F8 940E01F1 CALL mod8u
00FA 8308 STD Y+0,R16
(0187) hex=t[1]*16+t[0];
00FB 8029 LDD R2,Y+1
00FC E180 LDI R24,0x10
00FD 9D82 MUL R24,R2
00FE 2D40 MOV R20,R0
00FF 0F40 ADD R20,R16
(0188) return hex;
0100 2F04 MOV R16,R20
0101 9622 ADIW R28,2
0102 940E023F CALL pop_gset1
0104 9508 RET
_changeHToD:
dec --> R20
t --> Y+0
hex --> R20
0105 940E023C CALL push_gset1
0107 2F40 MOV R20,R16
0108 9722 SBIW R28,2
(0189) }
(0190) /*--------------------------------------------------------------------
(0191) 函数全称:十六进制强制转换为十进制
(0192) 函数功能:
(0193) 注意事项:无
(0194) 提示说明:调用changeHToD(0x33),return 33
(0195) 输 入:
(0196) 返 回:uint8 dec
(0197) --------------------------------------------------------------------*/
(0198) uint8 changeHToD(uint8 hex)
(0199) {
(0200) uint8 dec;
(0201) uint8 t[2];
(0202) t[1]=hex/16;
0109 2F84 MOV R24,R20
010A 9582 SWAP R24
010B 708F ANDI R24,0xF
010C 8389 STD Y+1,R24
(0203) t[0]=hex%16;
010D E110 LDI R17,0x10
010E 2F04 MOV R16,R20
010F 940E01F1 CALL mod8u
0111 8308 STD Y+0,R16
(0204) dec=t[1]*10+t[0];
0112 8029 LDD R2,Y+1
0113 E08A LDI R24,0xA
0114 9D82 MUL R24,R2
0115 2D40 MOV R20,R0
0116 0F40 ADD R20,R16
(0205) return dec;
0117 2F04 MOV R16,R20
0118 9622 ADIW R28,2
0119 940E023F CALL pop_gset1
011B 9508 RET
_converseHToD:
dec --> R20
t --> Y+0
hex --> R20
011C 940E023C CALL push_gset1
011E 2F40 MOV R20,R16
011F 9722 SBIW R28,2
(0206) }
(0207) /*--------------------------------------------------------------------
(0208) 函数全称:十六进制化为十进制
(0209) 函数功能:
(0210) 注意事项:无
(0211) 提示说明:调用converseHToD(21),return 33
(0212) 输 入:
(0213) 返 回:uint8 dec
(0214) --------------------------------------------------------------------*/
(0215) uint8 converseHToD(uint8 hex)
(0216) {
(0217) uint8 dec;
(0218) uint8 t[2];
(0219) t[1]=hex/10;
0120 E01A LDI R17,0xA
0121 2F04 MOV R16,R20
0122 940E01F3 CALL div8u
0124 8309 STD Y+1,R16
(0220) t[0]=hex%10;
0125 E01A LDI R17,0xA
0126 2F04 MOV R16,R20
0127 940E01F1 CALL mod8u
0129 8308 STD Y+0,R16
(0221) dec=t[1]*16+t[0];
012A 8029 LDD R2,Y+1
012B E180 LDI R24,0x10
012C 9D82 MUL R24,R2
012D 2D40 MOV R20,R0
012E 0F40 ADD R20,R16
(0222) return dec;
012F 2F04 MOV R16,R20
0130 9622 ADIW R28,2
0131 940E023F CALL pop_gset1
0133 9508 RET
_main:
wrDat_ --> Y+10
wrDat --> R20
rdDat_ --> Y+2
i --> R20
0134 9762 SBIW R28,0x12
FILE: E:\ProductPro\M16SD\ICCAVR\EEPROM\EEPROM\EEPROM.C
(0001) #include<iom16v.h>
(0002) #include "E:\ICCAVR_H\CmmICC.H"
(0003)
(0004)
(0005) void main(void)
(0006) {
(0007) uint8 i;
(0008) sint16 wrDat=0x55;
0135 E545 LDI R20,0x55
0136 E050 LDI R21,0
(0009) uint8 wrDat_[]={1,2,3,4,5,6,7,8},rdDat_[8];
0137 E584 LDI R24,0x54
0138 E090 LDI R25,0
0139 01FE MOVW R30,R28
013A 963A ADIW R30,0xA
013B E008 LDI R16,0x8
013C E010 LDI R17,0
013D 93FA ST R31,-Y
013E 93EA ST R30,-Y
013F 939A ST R25,-Y
0140 938A ST R24,-Y
0141 940E0284 CALL asgncblk
(0010) DDRD=0xFF;
0143 EF8F LDI R24,0xFF
0144 BB81 OUT 0x11,R24
(0011) EEPROMwrite(0x01,wrDat);
0145 019A MOVW R18,R20
0146 E001 LDI R16,1
0147 E010 LDI R17,0
0148 940E02A4 CALL _EEPROMwrite
(0012) PORTD=EEPROMread(0x01);
014A E001 LDI R16,1
014B E010 LDI R17,0
014C 940E029D CALL _EEPROMread
014E BB02 OUT 0x12,R16
(0013) delay50ms(20);
014F E104 LDI R16,0x14
0150 E010 LDI R17,0
0151 DF0F RCALL _delay50ms
(0014) EEPROMWriteBytes(1,wrDat_,8);
0152 E088 LDI R24,0x8
0153 E090 LDI R25,0
0154 8399 STD Y+1,R25
0155 8388 STD Y+0,R24
0156 019E MOVW R18,R28
0157 5F26 SUBI R18,0xF6
0158 4F3F SBCI R19,0xFF
0159 E001 LDI R16,1
015A E010 LDI R17,0
015B 940E02D9 CALL _EEPROMWriteBytes
(0015) EEPROMReadBytes(1,rdDat_,8);
015D E088 LDI R24,0x8
015E E090 LDI R25,0
015F 8399 STD Y+1,R25
0160 8388 STD Y+0,R24
0161 019E MOVW R18,R28
0162 5F2E SUBI R18,0xFE
0163 4F3F SBCI R19,0xFF
0164 E001 LDI R16,1
0165 E010 LDI R17,0
0166 940E02B5 CALL _EEPROMReadBytes
(0016) for(i=0;i<7;i++)
0168 2744 CLR R20
0169 C00C RJMP 0x0176
(0017) {
(0018) delay50ms(20);
016A E104 LDI R16,0x14
016B E010 LDI R17,0
016C DEF4 RCALL _delay50ms
(0019) PORTD=rdDat_[i];
016D 01CE MOVW R24,R28
016E 9602 ADIW R24,2
016F 2FE4 MOV R30,R20
0170 27FF CLR R31
0171 0FE8 ADD R30,R24
0172 1FF9 ADC R31,R25
0173 8020 LDD R2,Z+0
0174 BA22 OUT 0x12,R2
0175 9543 INC R20
0176 3047 CPI R20,7
0177 F390 BCS 0x016A
(0020) }
(0021) while(1);
0178 CFFF RJMP 0x0178
(0022) }
FILE: <library>
0179 9662 ADIW R28,0x12
017A 9508 RET
push_arg4:
017B 933A ST R19,-Y
017C 932A ST R18,-Y
push_arg2:
017D 931A ST R17,-Y
017E 930A ST R16,-Y
017F 9508 RET
div32u:
0180 94E8 BCLR 6
0181 C001 RJMP 0x0183
mod32u:
0182 9468 BSET 6
0183 D02F RCALL long_div_prolog
0184 24CC CLR R12
0185 C008 RJMP 0x018E
div32s:
0186 94E8 BCLR 6
0187 C001 RJMP 0x0189
mod32s:
0188 9468 BSET 6
0189 D029 RCALL long_div_prolog
018A FD37 SBRC R19,7
018B D053 RCALL neg_R16_R19
018C FDB7 SBRC R27,7
018D D05A RCALL neg_R24_R27
018E 2477 CLR R7
018F 2488 CLR R8
0190 2499 CLR R9
0191 24AA CLR R10
0192 24BB CLR R11
0193 D041 RCALL tst_R16_R19
0194 F0C1 BEQ 0x01AD
0195 D044 RCALL tst_R24_R27
0196 F0B1 BEQ 0x01AD
0197 E2E8 LDI R30,0x28
0198 0F00 LSL R16
0199 1F11 ROL R17
019A 1F22 ROL R18
019B 1F33 ROL R19
019C 1C77 ROL R7
019D 1C88 ROL R8
019E 1C99 ROL R9
019F 1CAA ROL R10
01A0 1CBB ROL R11
01A1 1688 CP R8,R24
01A2 0699 CPC R9,R25
01A3 06AA CPC R10,R26
01A4 06BB CPC R11,R27
01A5 F028 BCS 0x01AB
01A6 1A88 SUB R8,R24
01A7 0A99 SBC R9,R25
01A8 0AAA SBC R10,R26
01A9 0ABB SBC R11,R27
01AA 9503 INC R16
01AB 95EA DEC R30
01AC F759 BNE 0x0198
01AD F426 BRTC 0x01B2
01AE 2D08 MOV R16,R8
01AF 2D19 MOV R17,R9
01B0 2D2A MOV R18,R10
01B1 2D3B MOV R19,R11
01B2 C013 RJMP long_div_epilog
long_div_prolog:
01B3 927A ST R7,-Y
01B4 928A ST R8,-Y
01B5 929A ST R9,-Y
01B6 92AA ST R10,-Y
01B7 92BA ST R11,-Y
01B8 92CA ST R12,-Y
01B9 93EA ST R30,-Y
01BA 938A ST R24,-Y
01BB 939A ST R25,-Y
01BC 93AA ST R26,-Y
01BD 93BA ST R27,-Y
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -