Hallo zusammen.

Ich hab vor mich im Bereich „PIC“ einzuarbeiten und auch schon fleißig gelesen. Nachdem ich wegen nem 3.3Volt-COM-Port verzweifelt meinen JDM-Brenner wieder zerlötet habe, hab ich nun den Brenner-3 erfolgreich am laufen. Hatte noch nen 7406 in meiner Bastelkiste gefunden gehabt

Entschieden hab ich mich, um anzufangen, für den „PIC16F84a“. Der ist bei vielen Basteleien weit verbreitet und kann noch nicht so viel, so daß ich hoffe, wenigstens damit klar zu kommen anfangs. Für die Programmiergeschichte hab ich mir das MPLAB-7.61 gezogen und installiert. Auf www.sprut.de sind einige Beispiele mit den ich anfangen wollte. Eine klasse Seite!

Mein erster Versuch war ne LED blinken zu lassen. Hab mir dazu ein kleines Testboard gelötet auf ner Lochraster wie hier im Forum vorgeschlagen. Ein fertiges „HEX“ zum testen gebrannt und mich über das Funktionieren gefreut.

Nun gings weiter mit dem Programm an sich. Ich wollte das mal im MPLAB selbst kompilieren. Und da häng ich nun der Verzweiflung nahe und hoffe hier auf jemanden, der mir das ein wenig genauer erklären könnte.

Ich habe ein Problem mit „ORG 0“ und dem Beispiel aus MPLAB wo das mit „PROG CODE“ und „STARTUP CODE“ in den Dateien „Example & Example2.asm“ drinne steht.

Erfolgreich konnte ich nur kompilieren, wenn ich anstatt „ORG 0“ „PROG CODE“ geschrieben hatte. Alles andere führte zum Fehler:

MPLINK 4.12, Linker Copyright (c) 2007 Microchip Technology Inc. Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000034 Errors : 1
Hab mich schon in der „16F84a.inc“ und der „16F84a.lnk umgesehen. In letzterer sind „Startup und Prog“ erwähnt. Nur ich blick das nicht, wie das nun zusammenhängt. Das mit dem ORG ist ja noch halbwegs nachvollziehbar.

Wie benutz ich diese Befehle anstatt dem „ORG“, vor allem wenn ich z.B. ne Taste programmieren möchte die einen Interrupt auslöst?

Hier mein Programm:

Code:
list p=16f84a                ;der Prozessortyp wird festgelegt 
include "p16f84a.inc"        ;die include-Datei mit vielen Festlegungen wird geladen

__config	_XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF


PROG	CODE 	; damit gehts
; ORG	0		; damit nicht

; Variablennamen vergeben 

loops   Equ     0x22            ; Zähler für Warteschleife  
loops2  Equ     0x23            ; Zähler für Warteschleife 

; Initialiesierung

        bsf     STATUS, RP0     ; auf Bank 1 umschalten 
        movlw   B'00000000'     ; PortB alle output 
        movwf   TRISB 			; ?
        bcf     STATUS, RP0     ; auf Bank 0 zurückschalten 
        clrf    PORTB           ; alle LEDs ausschalten 

; LED an RB0 einschalten  

        bsf     PORTB,0         ; LED an RB0 einschalten

; Blinken

Loop 
        call    Wait            ; Wartezeit 
        bcf     PORTB,0			; LED aus
		call	Wait
		bsf     PORTB,0         ; LED an
        goto    Loop  
  
; Warteschleife 250 ms 

Wait 
        movlw   D'250'          ; 250 ms Pause 
        movwf   loops  

Wai 
        movlw   .110           ; Zeitkonstante für 1ms 
        movwf   loops2 
Wai2    nop                    ;  
        nop 
        nop 
        nop 
        nop 
        nop 
        decfsz  loops2, F      ; 1 ms vorbei? 
        goto    Wai2           ; nein, noch nicht 
                               ; 
        decfsz  loops, F       ; 250 ms vorbei? 
        goto    Wai            ; nein, noch nicht 
        retlw   0              ; das Warten hat ein Ende

    end
Ich bin mir auch nicht sicher, ob das auch so richtig ist, wie ich es "zusammenkopiert" hab. Folgend die "Kompiliermeldungen":

Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "Uebung.asm" /l"Uebung.lst" /e"Uebung.err" /o"Uebung.o"
Warning[205] C:\MPLAB-PROGRAMME\UEBUNG.ASM 1 : Found directive in column 1. (list)
Warning[205] C:\MPLAB-PROGRAMME\UEBUNG.ASM 2 : Found directive in column 1. (include)
Warning[205] C:\MPLAB-PROGRAMME\UEBUNG.ASM 4 : Found directive in column 1. (__config)
Message[302] C:\MPLAB-PROGRAMME\UEBUNG.ASM 18 : Register in operand not in bank 0. Ensure that bank bits are correct.
Executing: "C:\Programme\Microchip\MPASM Suite\mplink.exe" "C:\Programme\Microchip\MPASM Suite\LKR\16f84a.lkr" "C:\MPLAb-Programme\Uebung.o" /o"Uebung.cof" /M"Uebung.map" /W
MPLINK 4.12, Linker
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0

MP2HEX 4.12, COFF to HEX File Converter
Copyright (c) 2007 Microchip Technology Inc.
Errors : 0

Loaded C:\MPLAb-Programme\Uebung.cof.
BUILD SUCCEEDED: Sun Aug 05 19:39:40 2007