Datasheet
ElseIf COMMAND = CMD_SECURITY Then
' Respond to CMD_SECURITY
For I = 0 To 2
' First respond with three dummy bytes as per AT45DB011 specification
While USI_DATA_READY <> 1
Wend
USIDR = &H00
Reset USI_DATA_READY
Next I
For I = 0 To 127
' Then respond with 128-byte security register data
While USI_DATA_READY <> 1
Wend
USIDR = Lookup(I , SECURITY_REGISTER_DATA)
Reset USI_DATA_READY
Next I
End If
' Done communicating, set Hi-Z state on PB1 (MISO) port
Config PortB.1 = Input
Loop
End
' The interrupt routine
USI_OVERFLOW_INT:
Set USI_DATA_READY ' Indicate data received & ready
COMMAND = USIDR ' Get one byte from the SPI line
USISR = &B01_000000 ' Reset status register
Return
' Security register data - 128 bytes of known/accepted values
SECURITY_REGISTER_DATA:
Data &H80, &H2D, &H22, &H6F, &H52, &H6F, &H98, &HA9, &H21, &H25, &H5E, &H2D, &H2D, &H31, &HD2, &H39,_
&H18, &H1C, &H63, &H0C, &H31, &H21, &H2D, &H39, &H90, &HDE, &H94, &H6F, &H6B, &H77, &H73, &H7F,_
&H63, &H8C, &H88, &H84, &H80, &H9C, &H98, &H94, &H90, &HAD, &HA9, &HA5, &HA1, &HBD, &HB9, &HB5,_
&HB1, &HCA, &HCE, &HC2, &HC6, &HDA, &HDE, &HD2, &HD6, &HEB, &HEF, &HE3, &HE7, &HFB, &HFF, &HF3,_
&H0B, &H02, &H16, &H17, &H11, &H15, &H1F, &H22, &H00, &H00, &H46, &H00, &HFF, &HFF, &HAC, &HFF,_
&H30, &H30, &H4D, &H32, &H36, &H39, &H37, &H31, &H0F, &H1C, &H0C, &HFF, &HFF, &HFF, &HFF, &HFF,_
&H3F, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF,_
&HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF, &HFF
Listing 1: Code listing continued from previous page.
http://meteo.annoyingdesigns.com 20