Anfänger PIC16F1518 läuft nicht

OP #2827367
Lesenswert?

Hallo zusammen!

Ich bin ein Anfänger... Mit dem Pic 12F628A und mit dem 16F629 komme ich 
zurecht und kann auch kleinere Programme schreiben.

Nun habe ich mich mal an den PIC16F1518 gewagt, mit dem Hintergrund 
diesen später mit C zu programmieren.

Aber zuerst wollte ich den mit Assembler in Betrieb nehmen.

Nur dieses Teil will einfach nicht starten.

Ich habe diesen auf einer kleinen SMD Platine mit einem 20MHz Quarz 
verbaut. Die SMD Kondensatoren am Quarz haben 22pF.

Nun dachte ich, vielleicht klappts ja mit dem internen Oszillator, 
allerdings bin ich auch da gescheitert.

Der PIC wird über eine ICSP-Leitung von dem Brenner 8 r5 von Sprut 
beschrieben. Wird ordnungsgemäß erkannt und gebrannt.
Aber startet nicht.

Nun muss ich dazusagen, dass der PIC kurzzeitig einmal eine 
Versorgungsspannung von 7,49 Volt hatte, weil ich den Spannungsregler 
dummerweise überbrückt hatte.
Kann man einen defekten PIC noch brennen?

Vielleicht kann ja einer mal über meinen Source-Code schauen, ob ich 
einen grundlegenden Denkfehler gemacht habe. Ich weiß nicht mehr 
weiter...

Dafür schonmal vielen Dank im voraus!
1
;##### Processor - Listing #########
2
  list p=16f1518
3

4
;##### File Include ################
5
  #include <p16f1518.inc> 
6

7
  ERRORLEVEL -302
8

9
;##### Configuration ###############
10

11
;    __CONFIG  _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _CLKOUTEN_OFF
12
    __CONFIG  _CONFIG1, _FOSC_HS & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF
13
    __CONFIG  _CONFIG2, _LVP_OFF
14

15
;###################################
16

17
;##### Init ########################
18
      org    0x00                 ;die Startadresse nach Reset ist 0, hier startet der PIC
19
      goto   main
20

21
init
22
    BANKSEL PORTC ;
23
    CLRF   PORTC ;Init PORTA
24
    BANKSEL LATC ;Data Latch
25
    CLRF   LATC ;
26
    BANKSEL ANSELC ;
27
    CLRF    ANSELC ;digital I/O
28
    BANKSEL TRISC ;
29
    MOVLW   B'00000000' 
30
    MOVWF   TRISC
31
;    BANKSEL OSCCON
32
;    BSF    OSCCON, 0 ;Internal Oscillator Block
33
;    BSF    OSCCON, 1
34
;    BSF    OSCCON, 3 ;16MHz
35
;    BSF    OSCCON, 4
36
;    BSF    OSCCON, 5
37
;    BSF    OSCCON, 6
38
;    BANKSEL OSCSTAT
39
;    BSF    OSCSTAT, 0
40
;    BCF    OSCSTAT, 1
41
;    BSF    OSCSTAT, 4
42
;    BCF    OSCSTAT, 5
43
;    BCF    OSCSTAT, 7
44

45
    return
46

47
;###################################
48

49
;##### Main ########################
50

51
main
52
      goto   init
53

54
mainloop
55

56
    BANKSEL PORTC
57
    bsf    PORTC,0  ;RC5
58
    bsf    PORTC,1 ;RC6
59
    bsf    PORTC,2  ;RC5
60
    bsf    PORTC,3  ;RC5
61
    bsf    PORTC,4  ;RC5
62
    bsf    PORTC,5  ;RC5
63
    bsf    PORTC,6  ;RC5
64
    bsf    PORTC,7  ;RC5
65

66
    GOTO mainloop
67

68

69
;###################################
70

71
    end
Gast #2827498
Lesenswert?

Hallo,

nach der Startadresse 0 springst du zuerst nach main, von main zu init 
(immer diese doofe Hüpferei) und dann verläßt du init mit dem 
return-Befehl!

Wohin soll der zurückkehren; du hast kein Unterprogramm aufgerufen.

Lösche erst mal den goto main Befehl und lasse das Programm bei Init 
starten. Lösche den return und den goto init Schmarrn.

Gewöhne dir an, weniger goto-Befehle zu "verbauen", verschlechtert die 
Lesbarkeit des Programms.

Es ist schwer zu sagen, ob der PIC die 7,5V überlebt hat. Da sie ja 
recht robust sind, besteht Hoffnung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren