Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje
Uputstvo Članstvo Kalendar Današnje poruke Pretraži

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 31.5.2012, 22:29   #1
GrimReaper
Starosedelac
 
Član od: 5.12.2005.
Lokacija: Niš
Poruke: 1.259
Zahvalnice: 49
Zahvaljeno 154 puta na 115 poruka
Određen forumom Assembly PIC programiranje

Ima li nekog ko je dobar sa ovim? Imam jedan zadatak sa kojim imam problem, pa ako ima iskusnih, da ga postavim ovde da ga neko "debuguje" i objasni mi u čemu je problem, s obzirom na to da ga nisam ja pisao (ali razumem većinu kodu) i da ne radi kako treba.
GrimReaper je offline   Odgovor sa citatom ove poruke
Stara 1.6.2012, 7:45   #2
MG-RAY
Starosedelac
 
Član od: 15.2.2006.
Lokacija: Midlands
Poruke: 1.523
Zahvalnice: 277
Zahvaljeno 307 puta na 207 poruka
Slanje poruke preko Skypea korisniku MG-RAY
Određen forumom Re: Assembly PIC programiranje

Postavi, što da ne...

P.S. Koji PIC je u pitanju?
MG-RAY je offline   Odgovor sa citatom ove poruke
Stara 3.6.2012, 6:10   #3
GrimReaper
Starosedelac
 
Član od: 5.12.2005.
Lokacija: Niš
Poruke: 1.259
Zahvalnice: 49
Zahvaljeno 154 puta na 115 poruka
Određen forumom Re: Assembly PIC programiranje

16F872

Evo koda:

Kod:
;=============================================================================
;	Filename:	labVezba3.asm
;
		list p=16f872		;list directive to define processor
		#include <p16f872.inc>	;processor specific definitions
		errorlevel -302		;suppress "not in bank 0" message
;		#include <makro.asm>
		__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _BODEN_ON & _WRT_ENABLE_ON & _LVP_OFF & _CPD_OFF
;----------------------------------------------------------------------------
;Constants


	 org    0x2100
	 de     b'01111101',b'00110000',b'01101110',b'01111010', b'00110011', b'01011011', b'01011111', b'01110000', b'01111111',b'01111011'; vrednosti za cifre u EEPROM-u


;----------------------------------------------------------------------------
;Variables

		CBLOCK	0x30
		WREG_TEMP		;storage for WREG during interrupt
		STATUS_TEMP		;storage for STATUS during interrupt
		PCLATH_TEMP		;storage for PCLATH during interrupt
		FSR_TEMP		;storage for FSR during interrupt
		C1
		C2
		BROJ
		BROJAC
		TASTER
		X
		ENDC
		
;----------------------------------------------------------------------------
;This code executes when a reset occurs.
		
		ORG 0x00
		goto Main
		ORG	0x0004		;place code at interrupt vector
		goto	InterruptCode

ResetCode:	
		clrf    PCLATH		;select program memory page 0		
		goto	Main		;go to beginning of program
			
	      
Main:	
		bsf STATUS,5   
		clrf TRISC
		movlw 0xff
		movwf TRISB	
		
		movlw 0x06
		movwf ADCON1

		movlw 0x03          ; preskaler - 1:8
		movwf OPTION_REG

		bcf STATUS,5
		
		clrf PORTC
		clrf C1
		clrf C2
		clrf X

		movlw .4
		movwf BROJAC

		clrf TASTER
		movlw .23
		movwf BROJ
		
		
		clrf TMR0
		bcf INTCON,2
		bsf INTCON,5
		
		bsf INTCON,7

Loop:	goto Loop



;----------------------------------------------------------------------------
;This code executes when an interrupt occurs.

		
InterruptCode:	
		movwf	WREG_TEMP	;save WREG
		swapf	STATUS,W	;store STATUS in WREG
		clrf	STATUS		;select file register bank0
		movwf	STATUS_TEMP	;save STATUS value
		movf	PCLATH,W	;store PCLATH in WREG
		movwf	PCLATH_TEMP	;save PCLATH value
		clrf	PCLATH		;select program memory page0
		movf	FSR,W		;store FSR in WREG
		movwf	FSR_TEMP	;save FSR value
		
		;test interrupt flags here 

		bcf STATUS,5
		btfss INTCON,2
		goto Kraj

		bcf INTCON,7
		bcf INTCON,2
			
	
	
		;--CIFRE--
		
			clrf C1
			movfw BROJ
			movwf X
			movlw .10
		Cifra1:							
			subwf X,1
			btfss STATUS,0
			goto Cifra2
			incf C1,1
			goto Cifra1
		
		Cifra2:
			movfw X
			addlw .10
			movwf C2
		
	
	;--CITANJE IZ EEPROMA

		movf C1,0
		btfss BROJAC,0
		movf C2,0

		banksel EEADR
		movwf  EEADR
		banksel EECON1
		bsf EECON1, RD
		banksel EEDATA
		movf   EEDATA, 0      	;W = EEDATA	

	;--PRIKAZ NA DISPLEJU
		banksel PORTC
		movwf PORTC
		bsf PORTC,7
		btfss BROJAC,0
		bcf PORTC,7	
	
	;--TASTER

		decfsz BROJAC,1
		goto Kraj
		
			btfsc TASTER,0 		;TASTER - flag koji oznacava da li je taster bio pritisnut
			goto Obradi
			btfss PORTB,1
			clrf TASTER
			btfsc PORTB,1
			incf TASTER, 1
			goto Kraj2
			
			
			Obradi:	btfss PORTB,1
				goto Kraj2
	
				incf BROJ,1
				movf BROJ,0
				sublw .99			; W = 99 - BROJ
				btfsc STATUS,0
				clrw
				btfss STATUS,0
				sublw .99
				movwf BROJ
				;incf TASTER,1
			
	Kraj2:	
			movlw .4
			movwf BROJAC

