Sari la conținut
ELFORUM - Forumul electronistilor

Putin ajutor cu Texas Instruments Lounchpad


adyyo

Postări Recomandate

Tui mama ei de deplasare ca mai aveam oleaca si aruncam matricea asta pe geam :sparge:

Pana la urma am facut deplasarea stanga si deplasarea dreapta cu rotire. Mi-a luat ceva mai mult sa ma dumiresc ce se pierde si ce se salveaza pentru ca matricea mea este cu susul in jos :ras:

Am folosit pana la urma metoda lui Liviu deoarece in metoda data de George, de exemplu daca aveam "A" incarcat in buffer, acesta se deplasa la stanga pana disparea tot abia dupa aceea incepea sa apara prin dreapta. Folosind metoda data de Liviu, "A" se deplaseaza la stanga si atunci cand dispare un rand in stanga, la urmatoarea deplasare apare in dreapta.

 

L.E. uitasem de cod :rade:

void rotire_stanga(int nr_pixeli_rotiti)				// rotirea afisajului la stanga cu un nr de n pixeli (n=nr_pixeli_rotiti){	char j, n, bit_salvat_s;		for (n = 1 ; n <= nr_pixeli_rotiti ; n++)		{			for (j = 0 ; j < COL_MAX ; j++)			{				if (display_buffer[j] & 0x80)			// Daca MSB=1				bit_salvat_s = 1;						// Salvez MSB				else				bit_salvat_s = 0;						// Salvez MSB				display_buffer[j] <<= 1;				// Deplasare spre stanga				if (bit_salvat_s == 1)					// Daca bit_salvat = 1				display_buffer[j] |= 0x01;				// Scrie 1 in LSB			}		}}void rotire_dreapta(int nr_pixeli_rotiti)				// rotirea afisajului la dreapta cu un nr de n pixeli (n=nr_pixeli_rotiti){	char x, m, bit_salvat_d;		for (m = 1 ; m <= nr_pixeli_rotiti ; m++)		{			for (x = 0 ; x < COL_MAX ; x++)			{				if (display_buffer[x] & 0x01)				// Daca LSB = 1				bit_salvat_d = 1;							// Salvez LSB				else				bit_salvat_d = 0;							// Salvez LSB				display_buffer[x] >>= 1;					// Deplasare spre dreapta				if (bit_salvat_d == 1)						// Daca bit salvat = 1				display_buffer[x] |= 0x80;					// Scrie 1 in MSB			}		}}
Link spre comentariu
  • Răspunsuri 155
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • adyyo

    64

  • Liviu M

    31

  • picolo

    4

  • MifTy

    1

Top autori în acest subiect

Ciudat, cele 2 variante ar trebui sa fie echivalente (in cazul variabilelor char, asa cum ai folosit tu).LE M-am uitat in asm-ul generat de ccs4 pentru operatiile de deplasare (stanga) si genereaza codul corect (RLA.B). Si ca sa aflu ce inseamna RLA.B, m-am uitat prin manuale (==Rotate Left Arithmetically), ocazie cu care am aflat ca la deplasarea stanga MSB e salvat in C(arry), la fel cum la deplasarea la dreapta LSB e salvat si el in C.

Link spre comentariu
  • 4 săptămâni mai târziu...

Am revenit, sper ca v-a fost dor de mine :rade: Am terminat cu licenta, pana in toamna am timp sa ma apuc mai serios de MCU.Deci unde ramasesem...merge derularea stanga, derularea dreapta. Mai departe ar trebui sa inteleg cum folosesc printf pentru a afisa pe matrice cuvintele. Ce stiu este ce am facut in primul an de facultate cand foloseam printf pentru a afisa text pe monitor in C. Adica printf("Hello");

Link spre comentariu

Aici nu merge direct cu printf. E o funcţie prea complicată, rar se foloseşte printf cu MCU-uri. Chiar şi folosirea unor primitive ale ei ar fi o treabă destul de întortocheată.

 

E mai simplu şi mult mai util (în scop didactic) să construieşti singur funcţii din ce în ce mai evoluate.

Recomandarea mea ar fi să le faci întâi pe cele de care am vorbit.

Apoi, folosindu-te de ele, construieşti o funcţie care afişează un şir de caractere.

 

Între timp, continuă să citeşti un manual de C şi să faci (nu doar să le copiezi) exemplele şi/sau exerciţiile de acolo.

Timp de explicaţii nu mai am ca până acum, dar aştept cu interes următoarele tale progrămele. :da

Spor la butonat!

Link spre comentariu
  • 1 lună mai târziu...

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