📄 m16_eeprom.lis
字号:
007E E59B sbis 0x1c,5
0080 03C0 rjmp L17
0082 .dbline 38
0082 04E0 ldi R16,4
0084 10E0 ldi R17,0
0086 BCDF xcall _DelayMs
0088 L17:
0088 .dbline 39
0088 ; EEARH=Address>>8;
0088 1B01 movw R2,R22
008A 232C mov R2,R3
008C 3324 clr R3
008E 2FBA out 0x1f,R2
0090 .dbline 40
0090 ; EEARL=Address&0x00ff;
0090 CB01 movw R24,R22
0092 9070 andi R25,0
0094 8EBB out 0x1e,R24
0096 .dbline 41
0096 ; EEDR=Data;
0096 4DBB out 0x1d,R20
0098 .dbline 42
0098 ; EECR=EECR|0x04;
0098 E29A sbi 0x1c,2
009A .dbline 43
009A ; EECR=EECR|0x02;
009A E19A sbi 0x1c,1
009C .dbline 44
009C ; DelayMs(4);
009C 04E0 ldi R16,4
009E 10E0 ldi R17,0
00A0 AFDF xcall _DelayMs
00A2 .dbline -2
00A2 .dbline 45
00A2 ; }
00A2 L16:
00A2 0E940000 xcall pop_gset2
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 .dbsym r Address 22 i
00A8 .dbsym r Data 20 c
00A8 .dbend
00A8 .dbfunc e Read_EEPROM _Read_EEPROM fc
00A8 ; i -> R20
00A8 ; Address -> R20,R21
.even
00A8 _Read_EEPROM::
00A8 0E940000 xcall push_gset1
00AC A801 movw R20,R16
00AE .dbline -1
00AE .dbline 48
00AE ;
00AE ; uchar Read_EEPROM(uint Address)
00AE ; {uchar i;
00AE .dbline 49
00AE ; if(EECR&0x01) DelayMs(4);
00AE E09B sbis 0x1c,0
00B0 03C0 rjmp L20
00B2 .dbline 49
00B2 04E0 ldi R16,4
00B4 10E0 ldi R17,0
00B6 A4DF xcall _DelayMs
00B8 L20:
00B8 .dbline 50
00B8 ; EEARH=Address>>8;
00B8 1A01 movw R2,R20
00BA 232C mov R2,R3
00BC 3324 clr R3
00BE 2FBA out 0x1f,R2
00C0 .dbline 51
00C0 ; EEARL=Address&0x00ff;
00C0 CA01 movw R24,R20
00C2 9070 andi R25,0
00C4 8EBB out 0x1e,R24
00C6 .dbline 52
00C6 ; EECR=EECR|0x01;
00C6 E09A sbi 0x1c,0
00C8 .dbline 53
00C8 ; DelayMs(5);
00C8 05E0 ldi R16,5
00CA 10E0 ldi R17,0
00CC 99DF xcall _DelayMs
00CE .dbline 54
00CE ; i=EEDR;
00CE .dbline 55
00CE ; return(i);
00CE 4DB3 in R20,0x1d
00D0 042F mov R16,R20
00D2 .dbline -2
00D2 L19:
00D2 0E940000 xcall pop_gset1
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym r i 20 c
00D8 .dbsym r Address 20 i
00D8 .dbend
00D8 .dbfunc e main _main fV
00D8 ; i -> R20
.even
00D8 _main::
00D8 .dbline -1
00D8 .dbline 59
00D8 ; }
00D8 ;
00D8 ; void main(void)
00D8 ; {uchar i;
00D8 .dbline 60
00D8 ; Init_IO(); //初始化I/O口
00D8 C8DF xcall _Init_IO
00DA .dbline 61
00DA ; PORTA=0xff; //点亮以测试所有的数码管
00DA 8FEF ldi R24,255
00DC 8BBB out 0x1b,R24
00DE .dbline 62
00DE ; PORTC=0x00;
00DE 2224 clr R2
00E0 25BA out 0x15,R2
00E2 .dbline 63
00E2 ; DelayMs(30); //延时
00E2 0EE1 ldi R16,30
00E4 10E0 ldi R17,0
00E6 8CDF xcall _DelayMs
00E8 .dbline 64
00E8 ; PORTC=0xff; //熄灭所有的数码管
00E8 8FEF ldi R24,255
00EA 85BB out 0x15,R24
00EC .dbline 65
00EC ; for(i=0;i<4;i++)
00EC 4427 clr R20
00EE 07C0 xjmp L26
00F0 L23:
00F0 .dbline 66
00F0 .dbline 66
00F0 242F mov R18,R20
00F2 3327 clr R19
00F4 85E0 ldi R24,5
00F6 849F mul R24,R20
00F8 002D mov R16,R0
00FA BDDF xcall _Write_EEPROM
00FC .dbline 66
00FC L24:
00FC .dbline 65
00FC 4395 inc R20
00FE L26:
00FE .dbline 65
00FE 4430 cpi R20,4
0100 B8F3 brlo L23
0102 .dbline 67
0102 ; {Write_EEPROM(5*i,i);}
0102 ; for(i=0;i<4;i++)
0102 4427 clr R20
0104 0BC0 xjmp L30
0106 L27:
0106 .dbline 68
0106 .dbline 68
0106 042F mov R16,R20
0108 1127 clr R17
010A CEDF xcall _Read_EEPROM
010C 80E0 ldi R24,<_Read_Data
010E 90E0 ldi R25,>_Read_Data
0110 E42F mov R30,R20
0112 FF27 clr R31
0114 E80F add R30,R24
0116 F91F adc R31,R25
0118 0083 std z+0,R16
011A .dbline 69
011A L28:
011A .dbline 67
011A 4395 inc R20
011C L30:
011C .dbline 67
011C 4430 cpi R20,4
011E 98F3 brlo L27
0120 0CC0 xjmp L32
0122 L31:
0122 .dbline 71
0122 .dbline 72
0122 20900200 lds R2,_Read_Data
0126 E0910000 lds R30,_p1
012A F0910100 lds R31,_p1+1
012E 2082 std z+0,R2
0130 .dbline 73
0130 8F01 movw R16,R30
0132 79DF xcall _Display
0134 .dbline 74
0134 02E0 ldi R16,2
0136 10E0 ldi R17,0
0138 63DF xcall _DelayMs
013A .dbline 75
013A L32:
013A .dbline 70
013A F3CF xjmp L31
013C X2:
013C .dbline -2
013C .dbline 76
013C ; {Read_Data[i]=Read_EEPROM(i);
013C ; }
013C ; while(1)
013C ; {
013C ; p1[0]=Read_Data[0];
013C ; Display(p1);
013C ; DelayMs(2);
013C ; }
013C ; }
013C L22:
013C .dbline 0 ; func end
013C 0895 ret
013E .dbsym r i 20 c
013E .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\myavr\temp\M16_EEPROM\M16_EEPROM.C
0000 _p1::
0000 .blkb 2
0002 .dbsym e p1 _p1 pc
0002 _Read_Data::
0002 .blkb 4
0006 .dbsym e Read_Data _Read_Data A[4:4]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -