Thank You Bruce for the code!!! I will try to get it loaded and tested tonight.

Originally Posted by
Mike, K8LH
Son of a gun, that works (please note that T0CKI is RB6 on a 16F88).
The three cycle loop 'overhead' (BTFSS & GOTO) is a bottleneck. You could get better performance if you spread it out over more pulses. If you were to produce 16 pulses within the loop then you could use a single byte variable counter instead of Timer 1 and bump the output up to 2+ MHz.
Regards, Mike
Mike are you saying Use a FOR Loop ouside of the ASM like this or is there an ASM FOR Loop I should be using for it (Keep in mind I dont know ASM):
Code:
PORTB.6 = 1 ' set pin so 1st low-to-high increments count
TRISB.6 = 0 ' make pin an output
T1CON = %00000011 ' 1:1 prescaler, external clock, Timer1 on
C1 VAR BYTE
FOR C1 = 0 to 255
ASM
Pulse
BCF PORTB,6 ; clear T1CKI pin / 1
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 2
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 3
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 4
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 5
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 6
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 7
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 8
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 9
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 10
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 11
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 12
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 13
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 14
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 15
BSF PORTB,6 ; set T1CKI pin
BCF PORTB,6 ; clear T1CKI pin / 16
BSF PORTB,6 ; set T1CKI pin
ENDASM
NEXT
Bookmarks