?? eeprom.s
字號(hào):
.module EEPROM.c
.area text(rom, con, rel)
.dbfile D:\YM200\內(nèi)部EEPROM\EEPROM.c
.dbfunc e EEPROM_write _EEPROM_write fV
; dd -> R18
; addr -> R16,R17
.even
_EEPROM_write::
.dbline -1
.dbline 9
; #include <iom16v.h>
; /*-----------------------------------------------------------
; EEPROM_write :EEPROM單字節(jié)寫(xiě)入
; 輸入?yún)?shù) addr :地址
; dd :數(shù)據(jù)
; 輸出參數(shù) :無(wú)
; ------------------------------------------------------------*/
; void EEPROM_write(unsigned int addr, unsigned char dd)
; {
L2:
.dbline 10
L3:
.dbline 10
; while(EECR & (1<<EEWE)); //等待上一次寫(xiě)操作結(jié)束
sbic 0x1c,1
rjmp L2
.dbline 11
; EEAR = addr; //設(shè)置地址和數(shù)據(jù)寄存器
out 0x1f,R17
out 0x1e,R16
.dbline 12
; EEDR = dd;
out 0x1d,R18
.dbline 13
; EECR |= (1<<EEMWE); //置位EEMWE
sbi 0x1c,2
.dbline 14
; EECR |= (1<<EEWE); //置位EEWE 以啟動(dòng)寫(xiě)操作
sbi 0x1c,1
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r dd 18 c
.dbsym r addr 16 i
.dbend
.dbfunc e EEPROM_read _EEPROM_read fV
; ucData -> R18,R19
; uiAddress -> R16,R17
.even
_EEPROM_read::
.dbline -1
.dbline 23
; }
; /*-----------------------------------------------------------
; EEPROM_read :EEPROM單字節(jié)讀取
; 輸入?yún)?shù) addr :地址
; dd :數(shù)據(jù)保存指針
; 輸出參數(shù) :無(wú)
; ------------------------------------------------------------*/
; void EEPROM_read(unsigned int uiAddress,unsigned char *ucData)
; {
L6:
.dbline 24
L7:
.dbline 24
; while(EECR & (1<<EEWE)); //等待上一次寫(xiě)操作結(jié)束
sbic 0x1c,1
rjmp L6
.dbline 25
; EEAR = uiAddress; //設(shè)置地址寄存器
out 0x1f,R17
out 0x1e,R16
.dbline 26
; EECR |= (1<<EERE); //設(shè)置EERE 以啟動(dòng)讀操作
sbi 0x1c,0
.dbline 27
; *ucData=EEDR; //自數(shù)據(jù)寄存器返回?cái)?shù)據(jù)
in R2,0x1d
movw R30,R18
std z+0,R2
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbsym r ucData 18 pc
.dbsym r uiAddress 16 i
.dbend
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -