v-g skrev:
Och JA jag har fattat att det genereras ASM som sen kompileras, men denna sk ASM kod ger jag inte mycket för då genererad kod ofta är väldigt svårläsbar även om det går.
Poängen är ju iofs att det inte är MENINGEN att man ska felsöka i den, man felsöker i .bas filen. Visst, det kan kanske vara bra att kunna kolla i asm-filen *också* men det händer nog ganska sällan, att den finns där är ju mer en bonus, dessutom gör den att man kan välja vilken asm man vill använda. (MPASM tex, vilket inte är default för de flesta picar)
Jag har försökt felsöka sån kod och lätt var det inte. Enkelt kan man säg att det är som att försöka förstå det någon annan kodat utan riktiga namn på variabler utan snarare cv2, cv3 osv. samt helt utan kommentarer om det nu inte fungerar som AndersG säger.
Som jag skrev så kan man få kompilatorn att försöka överföra kommentarer, och variabelnamn överförs per default vad jag har sett..
Om jag tittat på den genererade asm-filen från mitt lilla program så blir tex "resist0" "_resist0".
Ditt kodexempel (potentiometer) är solklart enkelt, men vet du vad som genereras eller storleken på detta? Kan du återanvända variablerna? Vad händer vid interupt? Vad händer om du samtidigt vill kunna avbryta för inkommande seriell kommunikation eller ett knapptryck? Hur felsöker du om det inte fungerar? Hur många cykler tar din rutin?
Du missar målet, det mesta av detta är HELT ointressant, speciellt i den lilla snutten jag skrev.. varför behöver jag veta hur många cykler det tar, när det inte är tidskritiskt ? interupter hanteras, seriekommunikation funkar alldeles utmärkt, men det är ju inget som behövs i den där lilla "fläktkontrollern" eller vad man ska kalla mitt snabbhackade program.
Vill jag läsa av ett knapptryck, ja då lägger jag förslagsvis in en enkel ifsats i min main: loop, typ "if porta.0 = 0 then xxx" där xxx antingen är ett kommando direkt eller en subrutin. Jag kan också använda en inteupt, "on interupt goto xxx" och sen definera en subrutin xxx som den ska hoppa till vid interupt, och sen "resume" för att hoppa tillbaka.
Hur man felsöker, ja nu fungerade det ju på första försöket, vilket det troligen inte hade gjort om jag skrivit det i asm

..hade det inte fungerat hade jag väl felsökt genom att försöka förstå varför det inte funkade.. gav det ett felmeddelande vid kompileringen ? exakt vad är det som inte funkar ? ..kanske lagt till en lysdiod på en pinne och använt som debug, eller en LCD (tar ju bara nån rad kod vettu..)
..Dessutom har jag ju alltid asm-koden tillhands om jag verkligen (mot förmodan) vill se den..
Kan lösa det i ASM inga probs alls men det tar ju en stund då databladet måste konsulteras.
Jag tvivlar inte på att det går, min poäng är att det tar mycket mer kod och tid i anspråk.
Min kod kan ju f.ö användas på i princip alla PIC'ar med hårdvaruPWM, bara att kompilera den med rätt flagga så spottar den ur sej kod för rätt pic,
detta är ju också väldigt smidigt då man kanske mitt i bygget inser att den picen man började med inte räcker till, den kanske har för få analogingångar,
eller för lite minne, aha, men då tar jag en vassare pic och kompilerar för den, klart! ..jaha, minnet behövde bankswitchas, vilken tur att PBP tog hand om det automagiskt då. ..Borde väl iofs inte vara så speciellt svårt att porta mellan olika picar i asm heller, men mer jobb iaf.
En del vill gena så enkelt är det men chansen är ju att man istället hamnar i ett träsk istället för att åka motorvägen runt.
Jag förstår fortfarnde inte varför du tjatar om det där träsket, det är ju en genväg som funkar ? jag kommer dit jag ska,. och problemet är löst.
På dej låter det som att det är vardagsmat att man först skriver en basicapplikation, och sedan ska man försöka lappa ihop den genom manuella ändringar i den genererade asm-filen, varför skulle man göra det ? man ändrar förstås i den ursprungliga källkoden och kompilerar om.. ifall det är saker som inte går att lösa i basic, ja då löser man det normalt med att inkludera små asm-slingor rakt i BASIC-koden.
..Ungefär som man skulle gjort i C också fär den delen.
Kontentan av det jag vill säga är att ASSEMBLER inte är svårt. Den föregående meningen innefattar SPRÅKET ASM. Att sen skriva ASM för en PIC är svårare, man måste konsultera databladet, men fortfarande så är inte språket något som helst hinder annat än direkt i början men där är BASIC/C precis lika svårt om man inte kan kommandona.
Allt är svårt om man inte kan det, men det är lite lättare att förstå 'lcdout "hejsan"' än 25 rader (räcker det ?) asm som gör samma sak.. tröskeln för att få det att fungera blir oändligt mycket lägre.