PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1.Programm Taster betätigt, LED an



µautonom
26.08.2007, 15:47
Hallo, ich erwähne es nochmal habe erst vor kurzem mit der PICs angefangen
Benutze den PIC16F628A.

Zu meinem Programm.
Wenn ein taster betätigt wird soll eine LED leuchten, dazu benutze ich die Taster-und Led-Platien von Sprut.

Wenn RA0 (Taster) betätigt wird , an LED an (RB0)



;*************************************
;
; Includedatei für den PIC16F628A
list p=16f628a
include "p16f628a.inc"

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

_CONFIG _BOREN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;
;*************************************
;
; Pinfunktion festlegen

org 0x0000 ;Programmstart

clrf PORTA ;Comperators off
movlw 0x07 ;I/O Funktion ermöglichen
movwf CMCON

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

movlw 0x3F ;Pins config
movwf TRISA ;PORTA Input

movlw 0x00 ;PortB Output
movwf TRISB

bcf STATUS, RP0 ;Bank 0 auswählen

;***********************************************
;Taster abfragen , Led ausgeben
;Sollte das eigentliche Programm stehen
.
.
.

end


Problem ist ich weiß nicht wie ich das machen soll.
Mit dem 80C535 hätte ich das so gemacht, hab vor einem Jahr mit dem 80C535 gearbeitet, was auch nicht schwer ist.



anf:
mov a, p6.0 ;Schalter einlesen
jb p6.0, Ledan ;Schalter abfragen z.B 1, wenn betätigt = 1 springe zu Ledan
jmp anf ;Wenn Schlater unbetätigt zum Anfang springen ,Endlosschleife

Ledan: setb p4.0 ;Bit setzen , Led geht an
jmp anf

end



Nur beim PIC versteh ich nicht wie ich das umsetzen soll, Die PIns und den
PIC hab ich konfiguriert, wie man oben im Code sehen kann.
Ich häthe das so gemacht, das ich erst PORTA einlesen würde anschließend den ausgelsenen Wert in das Working Register schreiben wurde, wenn ein Bit gesetzt ist also Schlater betätigt LED anmachen ?? "setb" gibt es ja nicht bei den PIC-Befehlen.

Könnt ihr mir da weiterhelfen?

Wie sieht es noch mit dem Anschluss aus, wäre der dnan so richtig?
->siehe Anhang
Hab kein Eagle draufgehbat, sonst hätte ich es vernuenftig in Eagle gezeichnet :oops:

Mfg

digger
26.08.2007, 17:54
Versuch mal folgendes:

anf: btfss PORTA,x ; teste Bit x von Porta
goto Ledan ; springe,wenn Bit=0 (Schalter gedrückt)
bcf Portb,y ; nicht gedrückt--> Led aus
goto anf:
Ledan: bsf PORTB,y ; setze Bit y von Port B (Led)
goto anf

Ist die einfachste Variante ohne Tastenentprellung.

MfG
Digger

digger
26.08.2007, 18:08
Im Anhang ist mir noch was aufgefallen.
Jede LED braucht einen eigenen Widerstand
und der LS245 hat keine +5V-Versorgung (Pin 20)/Masse(Pin10).
Das Bild ist auch nicht so gut zu erkennen.

Viel Erfolg !
Digger

µautonom
26.08.2007, 19:02
Hallo

@digger werd ich probieren, danke. Werd mir gelich den Code angucken , mal schuan ob ich dne verstehe.

Ich hab statt dem LS245 den HCT245 genommen der braucht eine Versorungsspannung von 5V und hat einen Masse Asnchluss, die Pins sind dieselben wi ebeim LS245 glaub ich.

Den Masse Asnhcluss von der Led taster Platine muss ich doch mit dem Masseanschluss des PICS Vss verbinden? Kann ich auch die ext. 5Volt die ich für den PIC benutze auch für die beiden Platinen nehmen? Und stimmt der Code von mir oben?

Die beiden Stromlaufpläne vegrößert siehst du hier ->

http://sprut.de/electronic/pic/test/test_ledact/test_ledact_sch.gif
http://sprut.de/electronic/pic/test/test_tast8/test_tast8_sch.gif

EDIT: Der Code sieht mi logisch aus wnen ich mir den so angucke, denke das wird funzen, aber bitte les dir noch meien Fragen hier durch
Mfg

Mobius
26.08.2007, 19:08
Jede LED braucht einen eigenen Widerstand Also wenn ich jetzt nicht vollständig auf dem Holzweg bin, dann ist das Zeichen bei den LEDs ein Widerstandsarray, wo ein Ende der Winderstände zusammengeführt ist. D.h. jedes der LEDs hat nen Vorwiderstand.

Bei dem LS245 musst du mit "invoke IC2" (nat. ohne die Anfphrungszeichen ;)) die Pins der Versorgungsspannung sichtbar machen, sonst werden sie nur verbunden, wenn du statt dem +5V-Symbol den Vcc-Symbol verwendest.

lg
Mobius

µautonom
26.08.2007, 19:32
Hi, es werden überall Widerstandsarray benutzt. Di ebeiden Zeichnungen hab ich nicht erstellt , die sind von spruts Homepage, was meinst du mit Vcc verwenden. Sprut h aj aleider nirgends im Schaltplan ein Vcc verwendet aber muss an Pin1 "DIR" 5Volt Versorungsspannung? Pin20 Vcc die Versorungsspannungpin ist gar nicht eingetragen. Pin 19 wird doch mit Masse Verbunden richhtig.

Bei der Taster Platine Pin10 auch an +5V un dPin1 Masse, kann die Versorgungsspannung 5Volt die ich an den Pic schließe auch mit den versorgungpins für die beiden Platinen?


Mfg

toju80
26.08.2007, 20:18
Hi qautonom,

funktioniert dein Programm? Was ist z.B. mit dem Interrupt-Vektor? Vielleicht bringt dich das ein bisschen weiter……

org 0x00
goto main

org 0x04
retfie ; return vom Interrupt

org 0x10

MfG

µautonom
26.08.2007, 20:27
Hi, hatt enoch nicht die Möglichkeit, da mein Freund den Porgrammer ausgeliehen hat, morgen werd ichs testen, aber vorher wär ich froh wenn mir digger , mobius noch auf meinen letzten Beitrag antworten bevor ichs anschließe :D

Mfg

picprogger
27.08.2007, 11:44
Hallo,
ja du musst die 5V und Masse sogar vom Pic verwenden!

Gruß

µautonom
27.08.2007, 16:10
Hab versucht heuet den Quellcode zu übersetzen. Es kamen nen Haufen Fehlermedlungen raus :D

Ich hab keien Ahnung was die bedeuten. hab das Projket mit dem Wizzard erstellt und auch die 16f628a.lkr Linker Date unter Linker Source eingefügt

Bin jede Zeile durchgengangen mir ist nix aufgefallen falsche Schreibweise? Kann mir wer helfen?
Wenn ich bei gto anf den Doppelpunt wegmache ändert sich auch nix

Mfg[/code]

picprogger
27.08.2007, 16:27
Hallo,
zeige mal deinen ganzen Code den du versucht hast in den PIC zu brennen!??

Gruß

µautonom
27.08.2007, 16:32
;*************************************
;
; Includedatei für den PIC16F628A
list p=16f628a
#include p16f628a.inc

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

_CONFIG _BOREN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;
;*************************************
;
; Pinfunktion festlegen

CLRF PORTA ;Comperators off
MOVLW 0x07 ;I/O Funktion ermöglichen
MOVWF CMCON

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

MOVLW 0x3F ;Pins config
MOVWF TRISA ;PORTA Input

MOVLW 0x00 ;PortB Output
MOVWF TRISB

BCF STATUS, RP0 ;Bank 0 auswählen

org 0x0000
;***********************************************
;Taster abfragen , Led ausgeben
anf
BTFSS PORTA, RA0 ; teste Bit x von Porta
goto Ledan ; springe,wenn Bit=0 (Schalter gedrückt)
BCF PORTB, RB0 ; nicht gedrückt--> Led aus
goto anf
Ledan
BSF PORTB, RB0 ; setze Bit y von Port B (Led)
goto anf

end
Den COde den ich versucht hab zu übersetzen mit MPLAB.

EDIT: Hab was rausgefunden hab jetzt vor jedem Befehl ne Leertast egemacht dann sind die WARNUNGEn schoin mal weg



Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Led.asm" /l"Led.lst" /e"Led.err" /o"Led.o"
Warning[207] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 10 : Found label after column 1. (_CONFIG)
Error[122] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 10 : Illegal opcode (_BOREN_ON)
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 16 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 17 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 18 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 20 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 21 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 23 : Executable code and data must be defined in an appropriate section
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 24 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 26 : Executable code and data must be defined in an appropriate section
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 27 : Register in operand not in bank 0. Ensure that bank bits are correct.
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 27 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 29 : Executable code and data must be defined in an appropriate section
Error[113] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 35 : Symbol not previously defined (RA0)
Error[113] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 37 : Symbol not previously defined (RB0)
Error[113] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 40 : Symbol not previously defined (RB0)
Halting build on first failure as requested.
BUILD FAILED: Mon Aug 27 17:51:56 2007

µautonom
27.08.2007, 16:59
EDIT:// Hm da stimmt abr noch irgendwas nicht



;*************************************
; Includedatei für den PIC16F628A
list p=16f628a
include "p16f628a.inc"

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

__config _BOREN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;*************************************
#define taster PORTA,0
#define led PORTB,0

org 0x0000
goto main
; Pinfunktion festlegen
main
CLRF PORTA ;Comperators off
MOVLW 0x07 ;I/O Funktion ermöglichen
MOVWF CMCON

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

MOVLW 0x3F ;Pins config
MOVWF TRISA ;PORTA Input

MOVLW 0x00 ;PortB Output
MOVWF TRISB

BCF STATUS, RP0 ;Bank 0 auswählen

;***********************************************
;Taster abfragen , Led ausgeben
anf
BTFSS taster ; teste Bit x von Porta
goto Ledan ; springe,wenn Bit=0 (Schalter gedrückt)
BCF led ; nicht gedrückt--> Led aus
goto anf
Ledan
BSF led ; setze Bit y von Port B (Led)
goto anf

end



Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Led.asm" /l"Led.lst" /e"Led.err" /o"Led.o"
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 28 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 31 : 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\16f628a.lkr" "C:\Dokumente und Einstellungen\putkin\Eigene Dateien\Ledtest\Led.o" /o"LED.cof" /M"LED.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000022
Errors : 1

Link step failed.
BUILD FAILED: Mon Aug 27 18:18:50 2007





Mfg

picprogger
27.08.2007, 17:37
;*************************************
;
; Includedatei für den PIC16F628A
list p=16f628a
#include <p16f628a.inc>

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

__CONFIG _BOREN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;
;*************************************
org 0x00
goto main
; Pinfunktion festlegen
main
CLRF PORTA ;Comperators off
MOVLW 0x07 ;I/O Funktion ermöglichen
MOVWF CMCON

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

MOVLW 0x3F ;Pins config
MOVWF TRISA ;PORTA Input

MOVLW 0x00 ;PortB Output
MOVWF TRISB

BCF STATUS, RP0 ;Bank 0 auswählen


;***********************************************
;Taster abfragen , Led ausgeben
anf
BTFSS PORTA, 0 ; teste Bit x von Porta
goto Ledan ; springe,wenn Bit=0 (Schalter gedrückt)
BCF PORTB, 0 ; nicht gedrückt--> Led aus
goto anf
Ledan
BSF PORTB, 0 ; setze Bit y von Port B (Led)
goto anf

end

jeder befehl muss in einer Spalte stehen dadurch die meisten fehler
so müsste es jetzt gehen

Gruß

digger
27.08.2007, 17:45
So, da bin ich wieder.
Also der 245 ist ein bidirektionaler Treiber.
Mit H an DIR schaltet er von A nach B.
HCT ist o.k kann aber nicht soviel Strom liefern wie
der LS245 (24 mA bei L, 15mA bei H).
Generell können alle TTL mehr Strom gegen Gnd schalten als gegen VCC.
Pin 19 würde mit H alle Ein-u.Ausgänge hochohmig schalten.
Die Spannungsversorgung reicht für alle drei Schaltungsteile.

Ich hab deinen Code nochmal etwas modifiziert,
hab aber nicht rausgekriegt, wie ich dieses Codefenster
einbinden kann.

MfG
Digger

µautonom
27.08.2007, 17:54
hi,

@picprogger teste ich sofort

@digger du meinst so einCodefenster wie in meinem Beitrag?

EInfach auf "Code" im Nachrichtentext wnen du den verfasst udn anschließend weider auf "Code*" um das fenster zu schließen


EDIT:// Hab den Code ausprobiert es kommen ha nicht mehr diese Meldungen, aber es kommt die gleiche Fehlermedlung wie bei mir.



Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Dokumente und Einstellungen\putkin\Eigene Dateien\Ledtest\Led.o".
Clean: Deleted file "C:\Dokumente und Einstellungen\putkin\Eigene Dateien\Ledtest\Led.lst".
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Led.asm" /l"Led.lst" /e"Led.err" /o"Led.o"
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 28 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 31 : 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\16f628a.lkr" "C:\Dokumente und Einstellungen\putkin\Eigene Dateien\Ledtest\Led.o" /o"LED.cof" /M"LED.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000022
Errors : 1

Link step failed.
BUILD FAILED: Mon Aug 27 18:56:17 2007

Mfg

picprogger
27.08.2007, 17:57
Hey digger

[/code] für ende des codes
[code] für anfang des codes

digger
27.08.2007, 18:07
Hier nochmal die richtige Version.



;*************************************
;
; Includedatei für den PIC16F628A
list p=16f628a
include "p16f628a.inc"

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;***** VARIABLEN******************
w_temp EQU 0x70 ; context saving
status_temp EQU 0x71 ; context saving
Flags equ H'0072' ;
count equ H'0020'
tempa equ H'0021'
tweek equ H'0022'
;*********************************
; Pinfunktion festlegen

org 0x0000 ;Programmstart
goto INIT
org 0x004 ; Interruptbehandlung
INTSERV movwf w_temp ; W register retten
movf STATUS,w ; status register nach W register
movwf status_temp ; STATUS register retten
bcf STATUS,RP0 ; Bank0
bcf STATUS,RP1
; hier kommt später Code hin
; für eventuelle Interrupts
IntEnd movf status_temp,w ; STATUS register
movwf STATUS ; wieder herstellen
swapf w_temp,f
swapf w_temp,w ; W register wieder herstellen
; ( Inhalt wie vor Interrupt)
retfie ; Rücksprung aus Interruptbehandlung
;************************************************* ***************
INIT clrf INTCON ; keine Interrupts zulassen
bcf STATUS,IRP
bcf STATUS,RP0
bcf STATUS,RP1 ; Bank0

movlw 0x07 ;Comperators off
movwf CMCON ;I/O Funktion ermöglichen

clrf PORTA
clrf PORTB ; alle Ausgänge Low

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

movlw 0x3F ;Pins config
movwf TRISA ;PORTA 0-5 Input

movlw 0x00 ;PortB Output
movwf TRISB

bcf STATUS, RP0 ;Bank 0 auswählen
; hier bei Bedarf andere Register
; für Timer,CCP,EEprom,Usart,Vref
; initialisieren

;***********************************************
;Taster abfragen , Led ausgeben
;Hier steht das eigentliche Programm
;
Start btfss PORTA,0 ; "überspringe nächsten Befehl,wenn Taster nicht gedrückt
goto LedAn
bcf PORTB,0 ; Led aus
;andere Aufgaben hier
goto Start
LedAn bsf PORTB,0 ; Led an
goto Start

;**********SUB _Routinen*************************
DEL1MS movlw D'198' ;t=(n-1)*5+2(call)+6(ret)+7(Kopf)
movwf count
nop
goto $+1
goto $+1
DLY1MS goto $+1
decfsz count,f
goto DLY1MS
return
DEL200MS movlw D'199'
movwf tempa
DLY200 call DEL1MS
decfsz tempa,f
goto DLY200
movlw D'132'
movwf count
TWEEK200 decfsz count,f
goto TWEEK200
nop
return
DELAY500 movlw D'250'
movwf tempa
DLY500 call DEL1MS
decfsz tempa,f
goto DLY500
movlw D'64'
movwf tweek
TWEEK500 decfsz tweek,f
goto TWEEK500
movlw D'250'
movwf tempa
DLY501 call DEL1MS
decfsz tempa,f
goto DLY501
movlw D'64'
movwf tweek
TWEEK501 decfsz tweek,f
goto TWEEK501
return
end


Die Delay-Zeiten sind für 8Mhz angepasst, kann man
immer wieder mal gebrauchen.
Ansonsten hat das Programm bei mir im Simulator(MPLAB)
funktioniert.

Viel Erfolg!
Digger

µautonom
27.08.2007, 18:10
Hi, OHA du hast dir sehr viel Mühe gegeben , vielen Dank!

Werds mal testen.

EDIT:/// Ich verstehs nicht es kommt immer die Meldung ->



MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x0000008c
Errors : 1




Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Dokumente und Einstellungen\***\Eigene Dateien\Ledtest\Led.o".
Clean: Deleted file "C:\Dokumente und Einstellungen\***\Eigene Dateien\Ledtest\Led.lst".
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Led.asm" /l"Led.lst" /e"Led.err" /o"Led.o"
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 57 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\PUTKIN\EIGENE DATEIEN\LEDTEST\LED.ASM 60 : 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\16f628a.lkr" "C:\Dokumente und Einstellungen\putkin\Eigene Dateien\Ledtest\Led.o" /o"LED.cof" /M"LED.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x0000008c
Errors : 1

Link step failed.
BUILD FAILED: Mon Aug 27 19:16:51 2007


Was bedeutet das.

Mfg

digger
27.08.2007, 18:20
Ist die falsche Version, krieg ich irgendwie nicht editiert.
Also nochmal



;*************************************
;
; Includedatei für den PIC16F628A
list p=16f628a
include "p16f628a.inc"

;*************************************
; Configuration festlegen
; 8Mhz Resonator: Brown out Reset on, Data Protection off, Power up Timer on, Watchdog off, LV-Programmierung off

__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC & _LVP_OFF

;***** VARIABLEN******************
w_temp EQU 0x70 ; context saving
status_temp EQU 0x71 ; context saving
Flags equ H'0072' ;
count equ H'0020'
tempa equ H'0021'
tweek equ H'0022'
Blk equ H'0023'

;*********************************
; Pinfunktion festlegen

org 0x0000 ;Programmstart
goto INIT
org 0x004 ; Interruptbehandlung
INTSERV movwf w_temp ; W register retten
movf STATUS,w ; status register nach W register
movwf status_temp ; STATUS register retten
bcf STATUS,RP0 ; Bank0
bcf STATUS,RP1
; hier kommt später Code hin
; für eventuelle Interrupts
IntEnd movf status_temp,w ; STATUS register
movwf STATUS ; wieder herstellen
swapf w_temp,f
swapf w_temp,w ; W register wieder herstellen
; ( Inhalt wie vor Interrupt)
retfie ; Rücksprung aus Interruptbehandlung
;************************************************* ***************
INIT clrf INTCON ; keine Interrupts zulassen
bcf STATUS,IRP
bcf STATUS,RP0
bcf STATUS,RP1 ; Bank0

movlw 0x07 ;Comperators off
movwf CMCON ;I/O Funktion ermöglichen

clrf PORTA
clrf PORTB ; alle Ausgänge Low

BCF STATUS, RP1 ;Bank 1 auswählen
BSF STATUS, RP0

movlw 0x3F ;Pins config
movwf TRISA ;PORTA 0-5 Input

movlw 0x00 ;PortB Output
movwf TRISB

