MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 #include "Project.inc" 00001 00002 00003 list p=16F639 ; list directive to define processor 00004 #include ; processor specific variable definitions 00001 LIST 00002 ; P16F639.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00315 LIST 00005 00006 ERRORLEVEL 0,-302,-312 ; Messages, Warnings and Errors Printed 00007 ; Ignore [301] => Processor Mismatch. 00008 ; Ignore [302] => Register in operand not in bank 0. 00009 ; Ignore [312] => Pagesel not needed for Device 00002 00003 udata 0000 00004 EEPROM_ByteCount res 1 0001 00005 EEPROM_ADDRESS res 1 0000 00006 global EEPROM_ByteCount,EEPROM_ADDRESS Error[113] : Symbol not previously defined (EEPROM_Init) 0000 00007 global EEPROM_Init,EEPROM_Write,EEPROM_WriteBytes,EEPROM_ReadBytes,EEPROM_Read 00008 flag_ovr udata_ovr ;此伪指令声明开始一段被覆盖的未初始化的数据,此段声明的空间被所有其他同名的 udata_ovr段覆盖。由于它允 00009 ;许在同一个存储器单元中声明多个变量,因此这是一种声明临时变量的理想方法。此段不 会生成代码。 00010 ;应该使用 res 伪指令来为数据保留空间。 0000 00011 flag res 1 ;using bit 1 of flag register 00012 code Error[111] : Missing symbol 00013 ----------------------------------------------- 00014 ;初始化 Error[111] : Missing symbol 00015 ----------------------------------------------- 0000 00016 EEPROM.Init 0000 1683 1303 00017 banksel EEDATA 0002 019A 00018 clrf EEDATA 0003 019B 00019 clrf EEADR 0004 019C 00020 clrf EECON1 0005 019D 00021 clrf EECON2 0006 0008 00022 return Error[111] : Missing symbol 0006 0008 00023 -------------------------------------------------------------------------------------------------------- ------------------------------- 00024 ; input: 00025 ; w:要写入EEPROM的数据 00026 ; EEPROM_ADDRESS:写入EEPROM的地址 Error[111] : Missing symbol 00027 -------------------------------------------------------------------------------------------------------- ------------------------------- 0007 00028 EEPROM_Write 0007 1683 1303 00029 banksel EEDATA 0009 009A 00030 movwf EEDATA ; 000A 1683 1303 00031 banksel EEADR MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000C 08?? 00032 movf EEPROM_ADDRESS,w 000D 1683 1303 00033 banksel EEADR 000F 009B 00034 movwf EEADR 00035 0010 00036 EEWRITE2 0010 151C 00037 bsf EECON1,WREN ; 允许写周期 0011 3055 00038 movlw 55H 0012 009D 00039 movwf EECON2 ; Write 55H 0013 30AA 00040 movlw 0AAH 0014 009D 00041 movwf EECON2 ; Write AAH 0015 149C 00042 bsf EECON1,WR ; 开始写周期 00043 0016 00044 WR_WAIT 0016 0064 00045 CLRWDT 0017 189C 00046 btfsc EECON1,WR ; Wait for write to complete 0018 2??? 00047 goto WR_WAIT 0019 00048 EEWRITE3 ;不使能写EEPROM 0019 111C 00049 bcf EECON1,WREN ; 禁止写周期 001A ???? ???? 00050 banksel EEPROM_ADDRESS 001C 0A?? 00051 incf EEPROM_ADDRESS,F ; Auto-increase Address Pointer 001D ???? ???? 00052 banksel flag 001F 1C80 00053 btfss flag,.1 0020 3400 00054 retlw 0H 0021 2??? 00055 goto Return_Write Error[111] : Missing symbol 0021 2??? 00056 -------------------------------------------------------------------------------------------------------- -------------------------- 00057 ; input: 00058 ; w:要写入的字节数 00059 ; EEPROM_ADDRESS:要写入EEPROM的初始地址 00060 ; FSR:要写入EEPROM的数据在RAM中存放的初始地址 00061 ; output: 00062 ; flag.0=1表示成功 Error[111] : Missing symbol 00063 -------------------------------------------------------------------------------------------------------- -------------------------- 0022 00064 EEPROM_WriteBytes 0022 ???? ???? 00065 banksel flag 0024 1480 00066 bsf flag,.1 0025 ???? ???? 00067 banksel EEPROM_ByteCount 0027 00?? 00068 movwf EEPROM_ByteCount 0028 00069 EEPROM_WriteBytes_Loop 0028 1383 00070 bankisel PORTA 0029 0800 00071 movf INDF,w 002A 2??? 00072 goto EEPROM_Write 002B 00073 Return_Write 002B 0A84 00074 incf FSR,f 002C ???? ???? 00075 banksel EEPROM_ByteCount 002E 0B?? 00076 decfsz EEPROM_ByteCount,f 002F 2??? 00077 goto EEPROM_WriteBytes_Loop 0030 ???? ???? 00078 banksel flag 0032 1080 00079 bcf flag,.1 0033 0008 00080 return MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE Error[111] : Missing symbol 0033 0008 00081 -------------------------------------------------------------------------------------------------------- ---------------------------- 00082 ; input: 00083 ; EEPROM_ADDRESS:要读取EEPROM数据的地址 00084 ; output: 00085 ; w:读出的数据 Error[111] : Missing symbol 00086 -------------------------------------------------------------------------------------------------------- ------------------------ 0034 00087 EEPROM_Read 0034 ???? ???? 00088 banksel EEPROM_ADDRESS 0036 08?? 00089 movf EEPROM_ADDRESS,w 0037 1683 1303 00090 banksel EEADR 0039 009B 00091 movwf EEADR 00092 003A 141C 00093 bsf EECON1,RD ; Command read 003B 081A 00094 movf EEDATA,w ; Get data 00095 003C ???? ???? 00096 banksel EEPROM_ADDRESS 003E 0A?? 00097 incf EEPROM_ADDRESS,f ; Auto-increase Address Pointer 003F ???? ???? 00098 banksel flag 0041 1C80 00099 btfss flag,.1 0042 0008 00100 return ; Return without changing w-register 0043 2??? 00101 goto Return_Read Error[111] : Missing symbol 0043 2??? 00102 -------------------------------------------------------------------------------------------------------- -------------------------- 00103 ; input: 00104 ; w:要读出的字节数 00105 ; EEPROM_ADDRESS:要读出值的初始地址 00106 ; FSR:要读取EEPROM的数据在RAM中存放的初始地址 00107 ;output: 00108 ; flag.0=0表示成功 Error[111] : Missing symbol 00109 -------------------------------------------------------------------------------------------------------- -------------------------- 0044 00110 EEPROM_ReadBytes 0044 ???? ???? 00111 banksel flag 0046 1480 00112 bsf flag,.1 0047 ???? ???? 00113 banksel EEPROM_ByteCount 0049 00?? 00114 movwf EEPROM_ByteCount 004A 00115 EEPROM_ReadBytes_Loop 004A 2??? 00116 goto EEPROM_Read 004B 00117 Return_Read 004B 1383 00118 bankisel PORTA 004C 0080 00119 movwf INDF 004D 0A84 00120 incf FSR,f 004E ???? ???? 00121 banksel EEPROM_ByteCount 0050 0B?? 00122 decfsz EEPROM_ByteCount,f 0051 2??? 00123 goto EEPROM_ReadBytes_Loop 0052 ???? ???? 00124 banksel flag 0054 1080 00125 bcf flag,.1 MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00126 ;movf EEPROM_ByteCount,w 00127 ;subwf FSR,f 0055 0008 00128 return 00129 END MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 5 SYMBOL TABLE LABEL VALUE C 00000000 C1IE 00000003 C1IF 00000003 C1INV 00000004 C1OUT 00000006 C2IE 00000004 C2IF 00000004 C2INV 00000005 C2OUT 00000007 C2SYNC 00000000 CIS 00000003 CM0 00000000 CM1 00000001 CM2 00000002 CMCON0 00000019 CMCON1 0000001A CRCON 00000110 CRDAT0 00000111 CRDAT1 00000112 CRDAT2 00000113 CRDAT3 00000114 CRIE 00000005 CRIF 00000005 CRREG0 00000000 CRREG1 00000001 DC 00000001 EEADR 0000009B EECON1 0000009C EECON2 0000009D EEDAT 0000009A EEDATA 0000009A EEIE 00000007 EEIF 00000007 EEPROM.Init 00000000 EEPROM_ADDRESS 00000001 EEPROM_ByteCount 00000000 EEPROM_Read 00000034 EEPROM_ReadBytes 00000044 EEPROM_ReadBytes_Loop 0000004A EEPROM_Write 00000007 EEPROM_WriteBytes 00000022 EEPROM_WriteBytes_Loop 00000028 EEWRITE2 00000010 EEWRITE3 00000019 ENC_DEC 00000006 F 00000001 FSR 00000004 GIE 00000007 GO 00000007 HTS 00000002 INDF 00000000 INTCON 0000000B INTE 00000004 MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 6 SYMBOL TABLE LABEL VALUE INTEDG 00000006 INTF 00000001 IOCA 00000096 IOCA0 00000000 IOCA1 00000001 IOCA2 00000002 IOCA3 00000003 IOCA4 00000004 IOCA5 00000005 IRCF0 00000004 IRCF1 00000005 IRCF2 00000006 IRP 00000007 IRVST 00000005 LTS 00000001 LVDCON 00000094 LVDEN 00000004 LVDIE 00000006 LVDIF 00000006 LVDL0 00000000 LVDL1 00000001 LVDL2 00000002 NOT_BOD 00000000 NOT_PD 00000003 NOT_POR 00000001 NOT_RAPU 00000007 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_WUR 00000003 OPTION_REG 00000081 OSCCON 0000008F OSCTUNE 00000090 OSFIE 00000002 OSFIF 00000002 OSTS 00000003 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PIE1 0000008C PIR1 0000000C PORTA 00000005 PORTC 00000007 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RAIE 00000003 RAIF 00000000 RD 00000000 RP0 00000005 RP1 00000006 Return_Read 0000004B MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 7 SYMBOL TABLE LABEL VALUE Return_Write 0000002B SBODEN 00000004 SCS 00000000 STATUS 00000003 SWDTEN 00000000 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1GINV 00000007 T1GSS 00000001 T1OSCEN 00000003 TMR0 00000001 TMR1CS 00000001 TMR1GE 00000006 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TRISA 00000085 TRISC 00000087 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 ULPWUE 00000005 VR0 00000000 VR1 00000001 VR2 00000002 VR3 00000003 VRCON 00000099 VREN 00000007 VRR 00000005 W 00000000 WDA 00000097 WDA0 00000000 WDA1 00000001 WDA2 00000002 WDA4 00000004 WDA5 00000005 WDTCON 00000018 WDTPS0 00000001 WDTPS1 00000002 WDTPS2 00000003 WDTPS3 00000004 WPUDA 00000095 WPUDA0 00000000 WPUDA1 00000001 MPASM 5.14 EEPROM.ASM 4-25-2008 16:32:27 PAGE 8 SYMBOL TABLE LABEL VALUE WPUDA2 00000002 WPUDA4 00000004 WPUDA5 00000005 WR 00000001 WREN 00000002 WRERR 00000003 WR_WAIT 00000016 Z 00000002 _BOD_NSLEEP 00003EFF _BOD_OFF 00003CFF _BOD_ON 00003FFF _BOD_SBODEN 00003DFF _CPD_OFF 00003FFF _CPD_ON 00003F7F _CP_OFF 00003FFF _CP_ON 00003FBF _EC_OSC 00003FFB _EXTRC_OSC_CLKOUT 00003FFF _EXTRC_OSC_NOCLKOUT 00003FFE _FCMEN_OFF 000037FF _FCMEN_ON 00003FFF _HS_OSC 00003FFA _IESO_OFF 00003BFF _IESO_ON 00003FFF _INTRC_OSC_CLKOUT 00003FFD _INTRC_OSC_NOCLKOUT 00003FFC _LP_OSC 00003FF8 _MCLRE_OFF 00003FDF _MCLRE_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FEF _WDT_OFF 00003FF7 _WDT_ON 00003FFF _WUREN_OFF 00003FFF _WUREN_ON 00002FFF _XT_OSC 00003FF9 __16F639 00000001 flag 00000000 Errors : 11 Warnings : 0 reported, 0 suppressed Messages : 0 reported, 15 suppressed