izmenjeno 1 put, poslednji put rasko1950 30.11.2013. u 18:23
Izmene poruke
- rasko195030.11.2013. u 18:23zapis iz teksta poruke
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
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