am basic programm ich komm und komm nicht drauf wie ich das ganz genau machen soll. ;o(
hab zwah schon was geschrieben aber das klappt sowieso net brauch ne andere lösung.
Code:
'###################################################
'Sven 17/04/05 Rev01
'
'##############################################################
'###################################################
'File and Variable declaration
'##############################################################
Declare Sub LCD()
Declare Sub post-treatment()
$regfile = "m8def.dat" 'controller definition file
Dim dummy1, dummy2 As Byte
Dim count_geschwindigkeit As Byte
Dim count_gesamt_zeit As Integer
'###################################################
'Initialisation and configuration of device
'##############################################################
$crystal = 16000000 'Quarzfrequenz
Config Adc = Single , Prescaler = Auto , Reference = Off 'Für Tastenabfrage und Spannungsmessung
Config Pinc.0 = Input 'Für Tastenabfrage
Portc.0 = 1 'Pullup Widerstand ein
Start Adc
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
'Bei einer anderen Referenzspannung muss die 2.5 durch entsprechend ersetzt werden
'Die Referenzspannung wird durch den Jumper JPREF bzw. Spindeltrimmer festgelegt
'ZU ÜBERPRÜFEN!!!!!
' Falls ein LCD Display angeschlossen ist
Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.3 , E2 = Portd.7 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
Config Lcd = 20 * 4
Config PinC.1 = Output 'pin C1 um LED1 zu steuern
Portc.1 = 1 'LED angesteuert
Config PinD.2 = Input 'pin C2 um phototransistor1 zum abfragen
Portc.2 = 1 'Pullup Widerstand ein
Config PinC.3 = Output 'pin C3 um LED2 zu steuern
Portc.3 = 1 'LED angesteuert
Config PinD.3 = Input 'pin C4 um phototransistor2 zum abfragen
Portc.3 = 1 'Pullup Widerstand ein
'###################################################
'Initialisation and configuration of variable
'##############################################################
dummy1 = 0
dummy2 = 0
'###################################################
'Main Programm
'##############################################################
Do
If ((PinD.2 = 1) & (dummy1=1))
dummy1 = 0
Endif
If ((PinD.3 = 1) & (dummy2=1))
dummy2 = 0
Endif
call post-treatment()
Call LCD()
Loop
End
'###################################################
'Sub Programm
'##############################################################
Sub LCD()
..
...
End Sub
Sub post-treatment()
Speed=3600*(count_geschwindigkeit + N_count0* timer_zeit_TMR0)
Gesamt_zeit = count_gesamt_zeit + N_count1* timer_zeit_TMR1
End Sub
'###################################################
'Interrupt Subroutine
'##############################################################
Sub ...()
If ((PinD.2 <> 0) & (dummy1 = 0)) 'Etwas in Lichtschrank 1
TMR0 (8 bit) init -> TMR0 config mit klein Prescaler, und benutzt für die Geschwindigkeit
N_count0=0
count_gesamt_zeit= TMR1(16 bit)Werte
TMR1 auf null einsetzen (init TMR1) -> TMR1 config mit gross prescaler
N_count_werte=N_count
N_count1=0
dummy1=1
Endif
If ((PIND.3 <>0) & (dummy2 =0)) 'Etwas in Lichtschrank 2
count_geschwindigkeit= TMR0(8 bit)Werte
dummy2=1
' If TMR1 overflow
'
' N_count1 = Ncount1+1 'kontrollieren der IF schleife (wäre es möglich zwo If in einer schleife ohne EndIF??)
'
' Endif
'ENDIF? Dies ist eine Verschachtelung
If TMR0 overflow
N_count0 = Ncount0+1
Endif
EDIT: Code-Tags eingefügt. regards, Moddy
Lesezeichen