📄 eeprom开机记忆存储实验.lst
字号:
030D 018A MOVW R16,R20
030E 940E03D8 CALL mod16u
0310 E624 LDI R18,0x64
0311 E030 LDI R19,0
0312 940E03DA CALL div16u
0314 93000104 STS Seg7_Led_Buf+2,R16
(0177) Seg7_Led_Buf[1]=(temp%100)/10;
0316 E624 LDI R18,0x64
0317 E030 LDI R19,0
0318 018A MOVW R16,R20
0319 940E03D8 CALL mod16u
031B E02A LDI R18,0xA
031C E030 LDI R19,0
031D 940E03DA CALL div16u
031F 93000103 STS Seg7_Led_Buf+1,R16
(0178) Seg7_Led_Buf[0]=temp%10;
0321 E02A LDI R18,0xA
0322 E030 LDI R19,0
0323 018A MOVW R16,R20
0324 940E03D8 CALL mod16u
0326 93000102 STS Seg7_Led_Buf,R16
(0179) Seg7_Led_Update();
0328 DDA4 RCALL _Seg7_Led_Update
(0180) }
0329 C076 RJMP 0x03A0
(0181) else
(0182) {
(0183) temp=data*1000;
032A E90D LDI R16,0x9D
032B E010 LDI R17,0
032C 940E041F CALL lpm32
032E 933A ST R19,-Y
032F 932A ST R18,-Y
0330 931A ST R17,-Y
0331 930A ST R16,-Y
0332 01FE MOVW R30,R28
0333 8424 LDD R2,Z+12
0334 8435 LDD R3,Z+13
0335 8446 LDD R4,Z+14
0336 8457 LDD R5,Z+15
0337 925A ST R5,-Y
0338 924A ST R4,-Y
0339 923A ST R3,-Y
033A 922A ST R2,-Y
033B 940E053A CALL empy32f
033D 01FE MOVW R30,R28
033E 8300 STD Z+0,R16
033F 8311 STD Z+1,R17
0340 8322 STD Z+2,R18
0341 8333 STD Z+3,R19
0342 01FE MOVW R30,R28
0343 8020 LDD R2,Z+0
0344 8031 LDD R3,Z+1
0345 8042 LDD R4,Z+2
0346 8053 LDD R5,Z+3
0347 925A ST R5,-Y
0348 924A ST R4,-Y
0349 923A ST R3,-Y
034A 922A ST R2,-Y
034B EA09 LDI R16,0xA9
034C E010 LDI R17,0
034D 940E041F CALL lpm32
034F 933A ST R19,-Y
0350 932A ST R18,-Y
0351 931A ST R17,-Y
0352 930A ST R16,-Y
0353 940E0506 CALL cmp32f
0355 F0CC BLT 0x036F
0356 01FE MOVW R30,R28
0357 8020 LDD R2,Z+0
0358 8031 LDD R3,Z+1
0359 8042 LDD R4,Z+2
035A 8053 LDD R5,Z+3
035B 925A ST R5,-Y
035C 924A ST R4,-Y
035D 923A ST R3,-Y
035E 922A ST R2,-Y
035F EA09 LDI R16,0xA9
0360 E010 LDI R17,0
0361 940E041F CALL lpm32
0363 933A ST R19,-Y
0364 932A ST R18,-Y
0365 931A ST R17,-Y
0366 930A ST R16,-Y
0367 940E04B0 CALL sub32f
0369 940E0433 CALL fp2int
036B 01B8 MOVW R22,R16
036C 5060 SUBI R22,0
036D 4870 SBCI R23,0x80
036E C008 RJMP 0x0377
036F 01FE MOVW R30,R28
0370 8100 LDD R16,Z+0
0371 8111 LDD R17,Z+1
0372 8122 LDD R18,Z+2
0373 8133 LDD R19,Z+3
0374 940E0433 CALL fp2int
0376 01B8 MOVW R22,R16
0377 01AB MOVW R20,R22
(0184) point_pos=3;
0378 E083 LDI R24,3
0379 93800101 STS point_pos,R24
(0185) Seg7_Led_Buf[3]=temp/1000;
037B EE28 LDI R18,0xE8
037C E033 LDI R19,3
037D 018A MOVW R16,R20
037E 940E03DA CALL div16u
0380 93000105 STS Seg7_Led_Buf+3,R16
(0186) Seg7_Led_Buf[2]=(temp%1000)/100;
0382 EE28 LDI R18,0xE8
0383 E033 LDI R19,3
0384 018A MOVW R16,R20
0385 940E03D8 CALL mod16u
0387 E624 LDI R18,0x64
0388 E030 LDI R19,0
0389 940E03DA CALL div16u
038B 93000104 STS Seg7_Led_Buf+2,R16
(0187) Seg7_Led_Buf[1]=(temp%100)/10;
038D E624 LDI R18,0x64
038E E030 LDI R19,0
038F 018A MOVW R16,R20
0390 940E03D8 CALL mod16u
0392 E02A LDI R18,0xA
0393 E030 LDI R19,0
0394 940E03DA CALL div16u
0396 93000103 STS Seg7_Led_Buf+1,R16
(0188) Seg7_Led_Buf[0]=temp%10;
0398 E02A LDI R18,0xA
0399 E030 LDI R19,0
039A 018A MOVW R16,R20
039B 940E03D8 CALL mod16u
039D 93000102 STS Seg7_Led_Buf,R16
(0189) Seg7_Led_Update();
039F DD2D RCALL _Seg7_Led_Update
(0190) }
(0191) point=0;
03A0 2422 CLR R2
03A1 92200100 STS point,R2
03A3 9624 ADIW R28,4
03A4 940E03F4 CALL pop_gset2
03A6 9624 ADIW R28,4
03A7 9508 RET
FILE: H:\MEGA128开发板\TS8900-M128\EEPROM开机记忆存储实验\EEPROM开机记忆存储实验\main.c
(0001) /************************************************
(0002) 文件:main.c
(0003) 用途:
(0004) 注意:内部8M晶振
(0005) ************************************************/
(0006)
(0007) #include "config.h"
(0008)
(0009) void EEPROM_write(unsigned int uiAddress,unsigned char ucData)
(0010) {
(0011) while(EECR&(1<<EEWE));
_EEPROM_write:
ucData --> R18
uiAddress --> R16
03A8 99E1 SBIC 0x1C,1
03A9 CFFE RJMP _EEPROM_write
(0012) EEAR = uiAddress;
03AA BB1F OUT 0x1F,R17
03AB BB0E OUT 0x1E,R16
(0013) EEDR = ucData;
03AC BB2D OUT 0x1D,R18
(0014) EECR |=(1<<EEMWE);
03AD 9AE2 SBI 0x1C,2
(0015) EECR |=(1<<EEWE);
03AE 9AE1 SBI 0x1C,1
03AF 9508 RET
(0016) }
(0017)
(0018) unsigned char EEPROM_read(unsigned int uiAddress)
(0019) {
(0020) while(EECR&(1<<EEWE));
_EEPROM_read:
uiAddress --> R16
03B0 99E1 SBIC 0x1C,1
03B1 CFFE RJMP _EEPROM_read
(0021) EEAR = uiAddress;
03B2 BB1F OUT 0x1F,R17
03B3 BB0E OUT 0x1E,R16
(0022) EECR |=(1<<EERE);
03B4 9AE0 SBI 0x1C,0
(0023) return EEDR;
03B5 B30D IN R16,0x1D
03B6 9508 RET
(0024) }
(0025)
(0026) void main(void)
(0027) {
(0028) unsigned char temp;
(0029) HC_595_init();
_main:
temp --> R20
03B7 940E00B0 CALL _HC_595_init
(0030)
(0031) temp=EEPROM_read(0x01);
03B9 E001 LDI R16,1
03BA E010 LDI R17,0
03BB DFF4 RCALL _EEPROM_read
03BC 2F40 MOV R20,R16
(0032) temp++;
03BD 9543 INC R20
(0033) EEPROM_write(0x01,temp);
03BE 2F24 MOV R18,R20
03BF E001 LDI R16,1
03C0 E010 LDI R17,0
03C1 DFE6 RCALL _EEPROM_write
03C2 C004 RJMP 0x03C7
(0034)
(0035) while(1)
(0036) {
(0037) Seg7_Led_display(temp);
03C3 2F04 MOV R16,R20
03C4 2711 CLR R17
03C5 940E0148 CALL _Seg7_Led_display
03C7 CFFB RJMP 0x03C3
03C8 9508 RET
FILE: H:\MEGA128开发板\TS8900-M128\EEPROM开机记忆存储实验\EEPROM开机记忆存储实验\spi.c
(0001) /************************************************
(0002) 文件:spi.c
(0003) 用途:SPI驱动
(0004) 注意:
(0005) ************************************************/
(0006) #include "config.h"
(0007) /*************************************************************************
(0008) ** 函数名称: spi_init(void)
(0009) ** 功能描述: SPI初始化
(0010) ** 输 入:
(0011) ** 输出 :
(0012) ** 全局变量: 无
(0013) ** 调用模块:
(0014) ** 说明:
(0015) ** 注意:
(0016) **************************************************************************/
(0017) void spi_init(void)
(0018) {
(0019) DDRB |= (1<<MOSI)|(1<<SCK)|(1<<SS);//设置MOSI,SCK输出
_spi_init:
03C9 B387 IN R24,0x17
03CA 6087 ORI R24,7
03CB BB87 OUT 0x17,R24
(0020) SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1);//使能SPI,主机模式
03CC E583 LDI R24,0x53
03CD B98D OUT 0x0D,R24
03CE 9508 RET
(0021) }
(0022) /*************************************************************************
(0023) ** 函数名称: SPI_MasterTransmit(char Data)
(0024) ** 功能描述: SPI主机发送数据
(0025) ** 输 入: Data 需要通过SPI传输的数据
(0026) ** 输出 :
(0027) ** 全局变量: 无
(0028) ** 调用模块:
(0029) ** 说明:
(0030) ** 注意:
(0031) **************************************************************************/
(0032) void SPI_MasterTransmit(char Data)
(0033) {
(0034) /* 启动数据传输 */
(0035) SPDR = Data;
_SPI_MasterTransmit:
Data --> R16
03CF B90F OUT 0x0F,R16
(0036) /* 等待传输结束 */
(0037) while(!(SPSR & (1<<SPIF)))
FILE: <library>
03D0 9B77 SBIS 0x0E,7
03D1 CFFE RJMP 0x03D0
03D2 9508 RET
push_arg4:
03D3 933A ST R19,-Y
03D4 932A ST R18,-Y
push_arg2:
03D5 931A ST R17,-Y
03D6 930A ST R16,-Y
03D7 9508 RET
mod16u:
03D8 9468 BSET 6
03D9 C001 RJMP xdiv16u
div16u:
03DA 94E8 BCLR 6
xdiv16u:
03DB 92EA ST R14,-Y
03DC 92FA ST R15,-Y
03DD 938A ST R24,-Y
03DE 24EE CLR R14
03DF 24FF CLR R15
03E0 E180 LDI R24,0x10
03E1 0F00 LSL R16
03E2 1F11 ROL R17
03E3 1CEE ROL R14
03E4 1CFF ROL R15
03E5 16E2 CP R14,R18
03E6 06F3 CPC R15,R19
03E7 F018 BCS 0x03EB
03E8 1AE2 SUB R14,R18
03E9 0AF3 SBC R15,R19
03EA 9503 INC R16
03EB 958A DEC R24
03EC F7A1 BNE 0x03E1
03ED F416 BRTC 0x03F0
03EE 2D0E MOV R16,R14
03EF 2D1F MOV R17,R15
03F0 9189 LD R24,Y+
03F1 90F9 LD R15,Y+
03F2 90E9 LD R14,Y+
03F3 9508 RET
pop_gset2:
03F4 E0E2 LDI R30,2
03F5 940C0403 JMP pop
push_gset5:
03F7 92FA ST R15,-Y
03F8 92EA ST R14,-Y
push_gset4:
03F9 92DA ST R13,-Y
03FA 92CA ST R12,-Y
push_gset3:
03FB 92BA ST R11,-Y
03FC 92AA ST R10,-Y
push_gset2:
03FD 937A ST R23,-Y
03FE 936A ST R22,-Y
push_gset1:
03FF 935A ST R21,-Y
0400 934A ST R20,-Y
0401 9508 RET
pop_gset1:
0402 E0E1 LDI R30,1
pop:
0403 9149 LD R20,Y+
0404 9159 LD R21,Y+
0405 FDE0 SBRC R30,0
0406 9508 RET
0407 9169 LD R22,Y+
0408 9179 LD R23,Y+
0409 FDE1 SBRC R30,1
040A 9508 RET
040B 90A9 LD R10,Y+
040C 90B9 LD R11,Y+
040D FDE2 SBRC R30,2
040E 9508 RET
040F 90C9 LD R12,Y+
0410 90D9 LD R13,Y+
0411 FDE3 SBRC R30,3
0412 9508 RET
0413 90E9 LD R14,Y+
0414 90F9 LD R15,Y+
0415 9508 RET
neg32:
0416 9500 COM R16
0417 9510 COM R17
0418 9520 COM R18
0419 9530 COM R19
041A 5F0F SUBI R16,0xFF
041B 4F1F SBCI R17,0xFF
041C 4F2F SBCI R18,0xFF
041D 4F3F SBCI R19,0xFF
041E 9508 RET
lpm32:
041F 93EA ST R30,-Y
0420 93FA ST R31,-Y
0421 920A ST R0,-Y
0422 2FE0 MOV R30,R16
0423 2FF1 MOV R31,R17
0424 95C8 LPM
0425 2D00 MOV R16,R0
0426 9631 ADIW R30,1
0427 95C8 LPM
0428 2D10 MOV R17,R0
0429 9631 ADIW R30,1
042A 95C8 LPM
042B 2D20 MOV R18,R0
042C 9631 ADIW R30,1
042D 95C8 LPM
042E 2D30 MOV R19,R0
042F 9009 LD R0,Y+
0430 91F9 LD R31,Y+
0431 91E9 LD R30,Y+
0432 9508 RET
fp2int:
0433 940E0584 CALL savfacc1
0435 D014 RCALL FTOI
0436 2F02 MOV R16,R18
0437 2F13 MOV R17,R19
0438 FD87 SBRC R24,7
0439 C002 RJMP nojump1
043A 940C0587 JMP restorefacc1
nojump1:
043C 9510 COM R17
043D 9501 NEG R16
043E 4F1F SBCI R17,0xFF
043F 940C0587 JMP restorefacc1
fp2long:
0441 940E0584 CALL savfacc1
0443 D008 RCALL FTOL
0444 FF87 SBRS R24,7
0445 C002 RJMP nojump2
0446 940E0416 CALL neg32
nojump2:
0448 940C0587 JMP restorefacc1
FTOI:
044A E0BE LDI R27,0xE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -