...
NumBit Var Byte
BitToSend Var Bit
ByteToSend Var Byte
...
OutCK Var PORTB.6 ' Out Clock
OutDA Var PORTB.7 ' Out Data
...
ByteToSend=$23
NumBit=8: GOSUB SendByte
...
'----[ Trasmite un bit en Clock/Data ]----------------------------------------
SendBit:
OutDA=BitToSend&$01 ' Coloco el bit a transmitir en el pin del dato
Pauseus 250 ' Espero 250 microsegundos
High OutCK ' Subo el pin del Clock
Pauseus 250 ' Espero otros 250 microsegundos
LOW OutCK ' Bajo el pin del Clock
RETURN
'----[ Trasmite un byte in Clock/Data ]---------------------------------------
SendByte:
LoopSendByte:
BitToSend=(ByteToSend&$01) ' Primer bit en BitToSend
GOSUB SendBit ' Trasmito el bit
NumBit=NumBit-1 ' Decremento el bit a trasmitir
IF NumBit!=0 THEN ' Si el bit no es el último ...
ByteToSend=(ByteToSend>>1) ' Desplazo hacia la derecha todos los bits
GOTO LoopSendByte ' Vuelvo a empezar
EndIf
RETURN