Code:
'
' EEPROM Test Program for PIC18F1320
' ----------------------------------
' Melanie
' 07/04/2006
' ----------
'
' PIC Defines
' -----------
@ __CONFIG _CONFIG1H, _IESO_OFF_1H & _FSCM_OFF_1H & _INTIO1_OSC_1H
@ __CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L & _BORV_20_2L
@ __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_32K_2H
@ __CONFIG _CONFIG3H, _MCLRE_OFF_3H
@ __CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVR_ON_4L
@ __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
@ __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
@ __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
@ __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
@ __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
@ __CONFIG _CONFIG7H, _EBTRB_OFF_7H
'
' Hardware Defines
' ================
'
' PIC Speed
' ---------
Define OSC 8
'
' LCD Display
' -----------
Define LCD_DREG PORTB ' Port for LCD Data
Define LCD_DBIT 4 ' Use upper 4 bits of Port
Define LCD_RSREG PORTB ' Port for RegisterSelect (RS) bit
Define LCD_RSBIT 3 ' Port Pin for RS bit
Define LCD_EREG PORTB ' Port for Enable (E) bit
Define LCD_EBIT 2 ' Port Pin for E bit
Define LCB_BITS 4 ' Using 4-bit bus
Define LCD_LINES 2 ' Using 2 line Display
Define LCD_COMMANDUS 2000 ' Command Delay (uS)
Define LCD_DATAUS 50 ' Data Delay (uS)
'
' Other Ports
' -----------
LED var PortB.0
'
' Software Defines
' ----------------
CounterA var BYTE ' Just a Counter
DataA var BYTE ' Byte Variable for Data
DataB var BYTE
EEPROMError var BIT ' Error Flag
'
' EEPROM Presets
' --------------
Data @0,"This is a Test String that should be overwritten"
Data "by the Write to EEPROM routine"
'
' Start Program Here
' ==================
'
' Initalise PIC
' -------------
OSCCON=%01110010
ADCON1=%01111111
TRISB=%00000000
Low LED
Pause 2000
High LED
'
' Write to EEPROM
' ---------------
LCDOut $FE,1,"Writing EEPROM",$FE,$C0,"A="
For CounterA=0 to 255
DataA=255-CounterA
LCDOut $FE,$C2,#CounterA
Write CounterA,DataA
Next CounterA
LCDOut $FE,1,"Write Complete"
Pause 2000
'
' Read & Verify EEPROM
' --------------------
EEPROMError=0
LCDOut $FE,1,"Verifying EEPROM",$FE,$C0,"A="
For CounterA=0 to 255
LCDOut $FE,$C2,#CounterA
Read CounterA,DataA
DataB=255-CounterA
If DataA<>DataB then
LCDOut $FE,$C6,"E=",HEX2 DataB
LCDOut $FE,$CB,"R=",HEX2 DataA
EEPROMError=1
Pause 2000
LCDOut $FE,$C6,REP 32\11
endif
Next CounterA
LCDOut $FE,1,"Write Complete"
'
' Result
' ------
LCDOut $FE,$C0,"Chip Test "
If EEPROMError=0 then
LCDOut "Pass"
else
LCDOut "Fail"
endif
EndLoop:
Pause 500
Toggle LED
Goto EndLoop
end
And the result?
Bookmarks