En lite anorlunda blik kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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? :oops:
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg av Alex_k »

oj jag skulle sktiva ett svar i en anna tråd! :oops:
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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... :oops:
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31535
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg 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.
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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?
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg 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.
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg av Alex_k »

Finns det inget annat gratis program som använder basic?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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"...
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 ?
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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  
;Company’s 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>
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Alex_k
Inlägg: 43
Blev medlem: 6 oktober 2008, 16:25:37
Ort: stockholm

Inlägg 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!
Skriv svar