Sari la conținut
ELFORUM - Forumul electronistilor

abc PIC pentru Novici


miniMAX19

Postări Recomandate

Nigel scrie pe electro-tech-online forum ca moderator.

 

Trebuie sa intelegi ca acele exemple au o multime de greseli pentru ca sunt scrise si rescrise, etc. D-aia n-am zis nimic la 1 si 2, sunt simple greseli.

Link spre comentariu

 

2)

 

This routine introduces a new command 'decfsz' 'Decrement File and Skip on Zero', this decrements the file register specified (in this case either count2, or count1) and if the result equals zero skips over the next line. So this first section using it,

 

d2       decfsz count2 ,f           goto d2

 

care este linia d2?  nu vad decat d1 ?!

 

 

d2 e eticheta cu care începe instrucţiunea decfsz count2,f :)

Link spre comentariu

problema e ca linia "d2" nu apare in textul programului ci numai la explicatii ; pacat de greselile din acest tutorial , spre deosebire de multe altele , acesta chiar se adresa incepatorilor .

Link spre comentariu

apare la explicaţii pentru că e dat separat de programul principal, ca exemplu cum anume funcţionează instrucţiunea "decfsz".în program instrucţiunea apare la eticheta "Delay_0", şi acolo are o funcţionare uşor alterată faţă de cea mai simplă şi mai uşor de înţeles din comentariu...

 

ia încearcă să foloseşti listingul înlocuind etichetele în care apare instrucţiunea aia... se modifică ceva?dar dacă le foloseşti simultan?

 

(nu uita să defineşti şi "count2" la început!)

Link spre comentariu

So this first section using it,

 

d2 decfsz count2 ,fgoto d2

 

decrements count2, checks if it equals zero, and if not continues to the 'goto d2' line, which jumps back and decrements count2 again, this continues until count2 equals zero, then the 'goto d2' is skipped over and count1 is decrements in the same way, this time looping back to the start of the count2 loop, so it runs again. 

 

cred totusi ca thunderer are dreptate si sunt pur si simplu erori de corelare intre explicatii si codul la care acestea se raporteaza . Imi place insa ca se merge pe explicarea unui cod(plecand de la cele mai simple) linie cu linie, punandu-se mult mai mult accent pe aspectul practic decat pe teorie. 

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

nu neapărat, uneori e mai uşor de învăţat în genul: ţi se dă un exemplu, apoi un exemplu puţin greşit, nu prea tare, adică nu depăşeşte domeniul pe care se presupune că-l stăpâneşti deja.

 

iar satisfacţia că "i-ai dat de cap singur" se mai adaugă şi la faptul că ai găsit singur şi problema, şi rezolvarea, şi cum nu ţi-a dat-o nimeni mură-n gură, ai fixat nişte cunoştinţe în plus!... :aplauze

Link spre comentariu
  • 6 luni mai târziu...

Salut, sunt incepator si am nevoie de ajutor. Am o aplicatie cu PIC16F84A, scrisa in assembler cu ajutorul careia vreau sa scriu in memoria EEPROM a picului, o valoare si apoi sa o citesc si sa o afisez pe un LCD.

Din pacate nu reusesc sa scriu si nici sa citesc nimic. Rog pe cei care se pricep sa ma ajute. Acesta este codul:

WRITE_EEPROM	BSF	STATUS,RP0	BCF	STATUS,RP1	MOVLW	0x00	MOVWF	EEADR	BCF	STATUS, RP0	MOVF	SET_VALUE,W		BSF     STATUS, RP0		 	MOVWF	EEDATA	BSF	EECON1, WREN	        ; Enable Write EEPROM	MOVLW	0x55	MOVWF	EECON2			; Write 55h	MOVLW	0xAA	MOVWF	EECON2			; Write AAh	BSF	EECON1, WR		; Set WR bitW_WR	BTFSC	EECON1, WR			GOTO	W_WR				BCF	EECON1, WREN		; Disable Write EEPROM	BCF     STATUS, RP0			RETURNREAD_EEPROM	BSF	STATUS,RP0			BCF	STATUS,RP1	MOVLW	0x00	MOVWF	EEADR			; Address to read		BSF	EECON1, RD		; Read EEROMW_RD	BTFSC	EECON1, RD	GOTO    W_RD	MOVF	EEDATA, 0	BCF	STATUS,RP0			MOVWF	SET_VALUE	RETURN
Editat de RykăElectronistul
Link spre comentariu

Nu stiu ce sa cred, in simulare am urmatoarea eroare: "Attempt to write to EECON2 without EECON1 <WREN> set ignored". Problema este ca nu merge nici cu montajul realizat fizic.

Link spre comentariu

Mai intai de toate, sterge toate liniile de cod care au de a face cu bitii RP1 si IRP, pentru ca scrie clar in datasheet "these bits are not implemented".

 

Apoi, ai setat bitul RP0 chiar inaintea instructiunii ce scrie in EEDATA, astfel acea instructiune acum scrie in EECON1, foarte probabil setand si bitul WR inainte de a executa secventa "cheie".

 

EEDATA si EEADR se afla in bank 0, EECON1 si EECON2 in bank 1.

Editat de 10vid
Link spre comentariu

Ai lucrat/invatat vreodata un limbaj de programare? Daca da, atunci continua cu acelasi limbaj.Daca pornesti de la zero, cunoscatorii zic ca C e cel mai bun, pentru amatori Basic-ul e suficient. ASM daca iti plac lucrurile abstracte.Sugerez sa te axezi pe un compilator care vine cu biblioteci ca sa poti implementa orice fara multe batai de cap. La pretul PIC-urilor, nu mai merita sa faci optimizari ale programelor. Repet, in regim de amator.Niste exemple de compilatoare:C - XC8 de la Microchip. MikroCBasic - Mikrobasic, PicbasicPascal - Mikropascal.

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