Sida 3 av 4
Postat: 8 november 2008, 20:21:37
av Alex_k
Eller måste jag ställa om någon inställning eftersom att jag skrev koden i basic? I sånna fall hur gör jag det?

Postat: 8 november 2008, 20:22:18
av Alex_k
oj jag skulle sktiva ett svar i en anna tråd!

Postat: 8 november 2008, 20:24:05
av Alex_k
oj nu blev det konstigt... Jag trodde att jag hade råkar skiriva en ny tråd bara för att den hade bytt sida i tråden...

Postat: 8 november 2008, 21:35:29
av MadModder
Hördu, du vet väl att du kan ändra dina inlägg? Det ser bättre ut än att skriva flera korta inlägg i rad.
Postat: 8 november 2008, 21:57:33
av Alex_k
Nej, det visste jag inte... men nu vet jag. Man lär sig av sina misstag.
Men när man skriver en basic kod i MPLAB måste man ändra någon innstälning eller liknande för att MPLAB förstår vad man skriver eller är det bara att skriva vilket som helst?
Postat: 8 november 2008, 22:20:09
av Marta
Du behöver inte ändra någon inställning. Det räcker att byta ut MPLAB mot ett annat utvecklingsverktyg som använder BASIC istället för assembler. T.ex. MikroBASIC. Sedan om det är det rätta eller inte är en helt annan sak.
Vill Du kunna skriva små och effektiva program för attfå ut mesta möjliga ur processorn så håll fast vid assembler. Där är en tämligenhög tröskel för att komma igång och det finns inga genvägar. Du måste lära en del innan Du kan behärska det. När Du väl kommit över tröskeln så går det tämligen lätt.
Postat: 8 november 2008, 23:00:09
av Alex_k
Finns det inget annat gratis program som använder basic?
Postat: 8 november 2008, 23:50:17
av sodjan
Jo, men är det det verkligen det du behöver ?
Varför detta plötsliga hopp till BASIC ?
Och det heter "BASIC" inte "basic"...
Postat: 9 november 2008, 10:30:38
av Alex_k
Jag hade tänkt att först göra koden i BASIC sen göra koden i assembler. Det tycker jag efter som att jag precis har börjat med PIC programering och då hade jag tänkt att bara starta i BASIC för att kanske förstå någonting utav assembler. Men så fort jag har lyckats skriva programet som jag vill i BASIC så ska jag skriva det i assembler.
Postat: 9 november 2008, 11:45:22
av AndersG
Som sodjan redan påpekat så är assembler det bästa sättet att lära sig hur en PIC fungerar. Detta eftersom du inte har ngt högnivåspråk som döljer saker. Jag tycker att du skall ta och gå igenom de lektioner som följer med PICKIT2 först
Postat: 9 november 2008, 12:46:46
av sodjan
Jag ser nu (missade det först) att det fungerade OK med exemplen från den
CD som följde med PICkit2. Så kör vidare med det. Du ställde någon fråga
i samma inlägg:
> Tredje gången gilt! Nu kan jag öppna project filen!
> men då kommer så klart den riktiga saken hur ska koden se ut?
Är det inte kompletta exempelkoder ? Jag har inte kollat, men det
låter lite underligt. Kan du förtydliga vad det är som strular ?
Postat: 9 november 2008, 14:36:18
av Alex_k
Jag menade hur den koden som skulle vara baserad på blink koden från cdn. Jag skulle ju göra det där med 3 blikningar mellanrum 3 bilkningar mellanrum osv. Men om jag nu ska göra koden i assemble så behöver jag förstå hur blink koden från cdn är uppbyggd och hur jag ska göra för att den ska blinka som jag vill. Jag har läst de 3 första lektionerna från cdn flera gånger men jag har ändå inte fått klart för mig hur koden är uppbygd.
Det här sa Marta tidigare i tråden:
Jag håller med om att det exempel Du har är väldigt stökigt, det kan göras både enklare och tydligare.
Finns det flera sätt att skriva den här koden fast den fortfarande har samma funktion? I sånna fall hur skulle den annars kunna se ut? Det kanske hjälper mig att förstå hur jag ska skriva min slutgiltiga kod (3 blink...)
Tack!
Postat: 9 november 2008, 15:03:58
av sodjan
OK.
Jag plockade ner "PICkit 2 Starter Kit Lessons", installerade och öppnade
"02 Blink" i MPLAB. Inga problem, tog ca 30 sekunder...
> Men om jag nu ska göra koden i assemble så behöver jag förstå hur
> blink koden från cdn är uppbyggd
Det är ju bara 10-15 rader, vad är problemet ?
Det finns säkert massor av sätt att skriva en kod som gör
(ungefär) samma sak, men jag sr inte varför. Det är ju bara
10-15 rader, och det är ju ganska klart vad den gör. Jag håller
*inte* med om att den är speciellt stökig, kanske lite väl övertydlig,
man skulle kunna ha en delay-loop som anropas istället för att
ha två stycken, men det är bara en liten detalj.
Det som var stökigt var att du hade postat koden utan code-taggar,
så här ska det se ut :
Kod: Markera allt
;******************************************************************************
;Software License Agreement
;
;The software supplied herewith by Microchip Technology
;Incorporated (the "Company") is intended and supplied to you, the
;Companys customer, for use solely and exclusively on Microchip
;products. The software is owned by the Company and/or its supplier,
;and is protected under applicable copyright laws. All rights are
;reserved. Any use in violation of the foregoing restrictions may
;subject the user to criminal sanctions under applicable laws, as
;well as to civil liability for the breach of the terms and
;conditions of this license.
;
;THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES,
;WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
;TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
;PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
;IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
;CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
; *******************************************************************
; PICkit 2 Lesson 2 - "Blink"
;
; First lesson showed how to make an LED turn on,
; Now we'll look at how to make it blink. Delay loops are necessary
; to slow down the on and off commands so they are visible to humans.
; *******************************************************************
; * See Low Pin Count Demo Board User's Guide for Lesson Information*
; *******************************************************************
; * NOTE: The PIC16F690 requires the AC162061 header for debugging *
; *******************************************************************
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Delay1 ; Define two file registers for the
Delay2 ; delay loop
endc
org 0
Start:
bsf STATUS,RP0 ; select Register Page 1
bcf TRISC,0 ; make IO Pin B.0 an output
bcf STATUS,RP0 ; back to Register Page 0
MainLoop:
bsf PORTC,0 ; turn on LED C0
OndelayLoop:
decfsz Delay1,f ; Waste time.
goto OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
decfsz Delay2,f ; The outer loop takes and additional 3 instructions per lap * 256 loops
goto OndelayLoop ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
; call it a two-tenths of a second.
bcf PORTC,0 ; Turn off LED C0
OffDelayLoop:
decfsz Delay1,f ; same delay as above
goto OffDelayLoop
decfsz Delay2,f
goto OffDelayLoop
goto MainLoop ; Do it again...
end
Som sagt, det är inte många rader, och varje ASM rad har en egen
kommentar. Alla instruktioner finns beskrivna i databladet.
Ställ en tydlig och konkret fråga så att det finns något vettigt att svara på.
Är det ungefär detta du vill ha ? :
<start>
Tänd LED, vänta 0.5 s, släck LED, vänta 0.5 s. <Upprepa 3 gånger>
Vänta 5 s.
<Gå till start>
Postat: 9 november 2008, 15:25:58
av sodjan
Alex_k> Finns det inget annat gratis program som använder basic?
"Annat" än vadå ?
Jag såg nu att ett av exemplen bland demo'na till PICkit2 är
för PIC BASIC Pro...
Postat: 9 november 2008, 15:34:43
av Alex_k
Du förstår ganska presic vad jag menar det ända som inte är rätt är mellanrummen jag skulle vilja ha ungefär så här:
<start>
Tänd LED, vänta 0.1 s, släck LED, vänta 0.2 s. <Upprepa 3 gånger>
Vänta 1 s.
<Gå till start>
Anledningen till att jag inte riktigt förstår koden är bland annat:
Vad fyller ''OffDelayLoop'' för funktio? Kan man inte bara lägga till lite delay i slutet av ''OndelayLoop''?
Varför fins det 2 stycken ''goto OndelayLoop'' i ''OndelayLoop'' borde inte lampan lysa hela tiden eftersom att den bara går tillbaka till början av ''OndelayLoop'' av den första?
Tack!