$regfile = "m8def.dat" $crystal = 16000000 $baud = 2400 $hwstack = 200 $swstack = 200 $framesize = 200 Print "VacControl 1.0" Print "19.08.2014 A.Hermann" Print "Slavesystem" ' ############## Allgemeine Variablen ################# ' ############## ################# ################# Dim Ref As Single Dim Fak As Single Dim E As Bit Dim I As Byte Dim Druck_volt As Integer Dim Druck_bar As Single Dim Druck_bar_ As String * 10 Dim Incomming_data As String * 10 Dim Send As String * 10 Declare Sub Serial0charmatch ' ############## ADC Wandler Konfigurieren ################# ' ############## ################# ################# Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc ' ############## Serial In Konfigurieren ################# ' ############## ################# ################# Config Serialin = Buffered , Size = 20 , Bytematch = 13 Enable Interrupts ' ############## I/O Konfigurieren ################# ' ############## ################# ################# 'Link LED Link Alias Portd.6 Config Link = Output 'Run LED Run Alias Portd.5 Config Run = Output Test Alias Portb.0 Config Test = Output Gosub Init ' ############## Hauptprogramm ################# ' ############## ################# ################# Main: Do Toggle Run Waitms 50 Toggle Run Waitms 50 Druck_volt = Getadc(0) Waitms 50 'Print "Druck ADC= " ; Druck_volt Waitms 50 If E = 1 Then 'Bit auf 0 setzen E = 0 'lesen Input Incomming_data Noecho Print "Empf:" ; Incomming_data If Incomming_data = "132" Then Clear Serialin Toggle Test Toggle Link Waitms 25 Toggle Link Gosub Senden Else Clear Serialin !NOP End If Else !NOP End If Toggle Run Waitms 50 Toggle Run Loop End ' ############## Interruptroutine RS232 Empfang ################# ' ############## Bit setzen wenn Empfang da ist ################# Sub Serial0charmatch 'Print "EMPF" ; Incomming_data Toggle Link E = 1 Waitms 75 Toggle Link Disable Interrupts End Sub ' ############## Initialisierung ################# ' ############## bei Start ################# Init: 'Clear Serialin Run = 1 Link = 1 E = 0 Ref = 53.00 Fak = 18.44 Return ' ############## Druckwert über Uart Ausgeben ################# ' ############## wenn von Master angefordert ################# Senden: Send = "132000" 'Print "Sensor 1: " ; Druck_volt ; "Volt" Waitms 10 Druck_bar = Druck_volt - 36 'Referenz abziehen 'Print "Druck nach abzug" ; Druck_bar Druck_bar = Druck_bar / 18.44 'umrechen in bar Druck_bar = Druck_bar / 100 Druck_bar_ = Str(druck_bar) Druck_bar_ = Fusing(druck_bar , "#.##") Send = Send + Druck_bar_ Print Send Toggle Link Waitms 10 Toggle Test Toggle Link Waitms 10 Toggle Test Toggle Link Waitms 10 Toggle Test Toggle Link Waitms 10 Toggle Test 'Clear Serialin Enable Interrupts Return ' ############## Programmende ################# ' ################################################ End