|
- ' TWI-slave test
- ' zum simulieren eines PCF8574
- $regfile = "m16def.dat" ' the used chip
- $crystal = 8000000 ' frequency used
- Config Portd = Output ' kopletter PortD als Ausgang
- Dim Twi_status As Byte
- Dim Twi_data As Byte
- Declare Sub Twi_init_slave
- Declare Function Twi_wait() As Byte
- Twi_data = 0
- Call Twi_init_slave ' TWI aktivieren
- ' Hauptschleife
- Do
- Twi_status = Twi_wait()
- If Twi_status = &H80 Then
- Portd = Twi_data ' Daten auf PortD ausgeben
- End If
- Loop
- End
- ' Unterprogramme
- ' TWI als slave aktivieren
- Sub Twi_init_slave
- Twsr = 0 ' status und Prescaler auf 0
- Twdr = &HFF ' default
- Twcr = &B00000100 ' erstmal nur TWI aktivieren
- Twar = &B01000000 ' Slaveadresse setzen
- Twcr = &B01000100 ' dann ACK einschalten
- End Sub
- ' schauen ob was gekommen ist, Status zur¨¹ckgeben, Daten in globale variable
- Function Twi_wait() As Byte
- Local Twcr_local As Byte
- Twi_wait = &HF8
- ' warten bis TWINT gesetzt ist
- Twcr_local = Twcr And &H80
- If Twcr_local = &H80 Then
- Twi_data = Twdr ' Daten sichern
- Twi_wait = Twsr And &HF8 ' status zur¨¹ckgeben
- Twcr = Twcr Or &B10000000 ' TWINT l?schen, erzeugt ACK
- End If
- End Function
复制代码 |
|