Hola Sancho, basicamente, tu programa se resuelve con una tabla
yo lo pensaria de la siguiente forma
primero: un contador, que estaria en un loop, esperando a que alguien pulse...
al pulsar, saltaria el programa a la parte de presentacion de ruleta... y el n umero ya lo tendrias asignado segun el valor en que quedo el contador...
presentacion:
un retardo o delay que seria con tiempos en incremento para simular la perdida de velocidad, creo que en un principio, siempre tendria que dar unas vueltas muy rapidamente (por si el primer contador es uno, solo prenderia la proxima lampara!!!)
la tabla de presentacion seria por ejemplo
movf contador
addwf pcl,f
retlw b"00000001"
retlw b"00000010"
retlw b"00000100"
retlw b"00001000"
"
"
"
retlw b"10000000"
pero como tienes que trabajar con 2 puerto y ademas el contador no puede superar el valor de 10 (9)
podrias hacerlo
movf contador
addwf pcl,f
goto uno
goto dos
goto tres
"
"
"
goto diez
uno clrf porta
clrf portb
bsf portb,0
retlw 0
dos clrf porta
clrf portb
bsf portb,1
retlw 0
tres clrf porta
clrf portb
bsf portb,2
retlw 0
"
"
"
nueve clrf porta
clrf portb
bsf portA,0
retlw 0
diez clrf porta
clrf portb
bsf portA,1
retlw 0

bueno, espero lo interpretes...
un abrazo
Norberto