Code source des fonctions de pilotage de l'interface télescope de PISCO (en Visual Basic)

' ====================================
' Ecriture port série
' DTR = broche 4 (bit 0 du registre 4)
' ====================================
Sub WriteBit0(valeur As Integer)
Dim r As Integer

If valeur = 0 Then
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFE)
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFE)
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFE)
Else
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 1)
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 1)
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 1)
End If

End Sub

' ====================================
' Ecriture port série
' RTS = broche 7 (bit 1 du registre 4)
' ====================================
Sub WriteBit1(valeur As Integer)
Dim r As Integer

If valeur = 0 Then
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFD)
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFD)
   r = outport(ComAdress + 4, inport(ComAdress + 4) And &HFD)
Else
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 2)
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 2)
   r = outport(ComAdress + 4, inport(ComAdress + 4) Or 2)
End If

End Sub

' ====================================
' Ecriture port série
' TxD = broche 3 (bit 6 du registre 3)
' ====================================
Sub WriteBit2(valeur As Integer)
Dim r As Integer

If valeur = 0 Then
   r = outport(ComAdress + 3, inport(ComAdress + 3) And 191)
   r = outport(ComAdress + 3, inport(ComAdress + 3) And 191)
   r = outport(ComAdress + 3, inport(ComAdress + 3) And 191)
Else
   r = outport(ComAdress + 3, inport(ComAdress + 3) Or 64)
   r = outport(ComAdress + 3, inport(ComAdress + 3) Or 64)
   r = outport(ComAdress + 3, inport(ComAdress + 3) Or 64)
End If

End Sub

' ====================================
' Initialisation du port série
' Impulsion sur le bit 3 du registre 4
' ====================================
Sub InitCom()
Dim r As Integer
Dim i As Integer

r = outport(ComAdress + 4, 0)
r = outport(ComAdress + 4, 0)
r = outport(ComAdress + 4, 0)

r = outport(ComAdress + 4, 8)
r = outport(ComAdress + 4, 8)
r = outport(ComAdress + 4, 8)

r = outport(ComAdress + 4, 0)
r = outport(ComAdress + 4, 0)
r = outport(ComAdress + 4, 0)

' Vide le registre à décalage
WriteBit2 0 ' Latch à 0

For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next

WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ===============================================
' Met à zéro tous les bits du registre à décalage
' ===============================================
Sub RazCom()
Dim r As Integer
Dim i As Integer

' Vide le registre à décalage
WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ===============================================
' Met à zéro tous les bits du registre à décalage
' Sauf le bit 4 (vitesse lente ou rapide)
' ===============================================
Sub RazComFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
'WriteBit0 1

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =====================
' Ascension droite plus
' (Bit 0)
' =====================
Sub AdPlus()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit2 1 ' Latch à 1

End Sub

' ======================
' Ascension droite moins
' (Bit 1)
' ======================
Sub AdMoins()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =================
' Déclinaison plus
' (Bit 2)
' =================
Sub DecPlus()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ==================
' Déclinaison  moins
' (Bit 3)
' ==================
Sub DecMoins()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =======================================
' Ascension droite plus et vitesse rapide
' (Bit 0 + 4)
' =======================================
Sub AdPlusFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit2 1 ' Latch à 1

End Sub

' =======================================
' Ascension droite mois et vitesse rapide
' (Bit 1 + 4)
' =======================================
Sub AdMoinsFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock 

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ==================================
' Déclinaison plus et vitesse rapide
' (Bit 2 + 4)
' ==================================
Sub DecPlusFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ==================================
' Déclinaison mois et vitesse rapide
' (Bit 3 + 4)
' ==================================
Sub DecMoinsFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock 

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =====================
' Focalisation positive
' (Bit 5)
' =====================
Sub FocusPlus()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =====================
' Focalisation négative
' (Bit 6)
' =====================
Sub FocusMoins()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' =======================================
' Focalisation positive et vitesse rapide
' (Bit 4 et 5)
' =======================================
Sub FocusPlusFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub

' ====================================
' Focalisation moins et vitesse rapide
' (Bit 4 et 6)
' ====================================
Sub FocusMoinsFast()
Dim i As Integer

WriteBit2 0 ' Latch à 0
For i = 1 To 8
   WriteBit0 0  ' On écrit 0
   WriteBit1 0  ' 8 impulsions sur la Clock
   WriteBit1 1
Next
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock
 
WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 1 ' Ligne d'entrée à 1
WriteBit1 1 ' Front montant de la Clock
WriteBit1 0 ' Front descendant de la Clock

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit0 0 ' Pousse d'un cran
WriteBit1 1
WriteBit1 0

WriteBit2 1 ' Latch à 1

End Sub
 

Retour