Schau mal:
Code:
'============ PCF 8574 versuch_2 mit INT0=================================
$regfile = "m8def.dat"
$crystal = 10000000
$hwstack = 250
$swstack = 250
$framesize = 250
'##################### Config für LCD ####################################################
Config Lcd = 40 * 2
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5
Config Lcdbus = 4
Config Lcdmode = Port
Cursor On
Cls
'############################ Config I2C Bus ###################################
Config Scl = Portd.1 ' I2C-Port festlegen
Config Sda = Portd.0 ' I2C-Port festlegen
Config Portd.2 = Input 'Int0
Portd.2 = 1 'Pull up
'############################ Config INT0 #######################################
Config Int0 = Falling
On Int0 Int0_auswerten
Enable Int0
Dim Tasten As Byte
Dim Taste0 As Byte
Dim Taste1 As Byte
Dim Taste2 As Byte
Dim Zaehler As Word
Dim isr_flag As byte 'NEWNEWNEW
Enable Interrupts
'###############################################################################
Do
if isr_flag = 1 then
isr_flag = 0
I2cstart
I2cwbyte &B01110001 'lese Adresse von PCF8574A
I2crbyte Tasten , Nack
I2cstop
Locate 2 , 2
Lcd Tasten
Taste0 = Tasten.0
Taste1 = Tasten.1
Taste2 = Tasten.2
Locate 1 , 1
Lcd Tasten
Locate 1 , 7
Lcd Taste0
If Taste1 = 0 Then
If Taste0 = 0 Then
Zaehler = Zaehler + 1
Locate 1 , 30
Lcd " Arbeite!!"
Wait 1
Locate 1 , 30
Lcd " "
Wait 1
Locate 2 , 25
Lcd "Zaehler= " ; Zaehler ; " "
End If
End If
End If
Loop
End
'################# (INT0) ##################################
Int0_auswerten:
isr_flag = 1
Return
Lesezeichen