ich hab hier mal ein bisschen code:
Code:
'--- [ Inizialize compiler ] ---------------------------------------------------
$regfile = "m168def.dat"
$crystal = 16000000
$baud = 9600
$framesize = 32
$swstack = 32
$hwstack = 32
'--- [ Config devices and timers ] ---------------------------------------------
Config Pind.6 = Output
Pwm_out Alias Pind.6
Config Portc.0 = Output
Dira Alias Portc.0
Config Portc.1 = Output
Dirb Alias Portc.1
Audio Alias Portd.5
Config Scl = Portc.5
Config Sda = Portc.4
Config Pinc.3 = Input
Inp_start Alias Pinc.3
Config Pinc.2 = Input
Inp_libelle Alias Pinc.2
Config Portb.0 = Output
Led_red Alias Portb.0
Config Portb.1 = Output
Led_yellow Alias Portb.1
Config Portb.2 = Output
Led_green Alias Portb.2
Inp_stop Alias Pind.2
Phase_a Alias Pind.3
Phase_b Alias Pind.4
'Timer0 as PWM
Tccr0a = &B11000001
Tccr0b = &B00000001
Tcnt0 = &B00000000
Timsk0 = &B00000000
Tifr0 = &B00000000
Ocr0a = 255
'Timer1 as clock
Config Timer1 = Timer , Prescale = 256
Const Clock = 3036
'--- [ Declare SUBs ] ----------------------------------------------------------
Declare Sub Direction(byval Var As Byte)
Declare Sub Speed(byval Var As Byte)
Declare Sub Engine(byval Var As Integer)
Declare Sub Snd(byval Freq As Integer)
'--- [ Declare variables ] -----------------------------------------------------
Dim Daten(30) As String * 19 'Messdaten
Dim Soll As Integer 'Sollwert
Dim Nextsoll As Integer 'Nächster Sollwert
Dim Ist As Integer 'Ist Position
Dim Hits As Byte 'Anschläge
Dim Libelle As Bit 'Libelle
Dim Result As Bit 'Messungsergebnis
Dim Action As Byte 'Aktuelle Aktion
Dim Adminmode As Bit 'Administrationsmodus
Dim Buffer As String * 5 'RS232 Buffer
Dim Year As Integer 'Jahr
Dim Month As Integer 'Monat
Dim Day As Integer 'Tag
Dim Hour As Integer 'Stunde
Dim Minute As Integer 'Minute
Dim Second As Integer 'Sekunde
Dim Tresult As String * 5 'Zeitstring
Dim Dresult As String * 8 'Datumstring
Dim B1 As Byte 'HV
Dim I1 As Integer 'HV
Dim I2 As Integer 'HV
Dim S1 As String * 1 'HV
Dim S2 As String * 1 'HV
Dim Start_setted As Bit 'S_HV
'--- [ Inizialize variables and constants ] ------------------------------------
Const Fwd = 1
Const Bwd = 0
Const Limit = 9900
Const Cm_ink = 44
Const Volhigh = 500
Const Volmiddle = 800
Const Vollow = 1500
Start_setted = 0
Soll = 0
Nextsoll = 0
Ist = 0
Hits = 0
Libelle = 0
Result = 0
Action = 0
Adminmode = 0
Buffer = ""
Year = 2000
Month = 1
Day = 1
Hour = 0
Minute = 0
Second = 0
Tresult = ""
Dresult = ""
'--- [ Inizialize Interrupts ] -------------------------------------------------
Sreg.7 = 0
On Int0 Isr_stop 'On Rising Edge
On Int1 Isr_incremental_encoder 'On Pinchange
On Pcint1 Isr_pc1
On Timer1 Isr_clock 'On Timer1
On Urxc Isr_data 'On Urxc
Eicra = &B00000111
Eimsk = &B00000011
Eifr = &B00000011
Pcicr = &B00000010
Pcifr = &B00000010
Pcmsk2 = &B00000000
Pcmsk1 = &B00001100
Pcmsk0 = &B00000000
Enable Timer1
Enable Urxc
Sreg.7 = 1
'--- [ Start secuence ] --------------------------------------------------------
Echo Off
Gosub Clrdata
Ist = 0
Dira = 1
Dirb = 0
Call Speed(0)
'--- [ Main loop ] -------------------------------------------------------------
Do
nop
Loop
End
'--- [ Interrupt service routine ] ---------------------------------------------
Isr_incremental_encoder:
If Phase_b <> Phase_a Then
Decr Ist
Else
Incr Ist
End If
If Dira = 1 Then
If Ist => 1000 Then
Dira = 0
Dirb = 1
End If
End If
If Dirb = 1 Then
If Ist =< 0 Then
Dira = 1
Dirb = 0
End If
End If
Print Ist
Return
schaut bitte mal drüber
wegen meinem vorredner
da Bascom ja allenmöglichen schrott mit timer0 anstellt und dann der chip intern crasht? ka? ich kenn das Problem nicht, aber ich muss es finden......
tobi
Lesezeichen