Sari la conținut
ELFORUM - Forumul electronistilor

Ajutor finalizare cod.


Ata

Postări Recomandate

Seara buna.

Va solicit ajutorul la terminarea unui cod, pentru 16F628A, care comanda un pot. digital MCP.

In cod sunt 2 switches, fiecare (apasate pe rand), ar trebui sa comande o schimbare de valoare in MCP, iar la eliberare sa se revina la valoarea initiala, Numai switch 2, este ok, switch 1, ruleaza in bucla, scade valoarea, revine la loc si tot asa. Nu stiu cum sa fac sa stea la valoarea setata si cand nu este apasat sa revina la valoarea initiala. L-am simulat in Proteus.

Am folosit compilator CCS-PCW.

 

 

Codul. + schema, rar atasat.

 

Multumesc anticipat

Rar.rar

Link spre comentariu
  • Răspunsuri 8
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Ata

    6

  • Bandi Szasz

    2

  • ratza

    1

Multumesc pentru raspuns, nu stiu programare, m-am inspirat din alte programe la modificari. Cum trebuiesc puse?

 

Intai am pus in cod cate un buton si mergea ok, cand le-am pus pe amandoua am reusit sa fac sa mearga doar cate unul, din modificari...

Editat de Ata
Link spre comentariu

Daca descrii putin mai indetaliat ce sa faca te pot ajuta. Nu sunt familiar cu modelul respectiv de potentiometru dar presupun ca este pe 8biti, adica valoarea maxima ce se poate transmite este 255. In main variabila pot_data este incarcat cu valoarea de 255 iar la apasarea butonului este incrementat cu +10 care este deja in afara valorii maxime a potentiometrului.

Link spre comentariu

Salut.

255 este ca sa seteze potul la valoare maxima, sa plece de la un capat modificarea.

Nu este problema cu + sau - , tot asa face la butonul 1, daca modific codul sa mearga B1, nu mai merge B2..., daca folosesti pentru simulare Proteus, pun fisierul cu simularea.

628A.rar

Editat de Ata
Link spre comentariu

Nu folosesc compilatorul CCS-PCW deci fara un hex nu pot testa comportamentul. Oricum dupa analizarea codului pentru switch1 e definit un comportament total diferit fata de switch2, nu mai vorbind de faptul ca la al doilea "if" unde este comentat cu "// revenire la maxim" este pus ";" ( punct cu virgula) care pur si simplu anuleaza conditia if si executa codul de dupa if, iar acel "break;" intrerupe "while(True)" ul principal care oda oprit se opreste si PIC-ul din executat cod..

 

Dupa schema butoanele sunt cu pull-up deci in momentul apasarii butonului o sa se execute if-ul care compara cu == 0 , unde e pus pot_data + 10, pot_data este deja 255..

 

Functioneaza corect cu switch 2 findca sunt parantezele puse airuea. Daca vrei sa il faci tu sa mearga sa mai inveti programare atunci iti pot explica pe privat daca vrei cam cum trebuie facut. Daca il vrei doar functional atunci descrie ce face exact fiecare buton si il rescriu eu.

Link spre comentariu

Multumesc pentru raspuns.

La 60 de ani nu mai stau sa invat, dar cat de cat ma descurc, programul i-l facusem sa mearga in primavara, dar am fost plecat si a umblat nepotul la pc si la "lamurit" cu jocurile, Cand am venit am repus imaginea de Win, dar nu am mai stiut cu ce am compilat si am deschis cu alt compilator si s-a f..t.

 

Asta trebuie sa faca, la apasarea unui buton sa modifice valoarea si cand nu mai apas sa revina la valoarea initiala, oricare buton.

 

Pun si hexul sa poti vedea in proteus.

Hex.rar

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