;-------读取EEPROM函数READEEPROM()-------------<br />;读取eeprom函数Readeeprom()-------------<br />#define ReadeepromByte(ADDR,DATA) Procedure_ReadeepromByte ADDR,DATA<br />Procedure_ReadeepromByte MACRO ADDR,DATA<br /> local start<br /> MainCbanksel = 0<br /> ifndef Function_Readeeprom<br /> #define Function_Readeeprom Function_Readeeprom_Call_Address<br /> GOTO start<br />Function_Readeeprom_Call_Address<br /> CBANKSEL EECON1 <br /> BCF EECON1,EEPGD;选中EEPROM<br /> BSF EECON1,RD;读EEPROM<br /> return<br /> endif<br />start<br /> MainCbanksel = 0<br /> ByteVal(EEADR,ADDR);<br /> ACALL Function_Readeeprom<br /> ByteVar(DATA,EEDATA);<br /> MainCbanksel = 0<br /> ENDM<br /><br />#define ReadeepromWord(ADDR,DATA) Procedure_ReadeepromWord ADDR,DATA<br />Procedure_ReadeepromWord MACRO ADDR,DATA<br /> local start<br /> MainCbanksel = 0<br /> ifndef Function_Readeeprom<br /> #define Function_Readeeprom Function_Readeeprom_Call_Address<br /> GOTO start<br />Function_Readeeprom_Call_Address<br /> CBANKSEL EECON1 <br /> BCF EECON1,EEPGD;选中EEPROM<br /> BSF EECON1,RD;读EEPROM<br /> return<br /> endif<br />start<br /> MainCbanksel = 0<br /> ByteVal(EEADR,ADDR);<br /> ACALL Function_Readeeprom<br /> ByteVar(DATA,EEDATA);<br /> IncByte(EEADR);<br /> ACALL Function_Readeeprom<br /> ByteVar(DATA+1,EEDATA);<br /> MainCbanksel = 0<br /> ENDM<br />;-------写入EEPROM函数WriteEEPROM()-------------<br />#define WriteeepromByte(ADDR,DATA) Procedure_WriteeepromByte ADDR,DATA<br />Procedure_WriteeepromByte MACRO ADDR,DATA<br /> local start<br /> MainCbanksel = 0<br /> IFNDEF Function_Writeeeprom<br /> #define Function_Writeeeprom Function_Writeeeprom_Call_Addr<br /> GOTO start<br />Function_Writeeeprom_Call_Addr<br /> CBANKSEL EECON1<br /> BCF EECON1,EEPGD;选中EEPROM<br /> MACRO_ROMWRITE_COMMAND<br /> RETURN<br /> ENDIF<br />start<br /> MainCbanksel = 0<br /> ByteVal(EEADR,ADDR);<br /> ByteVar(EEDATA,DATA);<br /> ACALL Function_Writeeeprom<br /> MainCbanksel = 0<br /> ENDM <br /><br />#define WriteeepromWord(ADDR,DATA) Procedure_WriteeepromWord ADDR,DATA<br />Procedure_WriteeepromWord MACRO ADDR,DATA<br /> local start<br /> MainCbanksel = 0<br /> IFNDEF Function_Writeeeprom<br /> #define Function_Writeeeprom Function_Writeeeprom_Call_Addr<br /> GOTO start<br />Function_Writeeeprom_Call_Addr<br /> CBANKSEL EECON1<br /> BCF EECON1,EEPGD;选中EEPROM<br /> MACRO_ROMWRITE_COMMAND<br /> RETURN<br /> ENDIF<br />start<br /> MainCbanksel = 0<br /> ByteVal(EEADR,ADDR);<br /> ByteVar(EEDATA,DATA);<br /> ACALL Function_Writeeeprom<br /> IncByte(EEADR);<br /> ByteVar(EEDATA,DATA+1);<br /> ACALL Function_Writeeeprom<br /> MainCbanksel = 0<br /> ENDM <br /><br />;写入ROM基本硬件操作宏定义<br />MACRO_ROMWRITE_COMMAND MACRO<br /> CLRWDT<br /> CBANKSEL EECON1<br /> BSF EECON1,WREN;写使能<br />; BCF INTCON,GIE;关中断<br /> MOVLW 0X55<br /> MOVWF EECON2<br /> MOVLW 0XAA<br /> MOVWF EECON2<br /> BSF EECON1,WR;写允许<br /> NOP<br /> NOP<br /> NOP<br /> BCF EECON1,WREN;写禁止<br />; BSF INTCON,GIE;开中断<br /> BTFSC EECON1,WR<br /> GOTO $-1;<br /> NOP<br /> ENDM<br />;-------读取Flash Rom()函数-------------------<br />;读取Flash Rom()函数<br />#define ReadFlash(ADDR,DATA) Procedure_ReadFlash ADDR,DATA<br />#define ReadFlashWord(ADDR,DATA) Procedure_ReadFlash ADDR,DATA<br />Procedure_ReadFlash Macro ADDR,DATA<br /> local start<br /> ifndef Function_ReadFlash<br /> #define Function_ReadFlash Function_ReadFlash_Call_Addr<br /> GOTO start<br />Function_ReadFlash_Call_Addr<br /> ABANKSEL EECON1<br /> BSF EECON1,EEPGD;选中Flash Rom<br /> BSF EECON1,RD;读Flash Rom<br /> return<br /> endif<br />start<br /> GetArrayWordDByte(ADDR,EEADRH,EEADR);<br /> ACALL Function_ReadFlash<br /> SetArrayWordDByte(DATA,EEDATH,EEDATA);<br /> ENDM<br />;-------------------<br />#define WriteFlash(ADDR,DATA) Procedure_WriteFlash ADDR,DATA<br />Procedure_WriteFlash MACRO ADDR,DATA<br /> local start<br /> IFNDEF Function_WriteFlash<br /> #define Function_WriteFlash Function_WriteFlash_Call_Addr<br /> GOTO start<br />Function_WriteFlash_Call_Addr<br /> ABANKSEL EECON1<br /> BSF EECON1,EEPGD;选中Flash Rom<br /> MACRO_ROMWRITE_COMMAND;写入Flash基本硬件操作宏定义<br /> RETURN<br /> ENDIF<br />start<br /> GetArrayWordDByte(ADDR,EEADRH,EEADR);<br /> GetArrayWordDByte(DATA,EEDATH,EEDATA);<br /> ACALL Function_WriteFlash<br /> ENDM <br /><br />ASM macro<br /> MainCbanksel = 0<br /> endm<br />ENDASM macro<br /> MainCbanksel = 0<br /> endm
|