1 | C-Code[c]
|
2 | '#####################################################################################
|
3 | '####################################Konfiguration####################################
|
4 | '#####################################################################################
|
5 |
|
6 | '###################
|
7 | 'Grundeinstellungen#
|
8 | '###################
|
9 | $regfile = "m644pdef.dat" 'Den verwendeten µC nennen
|
10 | $crystal = 20000000 'Angeben mit welcher Frequenz der µC arbeitet
|
11 | $hwstack = 256
|
12 | $swstack = 256
|
13 | $framesize = 256
|
14 | $baud = 19200
|
15 |
|
16 | '######################################
|
17 | 'IOs einstellen und Pullups aktivieren#
|
18 | '######################################
|
19 | Ddra = &B00000000 'IO Pins von PortA einstellen
|
20 | Ddrb = &B01110000 'IO Pins von PortB einstellen
|
21 | Ddrc = &B11111111 'IO Pins von PortC einstellen
|
22 | Ddrd = &B11111000 'IO Pins von PortD einstellen
|
23 | Porta = &B11111111 'Pullup Widerstände der Pins von PortA einstellen
|
24 | Portb = &B10001111 'Pullup Widerstände der Pins von PortA einstellen
|
25 | Portc = &B00000000 'Pullup Widerstände der Pins von PortA einstellen
|
26 | Portd = &B00000111 'Pullup Widerstände der Pins von PortA einstellen
|
27 |
|
28 | '###############################
|
29 | 'Hardwarekomponenten definieren#
|
30 | '###############################
|
31 |
|
32 | Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
|
33 |
|
34 | Config Timer2 = Pwm , Pwm = On , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'PWMs einstellen
|
35 | Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'PWMs einstellen
|
36 | Pwm3 Alias Pwm2b 'PWM Kanal einer LED zuweisen
|
37 | Pwm2 Alias Pwm1a 'PWM Kanal einer LED zuweisen
|
38 | Pwm1 Alias Pwm1b 'PWM Kanal einer LED zuweisen
|
39 | Pwm4 Alias Pwm2a
|
40 | Pwm1 = 0
|
41 | Pwm2 = 0
|
42 | Pwm3 = 0
|
43 | Pwm4 = 0
|
44 |
|
45 | '##############################
|
46 | 'Interruptsroutinen definieren#
|
47 | '##############################
|
48 |
|
49 | On Urxc Rs232_in
|
50 |
|
51 | '#####################
|
52 | 'Variablen einstellen#
|
53 | '#####################
|
54 |
|
55 | Dim Fn_var As Word
|
56 | Dim Dmx_kanal As Word
|
57 | Dim Dmx_wert As Byte
|
58 | Dim Prog_12_kanal_werte(512) As Byte
|
59 | Dim Rs232_pointer As Byte
|
60 | Dim Rs232_data As Byte
|
61 | Dim Rs232_wert As Byte
|
62 | Dim Rs232_kanal As Word
|
63 |
|
64 | '#######################
|
65 | 'Subroutinen definieren#
|
66 | '#######################
|
67 |
|
68 | 'Declare Sub Dmx_transceive
|
69 |
|
70 | '#####################
|
71 | 'Interrupts freigeben#
|
72 | '#####################
|
73 |
|
74 | Enable Urxc
|
75 | Enable Interrupts
|
76 |
|
77 |
|
78 | Waitms 500 'um zu sehen wann und ob sich der µC resettet
|
79 |
|
80 |
|
81 | '#####################################################################################
|
82 | '####################################Hauptprogramm####################################
|
83 | '#####################################################################################
|
84 |
|
85 | Do
|
86 |
|
87 | Pwm1 = Prog_12_kanal_werte(1)
|
88 | Pwm2 = Prog_12_kanal_werte(2)
|
89 | Pwm3 = Prog_12_kanal_werte(3)
|
90 | Pwm4 = Prog_12_kanal_werte(4)
|
91 |
|
92 | 'Dmx_transceive
|
93 |
|
94 | Loop
|
95 | End
|
96 |
|
97 |
|
98 |
|
99 | '#####################################################################################
|
100 | '##################################Interruptroutinen##################################
|
101 | '#####################################################################################
|
102 |
|
103 | Rs232_in:
|
104 |
|
105 | Incr Rs232_pointer
|
106 |
|
107 | Rs232_data = Udr0
|
108 |
|
109 | If Rs232_pointer = 1 Then
|
110 | If Rs232_data = 255 Then
|
111 | Rs232_pointer = 0
|
112 | Else
|
113 | Rs232_kanal = Rs232_data
|
114 | End If
|
115 | End If
|
116 |
|
117 | If Rs232_pointer = 2 Then
|
118 | If Rs232_data = 255 Then
|
119 | Rs232_pointer = 0
|
120 | Else
|
121 | Rs232_kanal = Rs232_kanal + Rs232_data
|
122 | End If
|
123 | End If
|
124 |
|
125 | If Rs232_pointer = 3 Then
|
126 | If Rs232_data = 255 Then
|
127 | Rs232_pointer = 0
|
128 | Else
|
129 | Rs232_kanal = Rs232_kanal + Rs232_data
|
130 | If Rs232_kanal = 0 Then Rs232_pointer = 0
|
131 | If Rs232_kanal > 512 Then Rs232_pointer = 0
|
132 | End If
|
133 | End If
|
134 |
|
135 | If Rs232_pointer = 4 Then Rs232_wert = Rs232_data
|
136 |
|
137 | If Rs232_pointer = 5 Then
|
138 | If Rs232_data = 255 Then
|
139 | Prog_12_kanal_werte(rs232_kanal) = Rs232_wert
|
140 | Rs232_pointer = 0
|
141 | End If
|
142 | End If
|
143 |
|
144 | If Rs232_pointer = 6 Then Rs232_pointer = 0
|
145 |
|
146 | Return
|
147 |
|
148 |
|
149 | '#####################################################################################
|
150 | '#####################################Subroutinen#####################################
|
151 | '#####################################################################################
|
152 |
|
153 |
|
154 | Sub Dmx_transceive:
|
155 | NOP
|
156 | End Sub
|
157 | [c]C-Code
|