📄 eeprom.lis
字号:
0072 622F mov R22,R18
0074 732F mov R23,R19
0076 402F mov R20,R16
0078 .dbline -1
0078 .dbline 37
0078 ;
0078 ; void Write_EEPROM(uchar Data,uint Address)
0078 ; {if(EECR&0x20) DelayMs(4);
0078 .dbline 37
0078 E59B sbis 0x1c,5
007A 03C0 rjmp L17
007C .dbline 37
007C 04E0 ldi R16,4
007E 10E0 ldi R17,0
0080 BFDF rcall _DelayMs
0082 L17:
0082 .dbline 38
0082 ; EEARH=Address>>8;
0082 262E mov R2,R22
0084 372E mov R3,R23
0086 232C mov R2,R3
0088 3324 clr R3
008A 2FBA out 0x1f,R2
008C .dbline 39
008C ; EEARL=Address&0x00ff;
008C 862F mov R24,R22
008E 972F mov R25,R23
0090 9070 andi R25,0
0092 8EBB out 0x1e,R24
0094 .dbline 40
0094 ; EEDR=Data;
0094 4DBB out 0x1d,R20
0096 .dbline 41
0096 ; EECR=EECR|0x04;
0096 E29A sbi 0x1c,2
0098 .dbline 42
0098 ; EECR=EECR|0x02;
0098 E19A sbi 0x1c,1
009A .dbline 43
009A ; DelayMs(4);
009A 04E0 ldi R16,4
009C 10E0 ldi R17,0
009E B0DF rcall _DelayMs
00A0 .dbline -2
00A0 .dbline 44
00A0 ; }
00A0 L16:
00A0 00D0 rcall pop_gset2
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r Address 22 i
00A4 .dbsym r Data 20 c
00A4 .dbend
00A4 .dbfunc e Read_EEPROM _Read_EEPROM fc
00A4 ; i -> R20
00A4 ; Address -> R20,R21
.even
00A4 _Read_EEPROM::
00A4 00D0 rcall push_gset1
00A6 402F mov R20,R16
00A8 512F mov R21,R17
00AA .dbline -1
00AA .dbline 47
00AA ;
00AA ; uchar Read_EEPROM(uint Address)
00AA ; {uchar i;
00AA .dbline 48
00AA ; if(EECR&0x01) DelayMs(4);
00AA E09B sbis 0x1c,0
00AC 03C0 rjmp L20
00AE .dbline 48
00AE 04E0 ldi R16,4
00B0 10E0 ldi R17,0
00B2 A6DF rcall _DelayMs
00B4 L20:
00B4 .dbline 49
00B4 ; EEARH=Address>>8;
00B4 242E mov R2,R20
00B6 352E mov R3,R21
00B8 232C mov R2,R3
00BA 3324 clr R3
00BC 2FBA out 0x1f,R2
00BE .dbline 50
00BE ; EEARL=Address&0x00ff;
00BE 842F mov R24,R20
00C0 952F mov R25,R21
00C2 9070 andi R25,0
00C4 8EBB out 0x1e,R24
00C6 .dbline 51
00C6 ; EECR=EECR|0x01;
00C6 E09A sbi 0x1c,0
00C8 .dbline 52
00C8 ; DelayMs(5);
00C8 05E0 ldi R16,5
00CA 10E0 ldi R17,0
00CC 99DF rcall _DelayMs
00CE .dbline 53
00CE ; i=EEDR;
00CE 4DB3 in R20,0x1d
00D0 .dbline 54
00D0 ; return(i);
00D0 042F mov R16,R20
00D2 .dbline -2
00D2 L19:
00D2 00D0 rcall pop_gset1
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbsym r i 20 c
00D6 .dbsym r Address 20 i
00D6 .dbend
00D6 .dbfunc e main _main fV
00D6 ; i -> R20
.even
00D6 _main::
00D6 .dbline -1
00D6 .dbline 58
00D6 ; }
00D6 ;
00D6 ; void main(void)
00D6 ; {uchar i;
00D6 .dbline 59
00D6 ; Init_IO(); //初始化I/O口
00D6 C6DF rcall _Init_IO
00D8 .dbline 60
00D8 ; PORTA=0xff; //点亮以测试所有的数码管
00D8 8FEF ldi R24,255
00DA 8BBB out 0x1b,R24
00DC .dbline 61
00DC ; PORTC=0x00;
00DC 2224 clr R2
00DE 25BA out 0x15,R2
00E0 .dbline 62
00E0 ; DelayMs(300); //延时
00E0 0CE2 ldi R16,300
00E2 11E0 ldi R17,1
00E4 8DDF rcall _DelayMs
00E6 .dbline 63
00E6 ; PORTC=0xff; //熄灭所有的数码管
00E6 8FEF ldi R24,255
00E8 85BB out 0x15,R24
00EA .dbline 64
00EA ; for(i=0;i<4;i++)
00EA 4427 clr R20
00EC 07C0 rjmp L26
00EE L23:
00EE .dbline 65
00EE 242F mov R18,R20
00F0 3327 clr R19
00F2 05E0 ldi R16,5
00F4 142F mov R17,R20
00F6 00D0 rcall mpy8s
00F8 BBDF rcall _Write_EEPROM
00FA L24:
00FA .dbline 64
00FA 4395 inc R20
00FC L26:
00FC .dbline 64
00FC 4430 cpi R20,4
00FE B8F3 brlo L23
0100 .dbline 66
0100 ; Write_EEPROM(5*i,i);
0100 ; for(i=0;i<4;i++)
0100 4427 clr R20
0102 0BC0 rjmp L30
0104 L27:
0104 .dbline 67
0104 042F mov R16,R20
0106 1127 clr R17
0108 CDDF rcall _Read_EEPROM
010A 80E0 ldi R24,<_Read_Data
010C 90E0 ldi R25,>_Read_Data
010E E42F mov R30,R20
0110 FF27 clr R31
0112 E80F add R30,R24
0114 F91F adc R31,R25
0116 0083 std z+0,R16
0118 L28:
0118 .dbline 66
0118 4395 inc R20
011A L30:
011A .dbline 66
011A 4430 cpi R20,4
011C 98F3 brlo L27
011E 03C0 rjmp L32
0120 L31:
0120 .dbline 69
0120 00E0 ldi R16,<_Read_Data
0122 10E0 ldi R17,>_Read_Data
0124 7EDF rcall _Display
0126 L32:
0126 .dbline 68
0126 FCCF rjmp L31
0128 X2:
0128 .dbline -2
0128 .dbline 70
0128 ; Read_Data[i]=Read_EEPROM(i);
0128 ; while(1)
0128 ; Display(Read_Data);
0128 ; }
0128 L22:
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r i 20 c
012A .dbend
.area bss(ram, con, rel)
0000 .dbfile J:\AVRpractice\BOOK\EEPROM\EEPROM时序\EEPROM.c
0000 _Read_Data::
0000 .blkb 4
0004 .dbsym e Read_Data _Read_Data A[4:4]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -