📄 eeprom.lst
字号:
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 <p16f639.inc> ; 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -