Witam
Próbuję zaznajomić się z obsługą wejść i wyjść w PCF8574.
Na razie wejścia - mam odczyt 255 lub 11111111. Czy możliwy jest odczyt tak, aby dało się "wydzielić" poszczególne wejścia ?
Teraz robię to tak, ale może da się prościej i pojedyncze wejścia:
Próbuję zaznajomić się z obsługą wejść i wyjść w PCF8574.
Na razie wejścia - mam odczyt 255 lub 11111111. Czy możliwy jest odczyt tak, aby dało się "wydzielić" poszczególne wejścia ?
Teraz robię to tak, ale może da się prościej i pojedyncze wejścia:
$regfile = "m8def.dat" 'definicja procesora
$crystal = 4000000 'taktowanie procesora
$hwstack = 32 ' rozmiar stosu sprzętowego
$swstack = 10 ' rozmiar stosu
$framesize = 40 ' rozmiar ramki
Config Debounce = 30
'********************* Konfiguracja wyświetlacza
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.3 , Rs = Portc.1
Config Lcd = 24 * 2
'********************* Konfiguracja znaku specjalnego LCD
Deflcdchar 0 , 2 , 4 , 14 , 17 , 17 , 17 , 17 , 14 'znak "ó"
Deflcdchar 1 , 32 , 8 , 8 , 12 , 24 , 8 , 6 , 32 ' znak"ł"
'********************* Konfiguracja magistrali I2C
Config I2cdelay = 10 ' domyślnie tryb Slow
Config Sda = Portc.4
Config Scl = Portc.5
'********************* Konfiguracja podświetlania
Config Portb.0 = Output 'Podswietlanie Niebieskie
Reset Portb.0
Config Portb.1 = Output 'Podswietlanie Czerwone
Reset Portb.1
Config Portb.2 = Output 'Podswietlanie Zielone
Reset Portb.2
Dim A As Bit
Dim B As Bit
Dim C As Bit
Dim D As Bit
Dim E As Bit
Dim G As Bit
Dim Pcf8574port As Byte
Const Pcf8574write = 66
Const Pcf8574read = 67
Niebieski Alias Portb.0
Czerwony Alias Portb.1
Zielony Alias Portb.2
Niebieski = 1
Cursor Off
Cls
'******** Ustawienie pinów PCF8574 ( 1 - wejście, 0 - wyjście )
'I2cstart
'I2cwbyte Pcf8574write
'I2cwbyte 00011111
I2csend Pcf8574write , 255
'I2cstop
Do
Locate 2 , 1
Lcd Bin(pcf8574port)
I2creceive Pcf8574read , Pcf8574port
If Pcf8574port = 253 Then
A = 1
Else
A = 0
End If
If Pcf8574port = 254 Then
B = 1
Else
B = 0
End If
If Pcf8574port = 251 Then
C = 1
Else
C = 0
End If
If Pcf8574port = 239 Then
D = 1
Else
D = 0
End If
If Pcf8574port = 247 Then
E = 1
Else
E = 0
End If
If Pcf8574port = 255 Then
Locate 1 , 1
Lcd " "
End If
If A = 1 Then
Locate 1 , 1
Lcd "G" ; Chr(0) ; "ra "
End If
If B = 1 Then
Locate 1 , 1
Lcd "Lewo "
End If
If C = 1 Then
Locate 1 , 1
Lcd "Enter"
End If
If D = 1 Then
Locate 1 , 1
Lcd "Prawo"
End If
If E = 1 Then
Locate 1 , 1
Lcd "D" ; Chr(0) ; Chr(1)
End If
Loop
End