bcf STATUS, RP0 ;Bank 0 auswählen
; hier bei Bedarf andere Register
; für Timer,CCP,EEprom,Usart,Vref
; initialisieren

;***********************************************
;Taster abfragen , Led ausgeben
;Hier steht das eigentliche Programm
;
Start movlw 0xff
movwf PORTB ; alle Led an
movlw 0x05
movwf Blk ; Schleifenzähler Blinken
Blink call DELAY250 ; 0,25 sec warten
movlw 0xff
xorwf PORTB,f ;
decfsz Blk,f ; Schleife Blink 5 mal durchlaufen
goto Blink
Loop btfss PORTA,0 ; überspringe nächsten Befehl,wenn Taster nicht gedrückt
goto LedAn
bcf PORTB,0 ; Led aus
;andere Aufgaben hier
goto Loop
LedAn bsf PORTB,0 ; Led an
goto Loop

;**********SUB _Routinen für Warten*************************
DEL1MS movlw D'198' ;t=(n-1)*5+2(call)+6(ret)+7(Kopf)
movwf count
nop
goto $+1
goto $+1
DLY1MS goto $+1
decfsz count,f
goto DLY1MS
return
DELAY250 movlw D'248'
movwf tempa
DLY250 call DEL1MS
decfsz tempa,f
goto DLY250
movlw D'83'
movwf tempa
TWEEK250 decfsz tempa,f
goto TWEEK250
movlw D'250'
movwf tempa
DLY251 call DEL1MS
decfsz tempa,f
goto DLY251
movlw D'83'
movwf tempa
TWEEK251 decfsz tempa,f
goto TWEEK251
return
end

µautonom
27.08.2007, 18:28
Hi, digger ich weiss nicht was ich falsch mache aber es kommt immer die Medlung auch bei deinem letzten Code

Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000088
Errors : 1

Mfg

digger
27.08.2007, 18:39
So sieht's bei mir aus:
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "F:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "list3.asm" /l"list3.lst" /e"list3.err"
Message[302] C:\EIGENE DATEIEN\LIST3.ASM 58 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\EIGENE DATEIEN\LIST3.ASM 61 : Register in operand not in bank 0. Ensure that bank bits are correct.
Loaded C:\Eigene Dateien\list3.COD.
BUILD SUCCEEDED: Mon Aug 27 19:29:30 2007

Du hast irgendwo in den Properties den Linker
als Compile-Werzeug ausgewählt.
Den braucht man eigentlich nur, wenn für grössere
Projekte mehrere Code-Bibliotheken zusammengefügt werden müssen.
Da werden die Adressen für verschiedene Programmteile
erst beim Compilieren vergeben.
Deshalb mag der Linker keine org-Direktive.
Warning 302 kannst Du ignorieren, soll nur darauf hinweisen
dass für die folgende Befehlszeile die Bankbits stimmen müssen.

Wenns gar nicht anders geht kannst du auch
MPAsm.exe" /q /p16F628A "list3.asm" /l"list3.lst" /e"list3.err
von Hand aufrufen.

µautonom
27.08.2007, 18:49
Hi kannst du mir vielleicht sagen wie ich da genau vorgehen soll. Mache das immer so

Project - New
Rechtsklick auf "Source Files" dann die asm Datei hinzufügen
Dann weider bei "Linker Scripts" die 16f628a.lkr Datei hinzufügen
Ich hab vorher noch nie ein Project oder asm datei übersetzt, mache das zum 1.Mal

Hast du vielleicht Camtasia? Damit kann man den Desktop aufnehmen
http://software-portal.faz.net/ie/17614/Camtasia_Studio

Mfg

digger
27.08.2007, 19:06
Hab ich bei mir probiert, funktioniert auch,
allerdinfs hab ich keine Linker scripts ausgewählt.
Alles was der Assembler braucht ist mit dem include-
Befehl im Source schon angegeben.

Alternative:
Asm-File über File-Open öffnen und Projekt, Quickbuild starten.

Mit Debugger, Select Tool kannst du auch den Simulator auswählen
und so das Programm testen.
(Schrittbetrieb,Breakpoints,Stoppuhr für Laufzeiten und selbst einstellbare
Registerfenster sind da ganz praktisch).

µautonom
27.08.2007, 19:14
Danke es hat geklappt er hat endlich ein HEX-File erstellt :D

Danke digger danke

Das HEX-File brenn ich doch in den PIC indem ich den Programmer ICD2 auswähle und dann auf Programm gehe



MPLAB ICD 2 Ready
Programming Target...
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0x47)
Verifying...
...Program Memory
...Verify Succeeded
Programming Configuration Bits
.. Config Memory
Verifying configuration memory...
...Verify Succeeded
...Programming succeeded
27-Aug-2007, 20:20:08

MPLAB ICD 2 Ready

Das ist sieht doch gut aus

Kann ich dnan das ICSP Kabel aufach rasuziehen oder muss ich es noch irgendwie beenden? Hab jetzt das Kabekl einfach arusgezogen vom PIC

Mfg

JottSchi
27.08.2007, 20:56
Hallo,
ich arbeite mit der MPLAB IDE v7.60 und bekomme genau diesen org-error, obwohl ich den org-Teil aus dem Template für den 16F627 übernommen habe.

Gruß Jörg!

µautonom
27.08.2007, 21:19
Hi, dan mach das mal so wie Digger beschrieben hat.

Project -> Neu
File -> New bz.w Open halt deine Assembnler Datei öffnen
In "Source Files" hinzufügen rechte Maustatse und "ADD FILES.."

Project -> Set Active Project auf (None) Quickbuild Mode

Zum Schluss noch auf Project -> Make udn dnan sollte er dir eine Hex-File usw erstelln

Also dann hat es bei mir geklappt und es kamm nicht mehr diese Meldung mit dem org Error
Mfg

JottSchi
28.08.2007, 10:52
Hoi,
hatte gestern nicht gesehen, dass es noch eine Seite 2 bei diesem Thema gibt. Habe danach den Linker rausgeschmissen. Die HEX-Datei wurde sogleich ohne Probleme erstellt. Mein Velleman-Programmer hat sie problemlos verarbeitet. Das Programm läuft bestens.
Vielen Dank,
Jörg!

µautonom
28.08.2007, 10:55
Hi, keine Ursache.

Bei mir funktioniret auch alles hab eben das Programm real getestet ;) und es funzt. Nur ne kliene Frag ehab ich noch, wenn ich die Betriebsspannung anschalte blinkt die Led ein par Mal ohne das ich den Taster betätige, hast du das so programmiert Digger? ^^ Ist ein geiles Gefühl wenn die LEd blinkt xD
EDIT:// Ich sehe grad das du das so programmiert hast


Start movlw 0xff
movwf PORTB ; alle Led an
movlw 0x05
movwf Blk ; Schleifenzähler Blinken

Und danke euch allen, das ihr mir geholfen habt.

Mfg

JottSchi
13.09.2007, 19:48
Genau, der Linker muss rausgenommen werden. Den Fehler hatte ich auch zunächst. Der Linker möchte nämlich selbst über die zu vergebenden Adressen entscheiden, während du sie ihm praktisch schon fest vorgegeben hast.
Jörg!

chrisabi
05.04.2011, 21:13
Hallo,
ich bin neu in diesem Forum und versuche mich in der PIC - Programmierung.
Ich habe diesen Thred bei der Suche gefunden. Inzwischen ist viel Zeit vergangen aber die Probleme und Fehler bleiben.

Ich installierte MPLAB V8.66 und komme nach einigen Stunden Beschäftigung und der ersten Test ganz gut zurecht.

Leider taucht bei mir der behandelte Fehler :
MPLINK 4.38, Linker
Copyright (c) 1998-2010 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x0000001a
Errors : 1
ebenfalls auf.
Den oben beschriebenen Hinweisen folgend, suchte ich die Stelle in der Version V8.66, an der man den Linker ausschalten kann leider erfolglos.

Kann mir bitte jemand einen Hinweis geben, wo man dies in der Version 8.66 realsieren kann?

Vielen Dank.

chrisabi.