Die Sensoren kannst du dank dem 1-Wire Bus alle an den gleichen Port anschliesen.
Dieser Assemblercode könnte ein Ansatz sein.

Code:
port            .equ $02        ; Port C 
portdir         .equ $06        ; Datenrichtungsregister 
ds18s           .equ 7          ; bit 7 
ds18smask       .equ $80 

bas_1           .equ $b7        ; erste Basic Variable => Fehlerrückgabe 
bas_2           .equ $b8        ; zweite Basic Variable => Daten Rein&Raus 


               .ORG $101 
                       
reset          sei        ;mask any intr, as they inject heavy jitter 
               bclr ds18s,port ; port low    
               bset ds18s,portdir; Port als Ausgang                
               lda  #$4b       ; 4b 75 * 10 5sec => ~750 5sec 
               jsr  delay      ; in Warteschleife springen 
               bclr ds18s,portdir; Port high Z 
               lda  #$08       ; 8 * 10 5sec => ~80 5sec 
               jsr  delay      ; warten auf PRESENCE-PULSE-DS1820 
               lda  port       
               and  #ds18smask  ; nur bit1, alle anderen maskieren 
               bne  error      ; Fehler-Flag setzen 
               lda  #$2d       ; erneut 45 * ~10 5sec => ~450 5sec 
               jsr  delay 

byte_send      lda  #$08       ; 08 Bits 
               sta  bas_1 
               bset ds18s,port 
               bset ds18s,portdir         
byte_send_b    bclr ds18s,port; Write 1 Slot ~5 5sec Port 1 Low 
               clc             ; clear Carry bit 
               ror  bas_2      ; in Carry schieben 
               bcc  write0 
               bcs  write1                                                           
write0          bclr ds18s,port 
               bra  weiter 
write1         bset ds18s,port 
weiter         lda  #$07       ; 7 * ~10 => 70 5sec delay 
               jsr  delay 
               bset ds18s,port 
               dec  bas_1 
               bne  byte_send_b 
               cli        ;vor jedem rts ein cli nicht vergessen 
               rts 

byte_read      lda  #$08       ; 08 Bits 
               sta  bas_1 
               lda  #$00 
               sta  bas_2 
byte_read_b    bset ds18s,port; first set value, then drive, not vice versa 
               bset ds18s,portdir 
               bclr ds18s,port 
               bclr ds18s,portdir 
               nop             ; 14 5sec abwarten 
               nop        ; wenn ein hochkapazitives oder langes Kabel verwendet wird, haben die Dallas Probleme    
               nop        ; von 0 auf highZ in 14us zu kommen. Event muessesn dann mehr nops eingebaut werden. 
               nop 
               nop 
               nop 
               nop 
               nop 
               brset ds18s,port,rot   ; Bit in C lesen 
rot            ror  bas_2 
               lda  #$07       ; Gesamtzykluszeit abwarten (~60 5sec) 
               jsr  delay 
               dec  bas_1 
               bne  byte_read_b 
               bset ds18s,port 
               bset ds18s,portdir 
               cli 
               rts 

delay          ldx  #$02       ; ca. 10 5sec delay 
inloop         decx             
               bne  inloop 
               deca       
               bne  delay       
               rts 

error          lda  #$ff       ; Ein Fehler => 255 speichern    
               sta  bas_1 
               cli 
               rts 

.end
Quelle: http://www.b-kainka.de/ccbsp.htm