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

📄 eeprom.lst

📁 通过编程
💻 LST
字号:
__text_start:
__start:
    002A E5CF      LDI	R28,0x5F
    002B E0D4      LDI	R29,4
    002C BFCD      OUT	0x3D,R28
    002D BFDE      OUT	0x3E,R29
    002E 51C0      SUBI	R28,0x10
    002F 40D0      SBCI	R29,0
    0030 EA0A      LDI	R16,0xAA
    0031 8308      STD	Y+0,R16
    0032 2400      CLR	R0
    0033 E6E0      LDI	R30,0x60
    0034 E0F0      LDI	R31,0
    0035 E010      LDI	R17,0
    0036 36E0      CPI	R30,0x60
    0037 07F1      CPC	R31,R17
    0038 F011      BEQ	0x003B
    0039 9201      ST	R0,Z+
    003A CFFB      RJMP	0x0036
    003B 8300      STD	Z+0,R16
    003C E5E4      LDI	R30,0x54
    003D E0F0      LDI	R31,0
    003E E6A0      LDI	R26,0x60
    003F E0B0      LDI	R27,0
    0040 E010      LDI	R17,0
    0041 35E4      CPI	R30,0x54
    0042 07F1      CPC	R31,R17
    0043 F021      BEQ	0x0048
    0044 95C8      LPM
    0045 9631      ADIW	R30,1
    0046 920D      ST	R0,X+
    0047 CFF9      RJMP	0x0041
    0048 940E007A  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
_delay_ms:
  i                    --> R20
  time                 --> R16
    004B 940E00A4  CALL	push_gset1
