NEW DATABASE - 350 MILLION DATASHEETS FROM 8500 MANUFACTURERS
X24C01 X24C01A/02/04/08/16 74HC04 X24C44/45 Z8681 AN01-1 24C01 000CH A8-15 - Datasheet Archive
AN01 Interfacing the X24C01 to Zilog Z8 Microcontrollers by Applications Staff, June 1995 2 The following code demonstrates how
Application Note AN01 Interfacing the X24C01 X24C01 to Zilog Z8 Microcontrollers by Applications Staff, June 1995 2 The following code demonstrates how the Xicor 2 X24C01 X24C01 serial E PROM could be interfaced to the Zilog Z8 microcontroller family when connected as shown in Fig. 1. The interface uses two of the port pins available on the Z8 family of devices to implement the interface. However, this interface code is specific to the X24C01 X24C01 device. Additional Xicor code can be found on the Xicor BBS (or through the Xicor FaxBack system) that will implement an interface between the X24C01A/02/04/08/16 X24C01A/02/04/08/16 family of U3A CLK 12M z H 8 1 U3B 2 74HC04 74HC04 3 U2 4 74HC04 74HC04 2 I C compatible serial E PROMs or the X24C44/45 X24C44/45 serial NOVRAMs and the Z8 microcontroller family. The Xicor BBS can be reached toll free at 1-800-2588864, or in the (408) area code and internationally at 1-408-943-0655. Xicor's BBS will support up to a 19.2K baud rate modem (no parity, 8 bit words, 1 stop bit, and no local echo). These listings can be found in the ZILOG SIG (Special Interest Group). Xicor application notes are also available through Xicor's FaxBack system at (408) 954-1627. 3 2 6 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 XTAL1 XTAL2 RESET PO0 PO1 PO2 PO3 PO4 PO5 PO6 PO7 P10 P11 P12 P13 P14 P15 P16 P17 P30 P31 P32 P33 P34 P35 P36 P37 P20 P21 P22 P23 P24 P25 P26 P27 AS R/ W DS 5 39 12 30 29 10 40 4 VCC 31 32 33 34 35 36 37 38 VCC U1 6 SCL SDA 5 X24C01 X24C01 9 7 8 Z8681 Z8681 Figure 1 - Typical hardware connection for interfacing an X24C01 X24C01 to the Z8 microcontroller family Xicor, Inc. · 1511 Buckeye Drive · Milpitas, CA 95035 · (408) 432-8888 AN01-1 AN01-1 Xicor Application Note AN01 ;* ;* This code was designed to demonstrate how the Xicor 24C01 24C01 could ;* be interfaced to the Z8 microcontroller. The interface uses 2 ;* lines from Port 2 (p2.0 and p2.1) to communicate. The code shown ;* demonstrates a 'random read' and 'byte write'. The other modes of ;* operation can be created by expanding upon these routines. ;* Acknowledge polling is used to determine when the write cycle is ;* complete. ;* REVISED: JANUARY 1997 ;* SDAHI SDALO SCLHI SCLLO LOADDR .equ .equ .equ .equ .equ #01h #0FEh #02h #0FDh r4 DATA1 TEMP COUNT COUNT2 .equ .equ .equ .equ ; ; ; ; ; ; ; ; ; ; r6 r7 r8 r9 MASK USED TO FORCE SDA HIGH SDA LOW SCL HIGH SCL LOW LOCATION FOR 24C01 24C01 ADDRESS TO ACCESS LOW ORDER LOCATION FOR 24C01 24C01 DATA TRANSFERED SCRATCH PAD BYTE COUNTER VARIABLE COUNTER USED FOR ACK POLLING ;* ;* RESET TO LOCATION 000CH 000CH. A8-15 A8-15 ARE HI-Z AND HAVE PULL-UPS ;* SO THE EXTERNAL ADDRESS APPEARS TO BE 0FF0CH. ;* RESETV: .org jp 0FF0Ch 0FF0Fh ; RESET VECTOR LOCATION ; CHANGE PROGRAM COUNTER FROM 00XXH 00XXH TO ; FFXXH ;* ;* INITIALIZE PROCESSOR ;* INITL: .org ld ld srp ld ld ld ld ld jp 0FF0Fh p0,#0FFh p01m,#96h #00h p2,#0FFh p2m,#00h p3m,#00h SPL,#7Fh SPH,#00h BEGIN1 ; ; ; ; ; ; ; ; INITIALIZE PROCESSOR MAKE PORT0 (ADD 8-15) 0FFH MAKE PORT0 UPPER ORDER ADDRESS REGISTER POINTER TO FIRST BANK INITIALIZE PORT 2 TO 0FFH MAKE PORT 2 AN OUTPUT REGISTER MAKE PORT2 OUTPUTS OPEN DRAIN SET STACK POINTER TO 007FH 007FH ; JUMP TO START OF PROGRAM ;* ;* BEGINNING OF CODE TO READ AND WRITE TO DUT (DEVICE UNDER TEST) ;* BEGIN1: DONE: .org ld call ld call call jp 0E000h LOADDR,#2Dh RDBYT LOADDR,#41h WRBYT ACKPOL DONE ; READ DATA FROM ADDRESS #002DH 002DH ; WRITE DATA TO ADDRESS #0041H 0041H ; USE ACKNOWLEDGE POLLING ; LOOP UNTIL RESET AN01-2 AN01-2 Xicor Application Note AN01 ;* ;* READ A BYTE "RANDOM READ SEQUENCE". THE ADDRESS TO READ IS STORED ;* IN LOADDR. THE DATA FROM THE DUT IS STORED IN DATA1. ;* RDBYT: call START ld rl or call call call call call ret DATA1,LOADDR DATA1 DATA1,#01h OUTBYT NACK INBYT NACK STOP ; READ A BYTE FROM THE ADDRESS ; INDICATED ; ; ; ; ; SEND WORD ADDRESS SET SDA HIGH TO RECEIVE ACKNOWLEDGE READ DATA FROM 24C01 24C01 CLOCK WITHOUT ACKNOWLEDGE SEND STOP COMMAND ;* ;* WRITE A BYTE "BYTE WRITE SEQUENCE". THE ADDRESS TO WRITE IS STORED ;* IN LOADDR AND HIADDR. THE DATA TO WRITE IS STORED IN DATA1. ;* WRBYT: push call ld rl call call pop call call call ret DATA1 START DATA1,LOADDR DATA1 OUTBYT NACK DATA1 OUTBYT NACK STOP ; WRITE TO BYTE POINTED TO BY ADDR ; SEND START COMMAND ; SEND WORD ADDRESS ; SET SDA HIGH TO RECEIVE ACKNOWLEDGE ; SEND WRITE DATA ; SET SDA HIGH TO RECEIVE ACKNOWLEDGE ; SEND STOP ;* ;* READ 8 BITS FROM THE DUT. THE RESULTS ARE RETURNED IN DATA1. ;* INBYT: LOOPI: ld ld call rlc djnz ld ret p2m,SDAHI COUNT,#08h CLOCK DATA1 COUNT,LOOPI p2m,#00h ; READ 8 BITS, MAKE SDA AN INPUT ; ; ; ; CLOCK DATA STORE DUT DATA IN DATA1 LOOP UNTIL 8 BITS ARE READ MAKE SDA AN OUTPUT ;* ;* WRITE 8 BITS TO THE DUT. THE DATA TO SEND IS IN DATA1. ;* OUTBYT: LOOPO: IS1: ld rlc jp and jp or COUNT,#08h DATA1 C,IS1 p2,SDALO BITSET p2,SDAHI ; ; ; ; PREPARE TO ROTATE BIT SEND CARRY WRITE 0 TO SHIFT OUT 8 BITS TO SEND INTO CARRY FLAG TO SDA SDA ; WRITE 1 TO SDA AN01-3 AN01-3 Xicor Application Note BITSET: call djnz AN01 CLOCK COUNT,LOOPO ; SEND CLOCK SIGNAL TO DUT ; LOOP UNTIL ALL 8 BITS HAVE BEEN ; SENT ret ;* ;* PERFORM ACKNOWLEDGE POLLING TO DETERMINE WHEN THE WRITE CYCLE ;* COMPLETES. UPON RETURN FROM THIS ROUTINE THE CARRY BIT INDICATES ;* WHETHER THE DUT EVER ACKNOWLEDGED THE WRITE. CARRY=0 PART ;* ACKNOWLEDGED, CARRY=1 NO ACKNOWLEDGE RECEIVED. ;* ACKPOL: ld COUNT2,#80h AKLOOP: djnz jp call ld call ld call ld jp call call ret COUNT2,LOOK OUTACK START DATA1,#00h OUTBYT p2m,SDAHI NACK p2m,#00h c,AKLOOP START STOP LOOK: OUTACK: ; ; ; ; ; ; ; ; ; ; ; ; ; MAX NUMBER OF TIMES TO CHECK THE PART RETURN IF THE PART NEVER ISSUES AN ACKNOWLEDGE SET UP TO READ A BYTE BUILD SLAVE ADDRESS SEND SLAVE ADDRESS MAKE SDA AN INPUT SEE IF PART ACKNOWLEDGES MAKE SDA AN OUTPUT LOOP IF NO ACKNOWLEDGE RECEIVED ISSUE A START ISSUE A STOP BEFORE RETURNING ;* ;* ISSUE A STOP COMMAND ;* STOP: and or nop nop nop nop or ret p2,SDALO p2,SCLHI ; SEND STOP CONDITION TO DUT, SDA LOW ; SCL HIGH p2,SDAHI ; SDA HIGH ;* ;* ISSUE A START COMMAND ;* START: or or nop nop nop nop and nop nop nop nop and ret p2,SDAHI p2,SCLHI ; SEND START CONDITION TO DUT, SDA HIGH ; SCL HIGH p2,SDALO ; SDA LOW p2,SCLLO ; SCL LOW AN01-4 AN01-4 Xicor Application Note AN01 ;* ;* ISSUE AN ACKNOWLEDGE. ;* ACK: and call ret p2,SDALO CLOCK ; PERFORM AN ACKNOWLEDGE, SDA LOW ; GENERATE A CLOCK PULSE ;* ;* CLOCK IN A 1 TO THE DUT. THE NACK ROUTINE DOES NOT CHECK TO SEE ;* IF THE DUT ACTUALLY ISSUES AN ACKNOWLEDGE. ;* NACK: or call ret p2,SDAHI CLOCK ; SET SDA HIGH TO RECEIVE ACKNOWLEDGE ; GENERATE A CLOCK PULSE ;* ;* ISSUE A CLOCK PULSE. WHILE THE CLOCK IS HIGH THE VALUE ON THE ;* SDA LINE IS PLACED IN THE CARRY FLAG. WHEN A READ IS TAKING ;* PLACE THE CARRY FLAG WILL INDICATE THE VALUE FROM THE DUT. ;* CLOCK: nop nop or nop nop ld rrc and ret p2,SCLHI ; BRING SCL HIGH TEMP,p2 TEMP p2,SCLLO ; READ SDA ; SAVE SDA VALUE IN CARRY ; SCL LOW .end AN01-5 AN01-5