also n Programm ohne Mainloop möcht mir irgendwie nicht recht gefallen.
Mit der Sub ohne Übergabewert hatt ich shconmal Ärger, weiß der Geier warum,
wenn eh keine Parameter übergeben werden tuts dann auch n gosub.
Probiers mal so:

Code:
'Grundeinstellungen und Variablendefinitionen
$baud = 9600                                                'Baudrate der UART: 9600

$regfile = "m8def.DAT"                                      'ATmega8-Deklarationen
$crystal = 8000000                                          'Quarz: 8 MHz


'Aliasse für die Ports
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Clockrate = 4 , Noss = 1       'Test mir Atmega wegen HardwareSPI

Cs_line Alias Portd.3


Config Cs_line = Output                                     'ss cs
Print "Hallo SPI TEST(CAN) RX Stauts 250kbits für atmega8 register auslesetest"

Spiinit
Set Cs_line
Waitms 20

gosub Mcp2515_init

do
' ###### Mainloop ######
loop


Mcp2515_init:

Dim Mcp2515_reset As Byte
Mcp2515_reset = &HC0

Print "init"

Cs_line=0
Spiout Mcp2515_reset , 1
Cs_line=1

print "init fertig"

....usw aber soweit kommt das programm ja leider nicht

return
end