ELFORUM - Forumul Electronistilor

# Joc de lumini cu 16f628a

## Recommended Posts

Colegul niculae a dorit sa realizeze un joc de lumini cu 16f628A ( http://www.elforum.info/topic/15789-cum-sa-programez-un-pic/page-36 ) inspirat  din acest proiect http://veliutas.blogspot.ro/2014/08/16f84a-led-animation-circuit.html

La inceput de an ma plictiseam asha ca am scris un program asemanator cu cel din link.

Codul este scris in MikroPascal si este urmatorul :

`program Joc_de_lumini_cu_16f628a;var i:byte;var x:word;const stepdelay=150;  // msbegin  TRISB:=0;  TRISA:=0;  CMCON:=0x07;  PORTA:=0;  PORTB:=0;  x:=0;  while (1) do   begin        // prima secventa = Strobo        for i:=1 to 10 do        begin             PORTA:=15;             PORTB:=255;             delay_ms(25);             PORTA:=0;             PORTB:=0;             delay_ms(25);        end;        // secventa 2 = 1 bit left to right        for i:=0 to 3 do          begin            PORTA:=1 SHL i;            delay_ms(stepdelay);            end;        PORTA:=0;        for i:=0 to 7 do          begin            PORTB:=1 SHL i;            delay_ms(stepdelay);            end;         PORTB:=0;        // secventa 3 =1 bit right to left        for i:=7 downto 0 do          begin               PORTB:=1 SHL i;               delay_ms(stepdelay);          end;          PORTB:=0;         for i:=3 downto 0 do          begin            PORTA:=1 SHL i;            delay_ms(stepdelay);            end;        PORTA:=0;       // secventa 4 = 1 > 2 chase        for i:=1 to 6 do          begin               x:=1365;               PORTA:= x SHR 8;               PORTB:= x;               delay_ms(stepdelay);               x:=2730;               PORTA:= x SHR 8;               PORTB:= x;               delay_ms(stepdelay);          end;       // secventa 5 = 0 bit left to right         PORTA:=15; PORTB:=255;         for i:=0 to 3 do          begin            PORTA:= not (1 SHL i);            delay_ms(stepdelay);            end;        PORTA:=15;        for i:=0 to 7 do          begin            PORTB:=not (1 SHL i);            delay_ms(stepdelay);            end;         PORTB:=255;       // secventa 6 = 0 bit right to left        for i:=7 downto 0 do          begin               PORTB:=not (1 SHL i);               delay_ms(stepdelay);          end;          PORTB:=255;         for i:=3 downto 0 do          begin            PORTA:=not (1 SHL i);            delay_ms(stepdelay);            end;        PORTA:=15;        // secventa 7 = 0 to full left to right       PORTA:=0; PORTB:=0;       for i:= 0 to 3 do        begin             PORTA:=PORTA or (1 SHl i);             delay_ms(stepdelay);         end;        for i:= 0 to 7 do         begin              PORTB:=PORTB or (1 SHL i);              delay_ms(stepdelay);         end;        // secventa 8 = full to 0 right to left        PORTA:=15; PORTB:=255;        for i:= 7 downto 0 do         begin              PORTB:=PORTB xor (1 SHL i);              delay_ms(stepdelay);         end;       for i:= 3 downto 0 do        begin             PORTA:=PORTA xor (1 SHl i);             delay_ms(stepdelay);         end;       // secventa 9 = 3 bit left to right       PORTA:=0; PORTB:=0;       for i:=0 to 1 do       begin            PORTA:= 7 SHL i;            delay_ms(stepdelay);        end;       PORTA :=0;       for i:=0 to 6 do        begin             PORTB:= 7 SHL i;             delay_ms(stepdelay);        end;   end;end.`

A fost testat pe 16F628 (pentru ca 628A nu am) si functioneaza.

La fisierul atasat trebuie schimbata extensia din txt in hex

joc_lumini_16f628a_4mhz_extern.txt

##### Share on other sites

ce schemă folosesti..?

##### Share on other sites

păi hexu e ptr 16f84  sau 16f628 din ce citiii reese că e ptr f628

cu stimă  !

##### Share on other sites

Evident in schema din link SE INLOCUIESTE 16f84 cu 16F628A pastrant aceeasi semnificatie a pinilor.

##### Share on other sites

Salut si La multi ani!

Multumesc djvas, am incarcat hexul facut de tine si este ok, parca ai mai lipseste ceva dar nu pot sa-mi dau seama exact.

Una peste alta pe mine ma multumeste si asa pt ce-mi trebuie mie ( voi amplifica iesirile celor 12ch si voi alimenta 12 siruri a cate 30leduri colorate, gen perdea)

As mai avea o rugaminte, asta daca nu cer prea mult: daca poti schimba din soft configuratia pinilor de iesire pt leduri, astfel:

Pinul2 sa devina pinul17

Pinul1--18

18--1

17--2

13--6

12--7

11--8

10--9

9--10

8--11

7--12

6--13

Vazand mai multe proiecte am facut cablaju de la un alt proiect tot cu 12ch( cel de aici http://picprojects.org/projects/ledchaser/index.htm), de functionat functioneaza insa ordinea de aprindere a ledurilor este ciudata!

Daca deranjul este prea mare, voi face alt pcb.

inca odata multumesc.

Edited by niculae

##### Share on other sites

Deci sa inteleg ca schema (pcb-ul ) folosit de tine este in urmatoarea ordine :

RA3   RA2 RA1     RA0     RB7     ....... RB0

Led1  LED2 Led3 LED4 LED5   Led12

Daca e asha se poate modifica.

Intradevar sunt unele secvente care lipsesc fata de exemplu tau. Acele secvente nu ies usor dintr-o functie repetitiva si nu am nervi (si nici interes) sa scriu zeci de linii de cod.

##### Share on other sites

Am promis si eu lui niculae ca il ajut. Nu mai fac un topic nou si postez aicea si varianta mea de hex care contine toate jocurile din proiectul original. Hex-ul este tot pentru PIC16F628A.

JocDeLumini.rar

Edited by bandi12

##### Share on other sites

Deci sa inteleg ca schema (pcb-ul ) folosit de tine este in urmatoarea ordine :

RA3   RA2 RA1     RA0     RB7     ....... RB0

Led1  LED2 Led3 LED4 LED5   Led12

Daca e asha se poate modifica.

Intradevar sunt unele secvente care lipsesc fata de exemplu tau. Acele secvente nu ies usor dintr-o functie repetitiva si nu am nervi (si nici interes) sa scriu zeci de linii de cod.

Salut,

Partea cu cablajul am rezolvat-o, nu este cazul sa te superi pt ca n-am spus-o cu niciun subinteles sau ca un repros. Eu pe bune chiar am fost multumit ca am primit ajutor de la cineva care stie programare, credeam ca am muncit dejeaba la proiect.... Oricum, interesanta pare partea asta cu proiecte mcu, pic-uri..... asa ca daca nu te-ai suparat, recomanda-mi te rog si mie ceva cu care sa incep sau de unde sa incep sa invat .

Multumesc pt ajutor!

##### Share on other sites

Am promis si eu lui niculae ca il ajut. Nu mai fac un topic nou si postez aicea si varianta mea de hex care contine toate jocurile din proiectul original. Hex-ul este tot pentru PIC16F628A.Am descarcat

Am incarcat hexul si este ok, maine voi pune un filmulet poate mai este cineva interesat sa faca acest proiect.

Mii de multumiri pt ajutorul acordat si mai ales pt rabdarea avuta cu un novice!

Toate cele bune!

Acum fac ca t....u, daca s-ar putea si ceva in Ro, macar de inceput.

Multumesc mult!

##### Share on other sites

Sa ma supar ? De ce sa ma supar ? Ai inteles gresit.

Nu stiu exact ce sa-ti recomand ... eu programare am invatat pe PC in liceu. Trecerea spre microcontrolere a fost mai usoara. Totusi  asta http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/ mi se pare destul de prietenoasa. Ca incepator nu m-as duce spre asembler, as incepe cu un limbaj mai inalt, de preferat C  dar e ok orice BASIC , PASCAL. In schimb stai departe de tampenii gen FLOWCODE.

##### Share on other sites

Nu vreau sa fiu rautacios dar eu cred ca e un pic tras de par. Eu consider limbajele de nivel scazut( _asm ) greu de inteles cu 3 ani de studii in programare, pentru un incepator cu 0 experienta in programare cum o parea ?

Pentru inceput unii zic FlowCode mie personal nu mi-a placut, majoritatea programarii se face in interfata grafica si codul in sine e generat de program, eu m-am oprit la  un MikroC pro for PIC care are foarte multe librarii ( citire ADC, generare PWM,etc....).

Partea proasta este ca cel putin eu nu am gasit tutoriale in limba romana majoritatea cat si cele de pe youtube sunt in engleza.

Edited by bandi12

##### Share on other sites

Sa ma supar ? De ce sa ma supar ? Ai inteles gresit.

Nu stiu exact ce sa-ti recomand ... eu programare am invatat pe PC in liceu. Trecerea spre microcontrolere a fost mai usoara. Totusi  asta http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/ mi se pare destul de prietenoasa. Ca incepator nu m-as duce spre asembler, as incepe cu un limbaj mai inalt, de preferat C  dar e ok orice BASIC , PASCAL. In schimb stai departe de tampenii gen FLOWCODE.

De ce crezi tu ca flow code este o tâmpenie? joculetu asta se putea scrie in flow code in maxim o jumătate de ora cu toate secventele lui.

Eu folosesc flow code si mplab iar când i-mi este sila sa scriu folosesc flow code.

pentu cineva care doreste sa faca cate ceva pe lângă casa flow code este arhisuficient,sunt colegi aici care lucrează cu flow code si sunt greu de egalat

##### Share on other sites

FlowCode genereaza in mod automat codul sursa (.c) dupa "desenul" din interfata, crezi ca acel autoCode genereaza un cod mai performant decat unul scris direct in .C de cineva cu putina experienta ? Personal nu cred, de acea multi folosesc _asm findca nici un compilator din C in _asm nu intrece gandirea unui programator in _asm cu experienta.  Cu cat limbajul folosit este de nivel mai scazut cu atat creste si perofrmanta care include  : spatiu program,spatiu RAM,viteza de executare cod.

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×

×

• #### Activity

×
• Create New...