Sari la conținut
ELFORUM - Forumul electronistilor

Incepator in Mikrobasic


free_fiber

Postări Recomandate

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 spre comentariu
  • Răspunsuri 14
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • free_fiber

    8

  • Abram Burel

    3

  • 78ATI

    2

  • TECH_FUN

    1

Top autori în acest subiect

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 spre comentariu

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 spre comentariu

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 spre comentariu

@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 spre comentariu

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 spre comentariu

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 spre comentariu

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 spre comentariu

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 spre comentariu
  • 1 lună mai târziu...

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 spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări