Jump to content
ELFORUM - Forumul electronistilor

Incepator in Mikrobasic


free_fiber

Recommended Posts

Salutare.

 

As vrea sa invat sa programez picuri folosind Mikrobasic (pentru mine pare mai prietenos tinand cont ca mai stiu C/C++, Pascal, PHP iar ASM deloc).

 

Am tot cautat tutoriale pe net dar nu am gasit nimic concret.

Spuneti-mi si mie va rog ce inseamna liniile urmatoare:

TRISB = 0 ' Configure pins of PORTB as output

PORTB = %11111111 ' Turn ON diodes on PORTB

 

Observ eu acolo descrierea liniei dar... tot nu inteleg cum se folosesc instructiunile astea.

 

Multumesc

 

P.S. Am inceput deja sa citesc ce se recomanda aici: http://www.elforum.info/viewtopic.php?t=21454

Link to comment
  • Replies 14
  • Created
  • Last Reply

Top Posters In This Topic

  • free_fiber

    8

  • Abram Burel

    3

  • 78ATI

    2

  • TECH_FUN

    1

Pai, mai intai ia foaia de catalog a PIC-ului si buchiseste-o bine.Chiar daca nu programezi in ASM, tot va trebui sa cunosti ceva despre "registrii" pe care acesta ii are si pe care va trebui sa-i "manipulezi" prin program.De exemplu, TRISB eeste registrul care controleaza ce directie este pe fiecare pin din PORTB, respectiv se seteaza bitul corespondent (ca pozitie) pe 1 daca vrem sa fie intrare si pe 0 daca vrem sa fie iesire. In cazul tau, toti vor fi iesiri.Odata stabilita asta, ca sa scoti ceva pe portul B, trebuie sa scrii in el ceea ce vrei. In cazul tau, ca sa aprinzi ledurile trebuie sa scrii 1 in toti bitii adica 0FFH (hex) sau %11111111 (binar).Ca fapt divers, echivalentul in ASM este:; echivalent TRISB=0CLRF TRISB; echivalent PORTB=%11111111MOVLW 0FFHMOVWF PORTBNu e chiar asa de complicat, nu?

Link to comment

deci trisb seteaza ca intrare sau iesire orice pin rb0-rb7, nu?sa inteleg ca trisb=0 ii face pe toti iesiri?dar daca vreau doar unu la fie iesire si ceilalti intrari? scriu: trisb=01111111 ?dar daca vreau ca rb6 si rb7 la fie iesiri si ceilalti intrari? scriu: trisb=11111100 ?am inteles bine? cifra1 seteaza rb0, cifra2 seteaza rb1 .... cifra 8 seteaza rb7?la fel si la portb? daca vreau curent pe rb0 scriu: portb= %10000000 ?daca vreau curent pe rb3 si rb4 scriu: portb= %00011000 ?

Link to comment

Deci am inteles bine despre instructiunile alea?"am inteles bine? cifra1 seteaza rb0, cifra2 seteaza rb1 .... cifra 8 seteaza rb7? "

Link to comment

salut. m-am mai documentat intre timp si am aflat ca in mikrobasic e pe invers trisb:pentru portul rb0 scriu trisb=00000001 . cam asa am inteles: primul e ultimul.LE: Am facut si eu un programel in mikrobasic:program testaremain: trisb=0 portb=%11111111end.Teoretic trebuie sa aprinda ledu pus pe oricare din rb-uri. Practic nu se intampla nimic... :(Programul a fost compilat tot cu mikrobasic, mi-a facut un fisier .hex, l-am scris cu icprog, l-am verificat (e scris corect) dar ledu nu se aprinde.De ce?

Link to comment

@free_fiber. Daca esti la inceput de drum, iti recomand din suflet sa inveti PicBasic. Am avut probleme cu Mikrobasic (in situatia ta fiind) la eleborarea unor proiecte ceva mai mari, compilarea este defectuasa, programul rezultat fiind mai mare decat ar trebuii. Este un sfat pe care l-am primit de la un bun amic si coleg de forum! Acum il urmez. Succes!

Link to comment

PicBasic foloseste (ca si mikrobasic) un limbaj prietenos care seamana cat de cat cu C/C++ ?Am scris putin mai sus un programel de care ziceam ca nu merge.Mi s-a spus ca trebuie sa fac un ciclu while ca sa ruleze continuu.Problema de care m-am lovit este ca nici porgramul de mai jos nu merge:program Led_blinkingmain: TRISB = 0 PORTB = %11111111 while true PORTB = not PORTB delay_ms(1000) wendend.Programul este un exemplu dat de mikrobasic, deci nu e facut de mine, era deja facut.

Link to comment

Este asemanator, (grafica diferita) insa structura este asemanatoare tuturor programelor basic. Trebuie un pic de timp de adaptare, putin citit helpul sau tutorial...si va merge la fel de bine ca Mikrobasic la programat. Marele castig este programul rezultat in urma compilarii. Eu nu sunt profesionist in PIC, am cerut ajutorul de cate ori am avut nevoie, insa acum incerc sa refac totul in PicBasic, din cauzele enuntate mai sus

Link to comment

Am reusit sa fac cateva programe simple in mikrobasic :)Acum vreau sa fac un programel care sa masoare numarul de impulsuri primit pe pinul timer.Cum fac asta?Stiu doar ca pornesc timerul, il opresc dupa o secunda si citesc valoarea lui si gata...Cum fac asta mai exact?Care sunt instructiunile?

Link to comment

Setezi bitul 5 al registrului option, bitul TOCS, astfel folosesti tmr0 ca si contor cu impulsuri externe la pinul RA4/TOCKI. Apoi ii zici la bitul 4 T0SE(source edge) daca vrei sa citeasca frontul crescator sau descrescator(1 pt front crescator si 0 pt front descrescator). Si tot in reg OPTION ai bitii de setare ai prescalerului PS0, PS1, PS2; ii setezi la cat vrei tu ca sa numere contorul.Din pacate nu te pot ajuta cu instructiunile in mikrobasic :smt009

Link to comment
  • 1 month later...

Chiar nu e nimeni sa ma ajute sa fac programelul?

Sansele sa-ti dea cineva mura-n gura sunt minime. Citeste foaia de catalog de la PIC, instructiunile de la MikroBasic, si dupa aia ia netu la mana, geme de tutoriale si alte d-astea. Daca totusi vrei mura-n gura spune si-ti mut thread-ul la "ElectroJOB". Daca nu, te rog ca pe viitor sa te abtii de la posturi gen "chiar nu e nimeni sa ma ajute". Multumesc.
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines