Kod till denna koppling? (nybörjarfråga)
En gång till, använd code-taggarna så indenteringen inte tappas bort !!!
"1" = antal allokerade bytes. 2 eller större och man kunna kalla det
för en "array" där symbolen pekar till första adressen.
Bygger/länkar detta "rent" utan fel ?
(Jag hoppas verkligen du inte chansar och postar *otestad* kod !?)
"1" = antal allokerade bytes. 2 eller större och man kunna kalla det
för en "array" där symbolen pekar till första adressen.
Bygger/länkar detta "rent" utan fel ?
(Jag hoppas verkligen du inte chansar och postar *otestad* kod !?)
Testa om detta fungerar, för det gör det hos mig
har rättat en del och kommenterat ut en del.
Vet inte varför inte XORWF INTE fungerar hos mig, simulatorn visar OK men inte PICen
OBS att detta kör på intern oscillator!

Vet inte varför inte XORWF INTE fungerar hos mig, simulatorn visar OK men inte PICen

OBS att detta kör på intern oscillator!
Kod: Markera allt
list p=16F628a
#include <p16F628a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF
; ERRORLEVEL -302
;UDATA
COUNT1 EQU 2Ah
COUNT2 EQU 2Bh
;****Sätter portar****
;CODE
BANKSEL TRISA
MOVLW 00h ;Gör port A till output
MOVWF TRISA
BANKSEL PORTA
MOVLW 02h
;****kör en xor för att byta status på lysdioden****
Start
; XORWF PORTA,1 ; XORWF fungerar inte tillfredsställande på PORTA:-(
BSF PORTA,1 ;Sätt BIT1 i PORTA
CALL Delay
BCF PORTA,1 ;Rensa BIT1 i PORTA
;****kör en delay och går till Start****
;PAGESEL Delay
CALL Delay
GOTO Start
;****Subrutin för delay****
Delay
Loop1
DECFSZ COUNT1,1
GOTO Loop1
DECFSZ COUNT2,1
GOTO Loop1
RETURN
END
Men du har ju gjort om koden till den gamla "absolute mode" stilen !!??
Varför då ? Inte så bra...
> Vet inte varför inte XORWF INTE fungerar hos mig,.....
CMCON...
EDIT : Notera att koden som den var postad "i princip" fungerade
OK hos *mig* utan det fel som visades. Därför är det fortfarande
intressant att se original koden med code-taggarna!
Varför då ? Inte så bra...
> Vet inte varför inte XORWF INTE fungerar hos mig,.....
CMCON...
EDIT : Notera att koden som den var postad "i princip" fungerade
OK hos *mig* utan det fel som visades. Därför är det fortfarande
intressant att se original koden med code-taggarna!
Men åhh det missade jag... "sammanfogade" två exempel med hans variabelnamn då ändrade jag mina variabelnamn till hans därav detta.
Hittade nåt gammalt på datorn som nu skall förpassas till historien....
Den fallgropen IGEN. Jaja någon gång ska jag väl lära mig också. Nåja koden fungerar iaf men snyggt var det inte.
Hittade nåt gammalt på datorn som nu skall förpassas till historien....
Den fallgropen IGEN. Jaja någon gång ska jag väl lära mig också. Nåja koden fungerar iaf men snyggt var det inte.
Ok , som jag sade i inlägget så fungerade det inte med fetstil och code-taggar tillsammans. Jag ville visa vad som var ändrat bara...
Här är en exakt kopia av mig kod (som fortfarande inte fungerar).
Får detta fel när jag bygger:
Här är en exakt kopia av mig kod (som fortfarande inte fungerar).
Kod: Markera allt
list p=16F628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
;****Variablar****
;UDATA
COUNT1 RES 1
COUNT2 RES 1
;****Sätter portar****
;CODE
BANKSEL TRISA
movlw 00h ;Gör port A till output
movwf TRISA
BANKSEL PORTA
movlw 02h
;****kör en xor för att byta status på lysdioden****
Start
xorwf PORTA,1
;****kör en delay och går till Start****
PAGESEL Delay
call Delay
goto Start
;****Subrutin för delay****
Delay
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
return
end
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\f628Atmpo.o".
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\f628Atmpo.ERR".
Clean: Deleted file "f628Atmpo.lst".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "f628Atmpo.asm" /l"f628Atmpo.lst" /e"f628Atmpo.err" /o"f628Atmpo.o"
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "blink.asm" /l"blink.lst" /e"blink.err" /o"blink.o"
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 12 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 13 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Found directive in column 1. (BANKSEL)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 17 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 18 : Found opcode in column 1. (movlw)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 18 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 19 : Found opcode in column 1. (movwf)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 19 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Found directive in column 1. (BANKSEL)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 20 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 21 : Found opcode in column 1. (movlw)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 21 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 26 : Found opcode in column 1. (xorwf)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 26 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 30 : Found directive in column 1. (PAGESEL)
Message[312] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 30 : Page or Bank selection not needed for this device. No code generated.
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 31 : Found opcode in column 1. (call)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 31 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 32 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 32 : Executable code and data must be defined in an appropriate section
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 38 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 39 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 39 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 40 : Found opcode in column 1. (decfsz)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 40 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 41 : Found opcode in column 1. (goto)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 41 : Executable code and data must be defined in an appropriate section
Warning[203] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 43 : Found opcode in column 1. (return)
Error[152] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 43 : Executable code and data must be defined in an appropriate section
Warning[205] C:\DOCUMENTS AND SETTINGS\ADMIN\DESKTOP\PICPROG\BLINK.ASM 45 : Found directive in column 1. (end)
Halting build on first failure as requested.
BUILD FAILED: Thu Apr 12 19:19:10 2007
Ok nu har jag lagt till mellanslag innan alla komandon och koden ser ut så här:
Nu får jag följande meddelande:
Edit: Men när jag kör simulatorn får jag detta fel:
Kod: Markera allt
list p=16F628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
;****Variablar****
UDATA
COUNT1 RES 1
COUNT2 RES 1
;****Sätter portar****
CODE
BANKSEL TRISA
movlw 00h ;Gör port A till output
movwf TRISA
BANKSEL PORTA
movlw 02h
;****kör en xor för att byta status på lysdioden****
Start
xorwf PORTA,1
;****kör en delay och går till Start****
PAGESEL Delay
call Delay
goto Start
;****Subrutin för delay****
Delay
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
return
end
Ser detta ok ut?Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.o".
Clean: Deleted file "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.ERR".
Clean: Deleted file "blink.lst".
Clean: Deleted file "Test.cof".
Clean: Deleted file "Test.cod".
Clean: Deleted file "Test.hex".
Clean: Deleted file "Test.lst".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "blink.asm" /l"blink.lst" /e"blink.err" /o"blink.o"
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\ADMIN\Desktop\picprog\16f628a.lkr" "C:\Documents and Settings\ADMIN\Desktop\picprog\blink.o" /o"Test.cof" /M"Test.map"
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0
MP2COD 4.06, COFF to COD File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0
MP2HEX 4.06, COFF to HEX File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors : 0
Loaded C:\Documents and Settings\ADMIN\Desktop\picprog\Test.cof.
BUILD SUCCEEDED: Thu Apr 12 19:54:23 2007
Edit: Men när jag kör simulatorn får jag detta fel:
CORE-E0002: Stack under flow error occurred from instruction at 0x000005
> som jag sade i inlägget så fungerade det inte med fetstil och code-taggar tillsammans.
I couldn't care less...
POSTA KOD MED CODE-TAGGARNA!
Så ge f-n i och tyck en massa om hur just *du* ska posta kod,
gör som du blir ombedd. Jag har tre gånger bett dig att posta
koden med code-taggarna och du skiter fullständigt i det ett antal gånger.
När du till slut gör som du blir tillsagd så är ju felet helt uppenbart (vilket
var förväntat...).
Ursäkta tonen, men det börjar bli lite tjatigt...
TomasL > Jo, som nämndes för ett eller två inlägg sedan, första kollumnen (tecknet)
TomasL > på varje rad skall vara ett mellanslag.
FEL, tyvärr...
Du syftar till det *jag* skrev, och det var :
> Instruktioner får inte stå i position 1 på raderna...
Notera, *INSTRUKTIONER* får inte stå i position 1!
(I detta fall jämställs "direktiv" med "instruktioner", vilket ju var tydligt
av de felmeddelanden som postades lite senare i tråden).
Nu har Rocky_AL efter det bra tipset även dragit in *LABELS*, vilket
(högst sannolikt) ger de nya felen.
Så du får "stack underflow" p.g.a av att du inte har dina labels
"Start" och "Delay" i position 1. Själva assembleringen och länkningen
går dock OK, det är körningen som går galet, koden kommer att
komma till RETURN utan tidigare CALL (därav "stack underflow").
De rader som ska stå i pos 1 är följande fyra st :
COUNT1 RES 1
COUNT2 RES 1
Start
Delay
(I detta samanhang jämställs symboler med labels, det är ju
igentligen ingen skillnad, de representerar båda en adress, antingen
i RAM eller i Flash...)
En annan sak...
*Första* gången du postade felmeddelanden så var det de som kom från
MPLINK. Men det var väl inte alla meddelanden i "Output" fönstret !?
Fick du inte även alla de "Found directive/opcode in column 1."
meddelanden som du postade senare ? Funderade du inte *då* på vad
de kunde betyda?
Jo en sak till innan jag glömmer det, har jag nämnt code-taggarna ?
I couldn't care less...
POSTA KOD MED CODE-TAGGARNA!
Så ge f-n i och tyck en massa om hur just *du* ska posta kod,
gör som du blir ombedd. Jag har tre gånger bett dig att posta
koden med code-taggarna och du skiter fullständigt i det ett antal gånger.
När du till slut gör som du blir tillsagd så är ju felet helt uppenbart (vilket
var förväntat...).
Ursäkta tonen, men det börjar bli lite tjatigt...
TomasL > Jo, som nämndes för ett eller två inlägg sedan, första kollumnen (tecknet)
TomasL > på varje rad skall vara ett mellanslag.
FEL, tyvärr...
Du syftar till det *jag* skrev, och det var :
> Instruktioner får inte stå i position 1 på raderna...
Notera, *INSTRUKTIONER* får inte stå i position 1!
(I detta fall jämställs "direktiv" med "instruktioner", vilket ju var tydligt
av de felmeddelanden som postades lite senare i tråden).
Nu har Rocky_AL efter det bra tipset även dragit in *LABELS*, vilket
(högst sannolikt) ger de nya felen.
Så du får "stack underflow" p.g.a av att du inte har dina labels
"Start" och "Delay" i position 1. Själva assembleringen och länkningen
går dock OK, det är körningen som går galet, koden kommer att
komma till RETURN utan tidigare CALL (därav "stack underflow").
De rader som ska stå i pos 1 är följande fyra st :
COUNT1 RES 1
COUNT2 RES 1
Start
Delay
(I detta samanhang jämställs symboler med labels, det är ju
igentligen ingen skillnad, de representerar båda en adress, antingen
i RAM eller i Flash...)
En annan sak...
*Första* gången du postade felmeddelanden så var det de som kom från
MPLINK. Men det var väl inte alla meddelanden i "Output" fönstret !?
Fick du inte även alla de "Found directive/opcode in column 1."
meddelanden som du postade senare ? Funderade du inte *då* på vad
de kunde betyda?
Jo en sak till innan jag glömmer det, har jag nämnt code-taggarna ?

Första gången jag fick error så fick jag faktiskt inget om kolumn 1.
Däremot så har jag nu dragit in:
COUNT1 RES 1
COUNT2 RES 1
Start
Delay
Detta problem kvarstår (simulatorn alltså):
Däremot så har jag nu dragit in:
COUNT1 RES 1
COUNT2 RES 1
Start
Delay
Detta problem kvarstår (simulatorn alltså):
Får jag bara detta ok så är jag redo att köpa lite riktiga saker och labba.CORE-E0002: Stack under flow error occurred from instruction at 0x000005

Rocky_AL:PAGESEL behövs inte på denna processor står det som information när man bygger.
För att få igång debuggern kan du skriva in detta efter variabeldeklarationerna:
Istället för "Init" kan du skriva vad du vill men labeln bör stå precis innan du börjar med din initiering. För dig skulle det motsvara före satsen "BANKSEL TRISA" (Där skriver du alltså "Init" eller vilket namn du nu önskar i FÖRSTA kolumnen)
"CORE-E0002: Stack under flow error occurred from instruction at 0x000005"Slipper du med ovanstående, det är några skumma instruktioner som sätts på position 1-5 som gör att det blir fel. Kolla på "Program Memory" under "View" så syns det. Förstår inte riktigt var dessa kommer ifrån och just nu är det sängdags.
Troligen kan du få problem med COUNTx variablerna om du inte lägger in en BANKSEL före dem, detta beror dock på var i minnet kompilatorn väljer att lägga dem.
Offt:
Sodjan:Kan du förklara vad som är så "fiffigt" med CODE taggen?
Vet hur den defineras men ej riktigt hur den FUNGERAR. Har en gissning men är icke säker.
Har såklart läst manualen:
För övrigt visade det sig att XORWF VISST fungerar särskilt om man tar rätt hex-fil till PICen
edit:La till lite och upptäckte att min INTOSC nu verkligen snurrar sakta så nu är det verkligen dags att sova.
För att få igång debuggern kan du skriva in detta efter variabeldeklarationerna:
Kod: Markera allt
RST CODE 0x0
goto Init
"CORE-E0002: Stack under flow error occurred from instruction at 0x000005"Slipper du med ovanstående, det är några skumma instruktioner som sätts på position 1-5 som gör att det blir fel. Kolla på "Program Memory" under "View" så syns det. Förstår inte riktigt var dessa kommer ifrån och just nu är det sängdags.
Troligen kan du få problem med COUNTx variablerna om du inte lägger in en BANKSEL före dem, detta beror dock på var i minnet kompilatorn väljer att lägga dem.
Offt:
Sodjan:Kan du förklara vad som är så "fiffigt" med CODE taggen?
Vet hur den defineras men ej riktigt hur den FUNGERAR. Har en gissning men är icke säker.
Har såklart läst manualen:
Är det så att den kan lägga koden "där den passar" i minnet eller vad?Syntax
[label] code [ROM_address]
Description
This directive declares the beginning of a section of program code. If label is not specified, the section is named .code. The starting address is initialized to the specified address or will be assigned at link time if no address is specified.
För övrigt visade det sig att XORWF VISST fungerar särskilt om man tar rätt hex-fil till PICen

edit:La till lite och upptäckte att min INTOSC nu verkligen snurrar sakta så nu är det verkligen dags att sova.
"Sodjan: Kan du förklara vad som är så "fiffigt" med CODE taggen? "
EDIT: För att göra det övertydligt efter att jag läste inlägget igen: code-taggen i PHPBB, dvs forummjukvaran SLUT EDIT
Nu är jag inte sodjan, men jag kan förklara fördelarna med den i alla fall.
I många programmeringsspråk har det betydelse inte bara vilken texten är, utan även hur blanktecknen (radslut, mellanslag, tabbar) fördelas. Ett språk där dessa INTE är likvärdiga är exempelvis assembler. Precis som märkts ovan...
Code-taggen fungerar precis som HTML-taggen <pre>, dvs den skriver ut VARENDA tecken som angetts innanför. Det är INTE standardfallet för HTML mfl formateringsspråk (pröva gärna att skriva ett inlägg med väldigt många extra mellanslag mellan vissa ord). Dessutom använder code-taggen ett teckensnitt med fast teckenbredd, så att det går att följa kod som formaterats i kolumner (väldigt vanligt i assembler). Att följa en "snirklande" kolumn som man får med teckensnitt med varierande bredd är grymt irriterande och jobbigt. Mer edit: Dessutom döljs många fel när det fattas blanktecken (som synes ovan)
EDIT: För att göra det övertydligt efter att jag läste inlägget igen: code-taggen i PHPBB, dvs forummjukvaran SLUT EDIT
Nu är jag inte sodjan, men jag kan förklara fördelarna med den i alla fall.
I många programmeringsspråk har det betydelse inte bara vilken texten är, utan även hur blanktecknen (radslut, mellanslag, tabbar) fördelas. Ett språk där dessa INTE är likvärdiga är exempelvis assembler. Precis som märkts ovan...
Code-taggen fungerar precis som HTML-taggen <pre>, dvs den skriver ut VARENDA tecken som angetts innanför. Det är INTE standardfallet för HTML mfl formateringsspråk (pröva gärna att skriva ett inlägg med väldigt många extra mellanslag mellan vissa ord). Dessutom använder code-taggen ett teckensnitt med fast teckenbredd, så att det går att följa kod som formaterats i kolumner (väldigt vanligt i assembler). Att följa en "snirklande" kolumn som man får med teckensnitt med varierande bredd är grymt irriterande och jobbigt. Mer edit: Dessutom döljs många fel när det fattas blanktecken (som synes ovan)