Sari la conținut
ELFORUM - Forumul electronistilor

Comanda bascom avr pentru apasari repetate a aceluiasi buton


Cilibiu

Postări Recomandate

Cilibiu, incearca programul de mai jos:

 

 

Dim N As Byte

Dim I5 As Byte

N = 0

Do

Debounce Pinc.4 , 0 , Count , Sub

Loop

End

 

Count:

 

N = N + 1

If N > 2 Then

n = 0

End if

If N = 0 Then

I5 = 35

end if

If N = 1 then

I5 = 36

end if

If N = 2 then

I5 = 37

End If

Return

compara-l cu ce ai postat si analizeaza-l bine.

Nu, BASCOM nu este case sensitive

Renunta la prescurtarile folosite uzual pe mess

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

Top autori în acest subiect

  • Cilibiu

    27

  • yo9hnf

    7

  • Liviu M

    6

  • danzup

    4

Top autori în acest subiect

Am am incercat sa mai implementez si alte comenzi , dar se pare ca imi da dapestecap DEBOUNCE-ul!Am mai adaugat asaDoDebounce Pind.7 , 0 , Count , Sub If pind.7=1 thenportd.6=0else portd.6=1end ifloopsi restul bineinteles!Problema apare ca debounce-ul nu poate fi folosit atat timp cat exista acel ELSE!Daca il scot merge ambele comenzi!Dar eu am nevoie si de else!Cred ca renunt la debounce!Dar ma va ajuta si in alte proiecte!Ca nu va fi ultimul!

Link spre comentariu
Vizitator andreflo

Salut,Sunt incepator , se poate simplifica urmatoarea secventa de cod:Select Case FadeCase 1 :Locate 2 , 1Lcd Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 2 :Locate 2 , 1Lcd Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 3 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 4 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 5 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 6 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 7 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 8 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 9 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 10 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 11 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 12 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0)Case 13 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0) ; Chr(0)Case 14 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0) ; Chr(0)Case 15 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1) ; Chr(0)Case 16 :Locate 2 , 1Lcd Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(2) ; Chr(3) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(0) ; Chr(1)End SelectI2csend &H88 , Att_rfI2csend &H88 , Att_lfI2csend &H88 , Att_rrI2csend &H88 , Att_lrEnd SubMultumesc anticipat

Link spre comentariu

Am tot incercat sa aplic "teorema" lui "danzup" dar se pare ca nu reusesc, am inlocuit n cu N de la prima etapa, adik cu If N>2.... etc,dar tot nimik, si am mai incercat sa scot END IF de la prima etapa si sa o pun jos de tot dar tot nimik, cu debounce merge doar cu conditia sa nu am nimik afisat pe ecran!Daca am ceva afisari atunci cand starea butoanelor nu sunt apasate, debounce-ul nu mai merge, chiar daca lam pus prioritar, si ma gandeam ca teorema lui danzup poate fi aplicata in situatia mea, doar daca o fac sa mearga, fara debounce!Daca va ajuta cu ceva va postez tot programul si schema!

Link spre comentariu

Cilibiu, incearca programul de mai jos:

 

 

Dim N As Byte

Dim I5 As Byte

N = 0

Do

Debounce Pinc.4 , 0 , Count , Sub

Loop

End

 

Count:

 

N = N + 1

If N > 2 Then

n = 0

End if

If N = 0 Then

I5 = 35

end if

If N = 1 then

I5 = 36

end if

If N = 2 then

I5 = 37

End If

Return

compara-l cu ce ai postat si analizeaza-l bine.

Nu, BASCOM nu este case sensitive

Renunta la prescurtarile folosite uzual pe mess

Am reusit sa implementez programul tau dar a aparut o problema, merge sal folosesc pana la 9 apasari, daca implementez si a 10 nu mi se mai afiseaza nimik, nici nu zici ca ar trebui sa afiseze ceva, deci display-ul "gol"

 

cod mai jos

 

Dim Na As ByteNa = 0Do debounce pinc.6, 0, count,subloopCount:Na = Na + 1If Na > 30 ThenNa = 0End IfIf Na = 0 ThenI7 = 35I8 = 9End IfIf Na = 1 ThenI6 = 10I7 = 36End IfIf Na = 2 ThenI6 = 10I7 = 37End IfIf Na = 3 ThenI6 = 10I7 = 38End IfIf Na = 4 ThenI6 = 10I7 = 39End IfIf Na = 5 ThenI6 = 10I7 = 40End IfIf Na = 6 ThenI6 = 10I7 = 41End IfIf Na = 7 ThenI6 = 10I7 = 42End IfIf Na = 8 ThenI6 = 10I7 = 43End IfReturn
daca mai adaug

If na=9 then

I7.....

end if

Nu mai afiseaza nimik, eu vreau sa ajung pana la 30 de apasari.

Am inlocuit la DIM am pus Word in loc de byte si tot nimik, am pus Na in loc de N si tot nimik, nu pot trece de valoarea 9!

Ceva idei?

Link spre comentariu

Se pare ca de data asta este devina proteusul. Am incarcat programul in atmel si merge perfect, dar in proteus nu merge.Cred ca faiind cracuit, nu citeste program mai mare de 5K, cum depasesc cum nu mai merge afisajul, acum programul meu complet are 7K, :speriat Va multmuesc tuturor pentru ajutorul acordat pana acum, am reusit sa temin programul pentru ansamblul care il am.Multa bafta tuturor!

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