⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.lis

📁 一个C语言写的EEPROM读写程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -