Witam
Piszę program na Atmega16 w bascomie. Chciałam uruchomić klawiature 16 przycisków na 1 układzie pcf8574a, tak żeby każde naciśnięcie przycisku wyświetlało mi wartość na LCD.Znalazłam gdzieś rozwiązanie, niestety nie mogę sobie z tym poradzic ,robiąc symulacje w bascomie na wyświetlaczu wyświetla mi tylko 0, i nic się nie zmienia gdy naciskam przyciski, może ktoś zerknie na kod i mi coś podpowie lub podpowie mi jak inaczej rozwiązać ten problem.
wielkie dzięki za pomoc
'####################### Program configuration
$regfile = "m16def.dat"
$crystal = 8000000
Config Sda = Portb.7
Config Scl = Portb.1
Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portb.6 , E = Portb.2 , Rs = Portb.0
Config Adc = Single , Prescaler = Auto
Cls : Cursor Off
Dim Keyvalue As Byte
Declare Sub Klawiatura
Do
Keyvalue = 255
I2csend 112 , &B11111110
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 126 : Keyvalue = 0
Case 190 : Keyvalue = 10
Case 222 : Keyvalue = 11
Case 238 : Keyvalue = 12
End Select
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
'End Select
' End If
If Keyvalue > 15 Then
I2csend 112 , &B11111101
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 125 : Keyvalue = 1
Case 189 : Keyvalue = 2
Case 221 : Keyvalue = 3
Case 237 : Keyvalue = 13
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
If Keyvalue > 15 Then
I2csend 112 , &B11111011
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 123 : Keyvalue = 4
Case 187 : Keyvalue = 5
Case 219 : Keyvalue = 6
Case 235 : Keyvalue = 14
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
If Keyvalue > 15 Then
I2csend 112 , &B11110111
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 119 : Keyvalue = 7
Case 183 : Keyvalue = 8
Case 215 : Keyvalue = 9
Case 231 : Keyvalue = 15
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
Loop
Piszę program na Atmega16 w bascomie. Chciałam uruchomić klawiature 16 przycisków na 1 układzie pcf8574a, tak żeby każde naciśnięcie przycisku wyświetlało mi wartość na LCD.Znalazłam gdzieś rozwiązanie, niestety nie mogę sobie z tym poradzic ,robiąc symulacje w bascomie na wyświetlaczu wyświetla mi tylko 0, i nic się nie zmienia gdy naciskam przyciski, może ktoś zerknie na kod i mi coś podpowie lub podpowie mi jak inaczej rozwiązać ten problem.
wielkie dzięki za pomoc
'####################### Program configuration
$regfile = "m16def.dat"
$crystal = 8000000
Config Sda = Portb.7
Config Scl = Portb.1
Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portb.6 , E = Portb.2 , Rs = Portb.0
Config Adc = Single , Prescaler = Auto
Cls : Cursor Off
Dim Keyvalue As Byte
Declare Sub Klawiatura
Do
Keyvalue = 255
I2csend 112 , &B11111110
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 126 : Keyvalue = 0
Case 190 : Keyvalue = 10
Case 222 : Keyvalue = 11
Case 238 : Keyvalue = 12
End Select
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
'End Select
' End If
If Keyvalue > 15 Then
I2csend 112 , &B11111101
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 125 : Keyvalue = 1
Case 189 : Keyvalue = 2
Case 221 : Keyvalue = 3
Case 237 : Keyvalue = 13
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
If Keyvalue > 15 Then
I2csend 112 , &B11111011
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 123 : Keyvalue = 4
Case 187 : Keyvalue = 5
Case 219 : Keyvalue = 6
Case 235 : Keyvalue = 14
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
If Keyvalue > 15 Then
I2csend 112 , &B11110111
I2creceive 112 , Keyvalue
Select Case Keyvalue
Case 119 : Keyvalue = 7
Case 183 : Keyvalue = 8
Case 215 : Keyvalue = 9
Case 231 : Keyvalue = 15
Cls
Lcd "DEC:" ; Keyvalue
Wait 1
End Select
End If
Loop