puiu Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 1. Fisierul lipsa trebuie sa fie c-am asa:;xxxxxxxxxxxxxxx; Macro ;xxxxxxxxxxxxxxxbank1 macro ; passage en banque 1 bsf STATUS,RP0 bcf STATUS,RP1 endmbank0 macro ; passage en banque 0 bcf STATUS,RP0 bcf STATUS,RP1 endm Link spre comentariu
bogdan546 Postat Mai 8, 2010 Autor Partajează Postat Mai 8, 2010 inseamna ca nu este complet programul prezentat in pagina mikro. Ce este cu eroarea care mi-o da la directiva ? Link spre comentariu
Liviu M Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 Poate imi explici si mie unde am gresit . Ti-am scris deja, se pare ca nu doar documantatia n-o citesti: Eu nu prea am idee cum e cu asamblarea, da' cate ceva am mai citit si:- parca inainte de CONFIG se foloseau 2 _ (__), nu una; la tine pare sa fie una singura; - etichetele trebuie sa inceapa in coloana 1; in pozele tale cbloc pare sa inceapa din coloana a 2-a. Mesajele de eroare din mplab sunt suficient de clare: Warning[207] D:\PROIECT PIC\PIC16F.ASM 8 : Found label after column 1. (Cbloc) spune foarte clar ca pe linia 8 a gasit o eticheta care nu incepe in coloana 1. Ce este cu eroarea care mi-o da la directiva ? Sintaxa (ce-o si aia)? Adica un _ in loc de __? Daca am gresit in presupunerile mele, e din cauza ca asa se vede in textele postate de tine. Daca nu e ce am presupus eu/daca ai incercat ce ti-am sugerat si tot ai erori, poti sa-mi spui, sa nu mai insist. Oricum, pana nu dovedesti ca ai facut si altceva decat copy-paste din cartea aia si postat pe forum, n-o sa te mai deranjez cu raspunsuri. Link spre comentariu
bogdan546 Postat Mai 8, 2010 Autor Partajează Postat Mai 8, 2010 te rog incearaca programul respectiv ,poate este ceva din setarile mele la mplab Am incercat cu doua linii la directiva dar îmi da aceeaşi eroare linia 5 illegal caracter & si o atentionare found label after column 1cu toate ca nu este eticheta este directiva Link spre comentariu
Liviu M Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 Ti-am facut hatarul si am compilat proiectul. Daca reusesti sa copiezi textul caracter cu caracter de pe pagina aia de internet - asta inseamna si pauzele si toate literele din diverse cuvinte (PROCESSOR, nu PROCESOR, Cblock, nu Cbloc, __CONGIG __CONFIG _CP_OFF&_WDT_OFF & _PWRTE_ON & _XT_OSC nu _CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC), daca indentezi liniile ca in exemplu - atunci se compileaza. Codul reparat de mine (nu am fisierul bank.inc, asa ca l-am comentat) se compileaza cu mpasm. PROCESSOR 16f84 #include"p16f84.inc" __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC Cblock 0x0C ;Begining of RAM WCYCLE ;Belongs to 'WAIT'macro PRESCwait endc ORG 0x00 ;Reset vector goto Main ORG 0x04 ;Intrerrupt vector goto Main ;No interrupt routine ;#include"bank.inc" ;Assistant filesMain ;Beginning of the program BANK1 movlw 0xff ;Port A initialization movwf TRISA ;TRISA<-0xff all input movlw 0x00 ;PORTB initialization movwf TRISB ;TRISB<-0xff movlw 0x00 ;PORTB initialization BANK0 movlw 0xff movwf PORTB ;Turn on all ledsLoop goto Loop ;Repeat loop End ;End programSper ca observi ca numai main si Loop - etichetele - sunt in prima coloana; celelate sunt cel putin un caracter la dreapta. La tine se vaita la Cbloc(k) pentru ca fiind scris aiurea nu-l recunostea ca un cuvant rezervat si-l considera eticheta. La __CONFIG pentru ca, scriind fara pauza, _CONFIG_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC, ii da un cuvant necunoscut, cu care nu stie ce sa faca si, mai mult, contine caractere "interzise" - & e folosit pentru SI logic (adica parametrii lui CONFIG sunt _CP_OFF si _WDT_OFF si _PWRTE_ON si _XT_OSC) Toate lucrurile pe care ti le-am zis de cateva ori deja sunt in documentatie. Daca vrei sa avansezi (faci proiectelul asta in speranta sa mai inceti ceva, nu ca esti obligat la scoala), iti recomand chiar sa studiezi putin (mai temeinic) documentatia. LE Sunt sanse ca si BANK0 si BANK1 sa fie etichete. Cum n-am nici fisierul bank.inc si nici acelasi asamblor, merg pe mana autorului cartii. Link spre comentariu
bogdan546 Postat Mai 8, 2010 Autor Partajează Postat Mai 8, 2010 multumesc .Am copiat textul si s-a executat Link spre comentariu
Liviu M Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 Cu placere, desi as fi preferat sa-ti descoperi singur greselile. Asta presupunand studiul documentatiei; a propos, daca nu sunt indescret, cam cati ani ai / cam in ce clasa esti (sa-mi dau seama daca nu cumva am asteptari prea mari)? Link spre comentariu
puiu Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 1. Vezi ca MPLAB nu ai nevoie de directiva deoarece se seteaza biti din sectiunea Configure, Configuration biti, binenteles dupa ce s-a ales device din sectiunea Configurare, select device. Deci aeea directiva este necesara pentru alte softuri si programatoare decat pentru MPLAB si programele lui. Link spre comentariu
bogdan546 Postat Mai 8, 2010 Autor Partajează Postat Mai 8, 2010 am inteles . Macro-ul lipsa din program ce rol avea ,de ce este amintit ? Link spre comentariu
puiu Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 1. Macroul lipsa era pentru setarea bank0 si bank1. Vezi ca la familia lui PIC 16 ai si bancuri pentru registri speciali si ai si pagini pentru program. La familia lui PIC 18 ai numai bancuri de memorie pentru registri si nu ai pagini pentru program.2. Ar fi bine sa te pui la punct cu un tip de familie si apoi sa treci la alta familie de PIC-uri. Pentru cele pe 8 biti datele sunt trei familii, dupa cum se aloca biti pentru instructiuni si anume:pe 12 biti (PIC10, PIC12), pe 14 biti (PIC16) si pe 16 biti (PIC18). Link spre comentariu
Liviu M Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 Pentru ca tot m-am uitat prin program cand i l-am aranjat, am bagat de seama ca pe la mijloc mai apare si #include"bank.inc" ;Assistant files. Probabil ca bank.inc asta tine locul macroului "lipsa". Link spre comentariu
cirip Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 Salut,Am observat in multe saituri cu proiecte ca lumea se complica fie cu scrierea de macrouri pentru selectia de bank, fie se folosesc instructiuni criptice de genul bsf STATUS,RP0 sau si mai rau bsf 3, 5, din care nu mai intelegi nimic peste 2 luni.MPLAB are o modalitate simpla de setare a bankurilor pe care, daca o folosesti, nici macar nu trebuie sa stii in ce bank se afla variabila. Este directiva "banksel ". Pentru detalii sugerez citirea sectiunii de directive din help. Helo->Topics->MPASM Assembler->Directives. Acolo este o lista intreaga de directive care usureaza programarea.Cirip Link spre comentariu
puiu Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 1. Este o observatie corecta.2. Observatia este valabila numai pentru MPLAB? Link spre comentariu
Liviu M Postat Mai 8, 2010 Partajează Postat Mai 8, 2010 E "comanda" din mpasm (asamblor); dupa parerea mea, nu conteaza in ce mediu "programezi" atata timp cat scrii pentru mplab. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum