thanks for your reply s. here is a piece of software I'm using just to see if I can get it working without the flicker of when temp hits 5000 and 10000, so far failed, I'm using a moc 3021 and a bt137 and bridge with a 1k feeding porta.0 and a 10k holding it low. I have been able to make a simple dimming program so I know this hardware works, I also have an lcd so I need a few more io that a 12f675
Code:
Define LCD_DREG PORTB
 'Set starting data bit
 Define LCD_DBIT 4 'rb4,rb5,rb6,rb7
 'Set LCD RS Port
 DEFINE LCD_RSREG portb
 'Set LCD RS Bit
 define LCD_RSBIT 3
 'Set LCD Enable Port
 Define LCD_EREG portb
 'Set LCD Enable Bit
 Define LCD_EBIT 2
 'Set number of LCD Lines
 Define LCD_LINES 2
 'Set Command Delay time in uS
 define LCD_COMMANUS 2000
 'Set Data delay time in uS
 define LCD_DATAUS 50

temp var word
temp = 0
temp2 var word
target var word
target = 3000
symbol fire = portb.1
symbol ac = portb.0

maxdelay var word
maxdelay = 8000

delay var word
delay = 4000

trisa = %00000011
trisb = %00000001

DQ	VAR	PORTa.0			' One-wire data pin
temperature VAR	WORD			' Temperature storage
count_remain VAR BYTE			' Count remaining
count_per_c VAR	BYTE

DS18B20_9bit CON %00011111 ; 93.75ms, 0.5°C
DS18B20_10bit CON %00111111 ; 187.5ms, 0.25°C <-- My favorite
DS18B20_11bit CON %01011111 ; 375ms, 0.125°C
DS18B20_12bit CON %01111111 ; 750ms, 0.0625°C (default)

OWOUT DQ, 1, [$CC, $4E, 0, 0, DS18B20_11bit]
 


lcdout 254,1
pause 100

on interrupt goto firetriac
intcon = %10010000

mainloop:
for temp = 0 to 10000
if temp = 5000 then
gosub startcon
endif
if temp = 10000 then
gosub readtemp
endif
next temp
goto mainloop 




disable
firetriac:
pauseus  delay
fire = 1
pauseus 10
fire = 0
intcon.1 = 0
resume
enable

startcon:
OWOut DQ, 1, [$CC, $44]       ' Start temperature conversion
return
readtemp:


waitloop: OWIn DQ, 4, [count_remain]	' Check for still busy converting
	IF count_remain = 0 Then mainloop    'was this what you ment about no waiting in the 'loop

	OWOut DQ, 1, [$CC, $BE]		' Read the temperature
        OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

	' Calculate temperature in degrees C to 2 decimal places (not valid for negative temperature)
	temperature = (temperature >> 1)

	lcdout 254,1, dec temperature / 10 ,".", dec1 temperature , " c" 
    lcdout 254,192, dec delay 

return