;=============================================================================		
Kraj:  
		
	;	movlw .250
	;	movwf TMR0	   


;------------------------------------
;End of interrupt routine restores context

EndInt:	
		bcf	3,5		;select bank 0
		movf	FSR_TEMP,W	;get saved FSR value
		movwf	FSR		;restore FSR
		movf	PCLATH_TEMP,W	;get saved PCLATH value
		movwf	PCLATH		;restore PCLATH
		swapf	STATUS_TEMP,W	;get saved STATUS value
		movwf	STATUS		;restore STATUS
		swapf	WREG_TEMP,F	;prepare WREG to be restored
		swapf	WREG_TEMP,W	;restore WREG without affecting STATUS
		retfie			;return from interrupt

		end
;----------------------------------------------------------------------------
U suštini, ono što treba da radi jeste da ima frekvenciju osvežavanja 200hz, da ispiše (proizvoljan, decimalni, dvocifren) broj na displejevi i da na svakih 20ms proverava da li je pritisnut taster i ako jeste da poveća broj na displeju za 1.
GrimReaper je offline   Odgovor sa citatom ove poruke
Stara 3.6.2012, 9:38   #4
MG-RAY
Starosedelac
 
Član od: 15.2.2006.
Lokacija: Midlands
Poruke: 1.523
Zahvalnice: 277
Zahvaljeno 307 puta na 207 poruka
Slanje poruke preko Skypea korisniku MG-RAY
Određen forumom Re: Assembly PIC programiranje

Koji oscilator si koristio, to nisi naveo?

Pretpostavljam da su displeji 7-segmentni?

Sta uopste ne radi?
MG-RAY je offline   Odgovor sa citatom ove poruke
Stara 3.6.2012, 14:37   #5
GrimReaper
Starosedelac
 
Član od: 5.12.2005.
Lokacija: Niš
Poruke: 1.259
Zahvalnice: 49
Zahvaljeno 154 puta na 115 poruka
Određen forumom Re: Assembly PIC programiranje

Frekvencija oscilatora je 3.2768 MHz, displejevi jesu sedmosegmentni, a ne radi ništa. U zavisnosti od malih izmena koje napravim u kodu, dešava se ili da ispiše na displeju na kratko broj, pa (pretpostavljam nakon 20ms) sam pređe na 00, da ispiše 1 na prvom displeju i ništa na drugom, a jednom sam uspeo čak (ne znam ni sam kako) da napravim da stoji zadati broj na displeju, ali pritiskom na taster (inače ovde postavljen kao RB1) umesto da se broj poveća za 1 resetuje se na 00. A da, i zaboravio sam da napomenem da broj treba da se čita iz EEPROMA.
GrimReaper je offline   Odgovor sa citatom ove poruke
Stara 3.6.2012, 19:17   #6
enaB
Član
 
Član od: 1.12.2005.
Lokacija: Batajnica
Poruke: 184
Zahvalnice: 9
Zahvaljeno 42 puta na 32 poruka
Određen forumom Re: Assembly PIC programiranje

Zašto ne pokreneš debugger pa vidiš šta se dešava sa kodom instrukciju po instrukciju
enaB je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi


Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Starcraft II Predrag Stankovic Strateške igre 2641 4.11.2017 6:07
Programiranje u ET racunara KecmaNedjo Programiranje 10 11.9.2010 8:20
Najbolji program za programiranje igara, sugestije Mish Pravljenje igara 16 27.11.2009 21:48
Pomozite mi da još više zavolim programiranje! Nikola92 Programiranje 19 19.9.2008 23:34
Programiranje na HTC Touch Cruise-u Sol-Badguy Programi za mobilne telefone 1 19.9.2008 18:12


Sva vremena su po Griniču +2 h. Sada je 20:36.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com