FILE: D:\AVR\我的程序\EEPROM读写实验\cfg.h
(0001) /*******************************
(0002) *程序名称:功能函数集
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-22
(0005) ********************************/
(0006) #include <iom16v.h>
(0007) 
(0008) 
(0009) /*延时子程序*/
(0010) void delay_ms(int time)
(0011) {
(0012)  int i;
(0013)  for(;time>0;time--)
    004D C00A      RJMP	0x0058
(0014)   for(i=0;i<1000;i++);
    004E 2744      CLR	R20
    004F 2755      CLR	R21
    0050 5F4F      SUBI	R20,0xFF
    0051 4F5F      SBCI	R21,0xFF
    0052 3E48      CPI	R20,0xE8
    0053 E0E3      LDI	R30,3
    0054 075E      CPC	R21,R30
    0055 F3D4      BLT	0x0050
    0056 5001      SUBI	R16,1
    0057 4010      SBCI	R17,0
    0058 2422      CLR	R2
    0059 2433      CLR	R3
    005A 1620      CP	R2,R16
    005B 0631      CPC	R3,R17
    005C F38C      BLT	0x004E
    005D 940E00A7  CALL	pop_gset1
    005F 9508      RET
(0015) }
(0016) 
(0017) /*串口初始化*/
(0018) void uart_init()
(0019) {
(0020)  UCSRA=0x02; //异步正常模式
_uart_init:
    0060 E082      LDI	R24,2
    0061 B98B      OUT	0x0B,R24
(0021)  UCSRB=0x18; //允许发送接受中断和使能
    0062 E188      LDI	R24,0x18
    0063 B98A      OUT	0x0A,R24
(0022)  UCSRC=0x06; //8位数据
    0064 E086      LDI	R24,6
    0065 BD80      OUT	0x20,R24
(0023)  UBRRH=0x00;
    0066 2422      CLR	R2
    0067 BC20      OUT	0x20,R2
(0024)  UBRRL=12;   //波特率位9600
    0068 E08C      LDI	R24,0xC
    0069 B989      OUT	0x09,R24
    006A 9508      RET
(0025) }
(0026) 
(0027) /*EEPROM写子入程序*/
(0028) void EEPROM_write(unsigned int Address, unsigned char Data)
(0029) {
(0030)  while(EECR & (1<<EEWE));  /* 等待上一次写操作结束 */
_EEPROM_write:
  Data                 --> R18
  Address              --> R16
    006B 99E1      SBIC	0x1C,1
    006C CFFE      RJMP	_EEPROM_write
(0031)  EEAR = Address;          /* 设置地址和数据寄存器*/
    006D BB1F      OUT	0x1F,R17
    006E BB0E      OUT	0x1E,R16
(0032)  EEDR = Data;
    006F BB2D      OUT	0x1D,R18
(0033)  
(0034)  EECR |= (1<<EEMWE);  /* 置位EEMWE */
    0070 9AE2      SBI	0x1C,2
(0035)  EECR |= (1<<EEWE);   /* 置位EEWE 以启动写操作*/
    0071 9AE1      SBI	0x1C,1
    0072 9508      RET
(0036)  }
(0037)  
(0038)  /*从EEPROM中读取数据*/
(0039)  unsigned char EEPROM_read(unsigned int Address)
(0040) {
(0041)   while(EECR & (1<<EEWE)); /* 等待上一次写操作结束 */
_EEPROM_read:
  Address              --> R16
    0073 99E1      SBIC	0x1C,1
    0074 CFFE      RJMP	_EEPROM_read
(0042)   EEAR = Address;          /* 设置地址寄存器*/
    0075 BB1F      OUT	0x1F,R17
    0076 BB0E      OUT	0x1E,R16
(0043)   EECR |= (1<<EERE);      /* 设置EERE 以启动读操作*/
    0077 9AE0      SBI	0x1C,0
(0044)   return EEDR;            /* 自数据寄存器返回数据 */
    0078 B30D      IN	R16,0x1D
    0079 9508      RET
FILE: D:\AVR\我的程序\EEPROM读写实验\main.c
(0001) /***********************************
(0002) *实验目的:熟悉EEPROM编程
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-22
(0005) ************************************/
(0006) #include <iom16v.h>
(0007) #include "cfg.h"
(0008) 
(0009) void main()
(0010) {
(0011)  unsigned char i;
(0012)  uart_init();
_main:
  i                    --> R20
    007A DFE5      RCALL	_uart_init
(0013)  for(i=0;i<10;i++)
    007B 2744      CLR	R20
    007C C007      RJMP	0x0084
(0014)    EEPROM_write(0x01+i,i);
    007D 2F24      MOV	R18,R20
    007E 2F04      MOV	R16,R20
    007F 2711      CLR	R17
    0080 5F0F      SUBI	R16,0xFF
    0081 4F1F      SBCI	R17,0xFF
    0082 DFE8      RCALL	_EEPROM_write
    0083 9543      INC	R20
    0084 304A      CPI	R20,0xA
    0085 F3B8      BCS	0x007D
(0015)  delay_ms(1000);
    0086 EE08      LDI	R16,0xE8
    0087 E013      LDI	R17,3
    0088 DFC2      RCALL	_delay_ms
    0089 C010      RJMP	0x009A
(0016)  while(1)
(0017)  {
(0018)    for(i=0;i<10;i++)
    008A 2744      CLR	R20
    008B C00C      RJMP	0x0098
(0019)    {
(0020)      while(!(UCSRA&(1<<UDRE)));  //等待发送寄存器为空  
    008C 9B5D      SBIS	0x0B,5
    008D CFFE      RJMP	0x008C
(0021) 	 delay_ms(10);
    008E E00A      LDI	R16,0xA
    008F E010      LDI	R17,0
    0090 DFBA      RCALL	_delay_ms
(0022)      UDR=EEPROM_read(0x01+i);   //发送数据
FILE: <library>
    0091 2F04      MOV	R16,R20
    0092 2711      CLR	R17
    0093 5F0F      SUBI	R16,0xFF
    0094 4F1F      SBCI	R17,0xFF
    0095 DFDD      RCALL	_EEPROM_read
    0096 B90C      OUT	0x0C,R16
    0097 9543      INC	R20
    0098 304A      CPI	R20,0xA
    0099 F390      BCS	0x008C
    009A CFEF      RJMP	0x008A
    009B 9508      RET
push_gset5:
    009C 92FA      ST	R15,-Y
    009D 92EA      ST	R14,-Y
push_gset4:
    009E 92DA      ST	R13,-Y
    009F 92CA      ST	R12,-Y
push_gset3:
    00A0 92BA      ST	R11,-Y
    00A1 92AA      ST	R10,-Y
push_gset2:
    00A2 937A      ST	R23,-Y
    00A3 936A      ST	R22,-Y
push_gset1:
    00A4 935A      ST	R21,-Y
    00A5 934A      ST	R20,-Y
    00A6 9508      RET
pop_gset1:
    00A7 E0E1      LDI	R30,1
pop:
    00A8 9149      LD	R20,Y+
    00A9 9159      LD	R21,Y+
    00AA FDE0      SBRC	R30,0
    00AB 9508      RET
    00AC 9169      LD	R22,Y+
    00AD 9179      LD	R23,Y+
    00AE FDE1      SBRC	R30,1
    00AF 9508      RET
    00B0 90A9      LD	R10,Y+
    00B1 90B9      LD	R11,Y+
    00B2 FDE2      SBRC	R30,2
    00B3 9508      RET
    00B4 90C9      LD	R12,Y+
    00B5 90D9      LD	R13,Y+
    00B6 FDE3      SBRC	R30,3
    00B7 9508      RET
    00B8 90E9      LD	R14,Y+
    00B9 90F9      LD	R15,Y+
    00BA 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -