TITLE "R/W EEPROM"
LIST P = 16C54
;Serial Eprom interface to PIC16C5X.
;REV 2.0 8/26/92.
;
;Define Equates:
;
PIC54 EQU 1FFH
;
PAGE
;
ORG 0
START
goto main ;run test program
;
PAGE
;
TRUE EQU 1
FALSE EQU 0
S93C46 EQU FALSE
S93LC46 EQU FALSE
S93C56 EQU FALSE
S93LC56 EQU FALSE
S93C66 EQU TRUE
S93LC66 EQU FALSE
wire3 equ TRUE
org8 EQU FALSE
;
IF S93LC46
IF org8
LC468 EQU TRUE
XC46 EQU FALSE
H16 EQU FALSE
H8 EQU FALSE
ELSE
LC468 EQU FALSE
XC46 EQU TRUE
H16 EQU FALSE
H8 EQU FALSE
ENDIF
ELSE
ENDIF
IF S93C46
LC468 EQU FALSE
XC46 EQU TRUE
H16 EQU FALSE
H8 EQU FALSE
ENDIF
IF S93C56 + S93C66 + S93LC56 + S93LC66
IF org8
H8 EQU TRUE
H16 EQU FALSE
LC468 EQU FALSE
XC46 EQU FALSE
ELSE
H16 EQU TRUE
H8 EQU FALSE
LC468 EQU FALSE
XC46 EQU FALSE
ENDIF
ELSE
ENDIF
;********************************************************************
;* Register Assignments *
;********************************************************************
indir equ 0 ;Use this register as source/desTInaTIon
;for indirect addressing.
pc equ 2 ;PIC Program Counter.
status equ 3 ;PIC Status Register.
fsr equ 4 ;File Select Register.
serial equ 5 ;Port used for 93CX6 control.
;The following four registers must be
;located consecuTIvely in memory.
cmd equ 1a ;This register contains the 4 bit
;command op code for 93CX6 as follows:
;bit 7 msb of command op code
;bit 6 next bit of op code
;bit 5 next bit of op code
;bit 4 lsb of op code
;bit 3 A8 of address in case of
;56/66 in 8 bit mode.
addr equ 1b ;memory address of lower 7/8 bits
highb equ 1c ;Used in read/write routines to store the
;upper byte of a 16 bit data word,
;or the data in a 8 bit data word
lowb equ 1d ;Used in read/write routines to store the
;lower byte of a 16 bit data word,
;or not used in 8 bit data word.
cnthi equ 1e ;Used as the upper byte of a sixteen bit
;loop counter in RDYCHK routine.
cnt equ 1f ;Used as the lower byte of a sixteen bit
;loop counter in RDYCHK routine, and
;elswhere as an eight bit counter.
temp_cmd equ 1e ;doubles as a temp register for cmd
temp_addr equ 1f ;doubles as a temp register for addr
;********************************************************************
;* Bit Assignments *
;********************************************************************
carry equ 0 ;Carry Flag of Status Register.
zflag equ 2 ;Zero Flag of Status Register.
cs equ 2 ;Port pin tied to CS on 93CX6.
din equ 1 ;Port pin tied to DI on 93CX6.
dout equ 1 ;Port pin tied to DO on 93CX6.
clock equ 3 ;Port pin tied to CLK on 93CX6.
;********************************************************************
;* General Assignments *
;********************************************************************
no_err equ 0
error equ 1
tries equ 20 ;After issuing a WRITE, ERASE, ERAL, or WRAL
;command, the approximate number of machine
;cycles X 256 to wait for the RDY status.
;This value must be adjusted for operating
;frequencies other than 4 MHz.
read equ b'10000000' ;read command op code
write equ b'01000000' ;write command op code
erase equ b'11000000' ;erase command op code
ewen equ b'00110000' ;erase enable command op code
ewds equ b'00000000' ;erase disable command op code
eral equ b'00100000' ;erase all command op code
wral equ b'00010000' ;write all command op code
;********************************************************************
;* Macro Definitions *
;********************************************************************
sel MACRO ;Selects the 93CX6 device.
bsf serial,cs ;Chip Select (CS) = '1' to select
ENDM ;the device
dsel MACRO ;De-select the 93CX6 device.
bcf serial,cs ;Chip Select (CS) = '0' to de-select
;the device.
ENDM
strtbt MACRO ;Issue the Start Bit to the 93CX6.
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』