alexu_0687w Postat Decembrie 15, 2011 Partajează Postat Decembrie 15, 2011 acesta fiind codulnu inteleg cum trebuie organizata memoria aia...list p=16F627a ;definire tip PIC #include ;include definiti ptr Port-uri,status,biti,etc errorlevel -302 ;nu mai ma atentioneaza sa fiu atent la Ram daca este in bank-ul respectiv __CONFIG _BODEN_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT cblock 0x20 BclL,BclH endc org 0x0000 ;Adresa de start a microntrollerului movlw 0x07 ;set Digital I/O movwf CMCON ; bsf STATUS,RP0 ;set Bank1 clrf TRISB ;set PORTB toate iesiri clrf STATUS ;Bank0 Bucla movlw b'00000000' ;incarc in registrul "W" valorile ptr PORTB movwf PORTB ;set PORTB (toate iesirile in nivel logic "0") call Wait500Ms ; apel subrutina de intirziere movlw b'11111111' ;incarc in registrul "W" valorile ptr PORTB movwf PORTB ;set PORTB call Wait500Ms ; apel subrutina de intirziere goto Bucla ;inca o data pina la infinitWait500Ms movlw HIGH(50000-1) ; movwf BclH ; movlw LOW(50000-1) ; movwf BclL ;WaitMs00 movlw 0x01 ;1 subwf BclL,f ;2 btfss STATUS,C ;3 decf BclH,f ;4 movfw BclL ;5 iorwf BclH,w ;6 nop ;7 btfss STATUS,Z ;8 goto WaitMs00 ;10 retlw 0x00 ; end Link spre comentariu
sosoi Postat Decembrie 16, 2011 Partajează Postat Decembrie 16, 2011 Incearaca si in felul urmator: org 0x0000 goto initializari;============================ org 0x04intreruperi ;aici verifici ce fel de intrerupere ai (daca folosesti intreruperile) . bsf INTCON,GIE retfie;============================main ;bucla principala (main) call unde_ai nevoie . goto main;============================initializari ;aici faci initializarea goto mainSper sa intelegi Link spre comentariu
alexu_0687w Postat Decembrie 17, 2011 Partajează Postat Decembrie 17, 2011 daca am inteles eu bine ai scris acolo cum trebuie organizat programul nou....sa mai exersez....vreau sa vad ce nu corespunde dintr un pic in altul daca modific cmcon si locatia memorii si inca nush ce daca merge.....in locurile astea imi da eroare __CONFIG _BODEN_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT movwf CMCON ; movwf BclH daca le comentez pe primele 2 imi merge programul(build succeded) dar tot imi zice worning invalid RAM location si se refera la ultima linie cu movwf BclH.daca ma ajuta careva... Link spre comentariu
Liviu M Postat Decembrie 18, 2011 Partajează Postat Decembrie 18, 2011 De obicei, ca sa primesti un raspuns cat mai bun, trebuie sa dai cat mai multe informatii. In cazul de fata, posteaza mesajele de eroare pe care le primesti la __CONFIG si CMCON (copy/paste). De asemenea, copiaza aici codul folosind tagurile .. (butonul Code de mai sus), ca sa se pastreze formatarea (la mine se compileaza codul tau anterior "rearanjat in pagina", asa ca presupun ca erorile sunt de formatare). Link spre comentariu
MatyC Postat Decembrie 18, 2011 Partajează Postat Decembrie 18, 2011 Pentru inceput doua aspecte. 1. La PIC16F631 nu are Brown-Out Detect (BODEN), In schimb are 2 biti de configurare la Brown-Out Reset (BOREN). __CONFIG_BODEN_ON trebuie schimbat, cred, cu __CONFIG_BOREN_ON. 2. CMCON este pentru un singur comparator (cazul 16F627/628(A)). La 16F631 sunt doua comparatoare care se seteaza cu CM1CON0 si CM2CON0. Asa ca codul urmator nu are sens la 631. movlw 0x07 ;set Digital I/Omovwf CMCON ; Dupa ce am sa testez programul tau voi reveni cu alte detalii. Insa nu strica ca citesti helpul de la MPASM si sa citesti comparativ cele doua pdf-uri. Link spre comentariu
alexu_0687w Postat Decembrie 18, 2011 Partajează Postat Decembrie 18, 2011 @ matyC nu vad care e diferenta la pct 1, si in legatura cu pct 2 ar trebui sa le setez pe amandoua CM1 si CM2? sau.....nu stiu cum trebuie Error[113] C:\USERS\ALEXEI\DESKTOP\PRJ MATLAB\PROJECT 1\631.ASM 4 : Symbol not previously defined (_BODEN_ON)asta fiind mesajul de eroare daca nu comentez linia cu _bode_on Error[113] C:\USERS\ALEXEI\DESKTOP\PRJ MATLAB\PROJECT 1\631.ASM 12 : Symbol not previously defined (CMCON)si asta e mesajul de la CMCON dar eu am facut o chestie si imi merge: errorlevel -302 ;nu mai ma atentioneaza sa fiu atent la Ram daca este in bank-ul respectiv ; __CONFIG _BODEN_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT cblock 0x20 CMCON BclL,BclH endc am declarat CMCON sus si merge codul......am doar cateva worning-uri cu invalid RAM location,pp ca isi alege singur locatia de memorie ...BUILD SUCCEEDED.... Link spre comentariu
sosoi Postat Decembrie 19, 2011 Partajează Postat Decembrie 19, 2011 si asta e mesajul de la CMCON dar eu am facut o chestie si imi merge: errorlevel -302 ;nu mai ma atentioneaza sa fiu atent la Ram daca este in bank-ul respectiv ; __CONFIG _BODEN_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT cblock 0x20 CMCON BclL,BclH endc am declarat CMCON sus si merge codul......am doar cateva worning-uri cu invalid RAM location,pp ca isi alege singur locatia de memorie ...BUILD SUCCEEDED.... TOTAL GRESIT! ceea ce ai facut tu akolo , ai facut pe bajbaite... fara sa stii ce faci. Ai declarat CMCON ca fiind o variabila si de asta a mers compilarea.La -->PIC16F631<-- (Datasheet): *- registrul CMCON nu exista ,cum a spus si colegul MatyC sant 2 registri care controleaza comparatoarele si anume CM1CON0 si CM2CON0 *- adresa (0x20) unde ai declarat variabilele nu exista (din cauza asta ai Warning: Invalid RAM location specified.) Ai mai jos codul modificat pentru PIC16f631 list p=16F631 ;definire tip PIC#include <p16F631.inc> ;include definiti ptr Port-uri,status,biti,etcerrorlevel -302 ;nu mai ma atentioneaza sa fiu atent la Ram daca este in bank-ul respectiv __CONFIG _BOD_ON&_PWRTE_ON&_INTRC_OSC_NOCLKOUT&_WDT_OFF;///////////////////////////////////////; cblock 0x20 <-- Adresa 0x20 nu exista in PIC16F631 cblock 0x40 BclL,BclH endc;---------------------------- org 0x0000 ;Adresa de start a microntrollerului banksel CM1CON0 clrf ANSEL ;turn digital I/O movlw 0x40 ;set comparator off movwf CM1CON0 ; movwf CM2CON0 ;; movlw 0x07 ;set Digital I/O; movwf CMCON ; banksel TRISB ;set Bank1 clrf TRISB ;set PORTB toate iesiri clrf STATUS ;Bank0Bucla banksel PORTB movlw b'00000000' ;incarc in registrul "W" valorile ptr PORTB movwf PORTB ;set PORTB (toate iesirile in nivel logic "0") call Wait500Ms ;apel subrutina de intirziere movlw b'11111111' ;incarc in registrul "W" valorile ptr PORTB movwf PORTB ;set PORTB call Wait500Ms ;apel subrutina de intirziere goto Bucla ;inca o data pina la infinitWait500Ms movlw HIGH(50000-1) ; movwf BclH ; movlw LOW(50000-1) ; movwf BclL ;WaitMs00 movlw 0x01 ;1 subwf BclL,f ;2 btfss STATUS,C ;3 decf BclH,f ;4 movfw BclL ;5 iorwf BclH,w ;6 nop ;7 btfss STATUS,Z ;8 goto WaitMs00 ;10 retlw 0x00 ; end forum.zip Link spre comentariu
alexu_0687w Postat Decembrie 19, 2011 Partajează Postat Decembrie 19, 2011 super mege perfect programul multumesc mult...am vazut si in pdf ul la pic despre cm1consi acum...cum fac sa vad daca nu e scris ceva pe pic cu pickit2 clona...sa sterg si sa scriu programul asta?? Link spre comentariu
MatyC Postat Decembrie 19, 2011 Partajează Postat Decembrie 19, 2011 La __CONFIG _BOD_ON ma mira faptul ca nu da eroare. PIC16F631 nu stie de _BOD_ON insa stie de _BOR_ON.Ai noroc ca la initializare 631 se seteaza default pe frecventa interna de 4 MHz si corespunde cu frecventa de la 627 si in felul asta nu sunt afectate rutinele Wait500Ms si WaitMs00. Este vorba de starea registrului OSCCON. si acum...cum fac sa vad daca nu e scris ceva pe pic cu pickit2 clona...sa sterg si sa scriu programul asta??poti folosi utilitarul pentru Pickit2 unde ai o optiunea "Blank Check" si te informeaza softul daca e gol picul sau nu. Oricum ai face sa stii ca utilitarul sterge tot din microcontroler si abia pe urma programeaza. Ai si in MPLAB un plugin pentru Pickit2 insa eu prefer utilitarul dedicat oferit de Microchip. Link spre comentariu
sosoi Postat Decembrie 19, 2011 Partajează Postat Decembrie 19, 2011 Modificarile le-am facut confruntand fisierul #include ..... ,compilatorul intelege _BOD_ON si _BOR_ON cu toate ca corect e _BOR_ON Link spre comentariu
laur234 Postat Ianuarie 7, 2012 Partajează Postat Ianuarie 7, 2012 Citeste asta poate te ajuta http://www.fileserving.com/files/3NK6dZh_N_ Link spre comentariu
Vizitator Gibson Postat Februarie 21, 2012 Partajează Postat Februarie 21, 2012 hey am nevoie de putin ajutor....vreau sa programez un Pic 16F54 si vreau sa comande un motor pas cu pas...cum ar trebui sa fac?pot sa scriu programul in mplab si apoi sa il incarc in picProg?ca nu inteleg deloc ce inseamna toate valorile alea in hexa... Link spre comentariu
costi002 Postat Februarie 21, 2012 Partajează Postat Februarie 21, 2012 faci progr in mplab si apoi hex-ul generat la compilare il bagi cu picprog-ul. Link spre comentariu
Vizitator Gibson Postat Februarie 22, 2012 Partajează Postat Februarie 22, 2012 ok..mersi...daca am probleme pe parcurs o sa va mai stresez:D Link spre comentariu
Vizitator Gibson Postat Martie 2, 2012 Partajează Postat Martie 2, 2012 help va rog...acuma ma confrunt cu programarea in mplab..si nu stiu cum sa fac sa scriu programl in C sau in /asm ca la amandoua imi da erorideci am pic 16F54 si vreau sa comande un motor paas cu pas..in assembler codu ii urmatorul:main: mov stepper, #08H acall delay mov stepper, #0CH acall delay mov stepper, #04H acall delay mov stepper, #06H acall delay mov stepper, #02H acall delay mov stepper, #03H acall delay mov stepper, #01H acall delay mov stepper, #09H acall delay sjmp mainimi da erori ca nu sunt definite unele (??)ma poate ajuta va rog cine cunoaste programarea si mplab?apreciez 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