Sari la conținut
ELFORUM - Forumul electronistilor

intrebare cod sursa scris in BASCOM


Postări Recomandate

Salutare, cine poate sa ma ajute intr-o problema? am un cod sursa facut de danzup de pe forum si nu inteleg o chestie in cod mai exact cand apas butonul + ce subrutine se apeleaza ca sa se schimbe input change 1 ,2 ,3 sau 4. La volum am inteles usor din cod dar la input change nu. Am observat acolo ca am H=1 la incr si H=0 la decr. Nu inteleg cum face legatura apasarea lui + si apasarea lui - cu H. Codul este aici http://www3.zippyshare.com/v/96200818/file.html Multumesc!

 

deci am asa:

 

If Plus = 0 Then

Waitms 5

Call Mplus 'button Plus presed

End If

If Minus = 0 Then

Waitms 5

Call Mminus 'button Minus presed

-------------------------------------------------------------

apoi in main menu

If A = 1 Then

Home Upper

Lcd " Select Input "

Home Lower

Lcd " Input " ; C ; " "

Waitms 180

End If

------------------------------------------------------------

apoi aici probabil am pentru apasarea butonului -

If A = 1 Then

H = 0

Call Inpt_chgn

Home Lower

Lcd " Input " ; C ; " "

Waitms 180

End If

End Sub

-----------------------------------------------------------

aici am pentru +

If A = 1 Then

H = 1

Call Inpt_chgn

Home Lower

Lcd " Input " ; C ; " "

Waitms 180

End If

End Sub

-----------------------------------------------------------

apoi se apeleaza Subrutina inpt_chgn

Sub Inpt_chgn:

Select Case H

Case 0 : Decr C

If C < 1 Then C = 1

Case 1 : Incr C

If C > 4 Then C = 4

End Select

Select Case C

Case 1 : Mask = &B00000000

Case 2 : Mask = &B00000001

Case 3 : Mask = &B00000010

Case 4 : Mask = &B00000011

End Select

Temp = Inp_ut And &B11111100

Inp_ut = Temp Or Mask

I2csend &H88 , Inp_ut

W = 0

Timer1 = W

End Sub

------------------------------------------

Si un exemplu pentru apasarea butonului + (dar in meniul de volum)

'-----------Mplus-----------------

Sub Mplus:

'-------regelz volumul-----------------------

If A = 0 Then

If Vol_me < 63 Then

Incr Vol_me

T1 = Vol_me / 3.9375

Bar_len = 16 - Int(t1)

I2csend &H88 , Vol_me

End If

Call Displ

End If

---------------------------------------------------

Pentru submeniul Volume am inteles cum se realizeaza cresterea sau scaderea vol la apasarea lui + sau - dar la Input change NU. Si la celelalte cum ar fi FADER, BASS , TREBLE este aceasi poveste. Nu inteleg cum se realizeaza procesul de crestere sau scadere a valorilor. Multumesc inca odata!

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

Top autori în acest subiect

Zile populare

Top autori în acest subiect

Salutare, cine poate sa ma ajute intr-o problema? am un cod sursa facut de danzup de pe forum si nu inteleg o chestie in cod mai exact cand apas butonul + ce subrutine se apeleaza ca sa se schimbe input change 1 ,2 ,3 sau 4. La volum am inteles usor din cod dar la input change nu. Am observat acolo ca am H=1 la incr si H=0 la decr. Nu inteleg cum face legatura apasarea lui + si apasarea lui - cu H. Codul este aici

-----------------------------------------------------------

apoi se apeleaza Subrutina inpt_chgn

Sub Inpt_chgn:

Select Case H

Case 0 : Decr C

If C < 1 Then C = 1

Case 1 : Incr C

If C > 4 Then C = 4

End Select

Select Case C

Case 1 : Mask = &B00000000

Case 2 : Mask = &B00000001

Case 3 : Mask = &B00000010

Case 4 : Mask = &B00000011

End Select

Temp = Inp_ut And &B11111100

Inp_ut = Temp Or Mask

I2csend &H88 , Inp_ut

W = 0

Timer1 = W

End Sub

------------------------------------------

 

Pentru submeniul Volume am inteles cum se realizeaza cresterea sau scaderea vol la apasarea lui + sau - dar la Input change NU. Si la celelalte cum ar fi FADER, BASS , TREBLE este aceasi poveste. Nu inteleg cum se realizeaza procesul de crestere sau scadere a valorilor. Multumesc inca odata!

Foarte simplu : incrementand la apasarea butonului de plus/decrementand la apasarea butonului de minus variabila "C" , care in final corespunde valorii necesare ce trebuie inscrisa pentru selctarea intrarilor de la 1 pana la 4.

- variabila "H " da doar sensul modificarii : marire sau micsorare

- uite cum e : valoarea se schimba atunci cand se incrementeaza /decrementeaza " C " apoi cu Case/select se alege masca necesara , se aplica masca si dupa cele 2 operatii de AND si OR rezulta in binar exact valoarea pentru selectarea intrarii respective.

Nu neg ca se poate rescrie aceasta rutina in alte 10 feluri diferite din care alte 2 le stiu deja .

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