[ rasko1950 @ 30.11.2013. 17:08 ] @
Dali ima neko ideju kako izmeniti kristal od 10mhz na 4mhz ili na 5mhz sa smanjenim brojem instrukcija za pic 16f84.
Postojeca varijanta sa 10mhz je ovakva;

; --------------------------------------------------
; sendmidi transmits one midi byte on RA3.
; W/ 10mhz xtal, 80 instructions per midi bit.
; Byte to be sent is passed in register xmit.
sendmidi:

startb: MidiData ; begin start bit
movlw D'24' ; delay 73 clocks: 2+(23*3 + 1*2)
movwf temp ; |
loop1: decfsz temp,f ; |
goto loop1 ; end delay

movlw D'8' ; counter to cycle through 8 bits...
movwf j ; ...is in j

sendloop: ; burns 5 cycles before setting bit
rrf xmit,f
btfsc STATUS, C
goto send1

send0: nop
MidiData
goto endloop

send1: MidiIdle
nop
nop

endloop: ;
movlw D'23' ;delay 70 instructions 2+(22*3 + 1*2)
movwf temp ; |
loop2: decfsz temp,f ; |
goto loop2 ; end delay

decfsz j,f
goto sendloop

stopb:
nop
nop
nop
nop
nop
MidiIdle

movlw D'26' ; delay 79 clocks: 2+(25*3 + 1*2)
movwf temp ; |
loop3: decfsz temp,f ; |
goto loop3 ; end delay

return



[Ovu poruku je menjao rasko1950 dana 30.11.2013. u 18:23 GMT+1]
[ ZAS011 @ 30.11.2013. 17:23 ] @
A šta fali kristalu od 10MHz?
I kako si zamislio da se smanji broj instrukcija?
[ rasko1950 @ 30.11.2013. 17:32 ] @
Pravi probleme u uredjaju na kontaktima koji daju on off tako da i mala prasina na njima zna da otkuca jos nekoliko puta on off.Sto se tice instrukcija ako se smanji kristal na 4 mhz poze da se smanji i broj instrukcija jer nisu potrebne 80
[ ZAS011 @ 30.11.2013. 19:21 ] @
Imaš source pa možeš da smanjiš broj instrukcija
Što se prašine tiče, očisti je.
Pošto nisi stavio čitav program, ne vidi se da li postoji debouncing rutina koja eliminiše "prašinu" odnosno istitravanje kontakata prekidača.
[ bogdan.kecman @ 30.11.2013. 19:28 ] @
spustanjem na 4MHz neces resiti problem sa kontaktima