📄 eeprom.s
字号:
.module eeprom.c
.area text(rom, con, rel)
.dbfile E:\TWINTI~1\eeprom.c
.dbfunc e init_eeprom _init_eeprom fV
.even
_init_eeprom::
.dbline -1
.dbline 11
;
; //#include <avr/io.h>
; //#include <avr/delay.h>
; //#include <avr/signal.h>
; //#include <avr/interrupt.h>
;
; #include <iom48v.h>
; #include <macros.h>
;
; void init_eeprom(void)
; {
.dbline 12
; EECR = 0x07;
ldi R24,7
out 0x1f,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e EEPROM_write _EEPROM_write fV
; Datas -> R18
; Address -> R16
.even
_EEPROM_write::
.dbline -1
.dbline 16
; }
;
; void EEPROM_write(unsigned char Address, unsigned char Datas)
; {
L3:
.dbline 17
L4:
.dbline 17
; while(EECR & (1<<EEWE));// 等待上一次写操作结束
sbic 0x1f,1
rjmp L3
.dbline 19
;
; EEARL= Address; // 设置地址和数据寄存器
out 0x21,R16
.dbline 20
; EEDR = Datas;
out 0x20,R18
.dbline 21
; EECR |= (1<<EEMWE); // 置位EEMWE
sbi 0x1f,2
.dbline 22
; EECR |= (1<<EEWE); // 置位EEWE 以启动写操作E
sbi 0x1f,1
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r Datas 18 c
.dbsym r Address 16 c
.dbend
.dbfunc e EEPROM_read _EEPROM_read fc
; uiAddress -> R16
.even
_EEPROM_read::
.dbline -1
.dbline 28
; }
;
;
;
; unsigned char EEPROM_read(unsigned char uiAddress)
; {
L7:
.dbline 29
L8:
.dbline 29
; while(EECR&(1<<EEWE)); //等待上一次写操作结束
sbic 0x1f,1
rjmp L7
.dbline 30
; EEARL = uiAddress; // 设置地址寄存器
out 0x21,R16
.dbline 31
; EECR |= (1<<EERE); // 设置EERE 以启动读操作
sbi 0x1f,0
.dbline 32
; return EEDR; // 自数据寄存器返回数据
in R16,0x20
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbsym r uiAddress 16 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -