RDivider = Reference frequency : Frequency step = 10240000 : 5000 = 2048 NDivider = (VCOFrequency : Swallow Counter) : Frequency step = (320000000 : 64) : 5000 = 1000 Prescaler = 64 (Prescaler Control-bit = 1) Sub cmdProgram_Click () OutPort = &H378 InPort = &H379 RValue = 2048 PValue = 1 SValue = 64 NValue = 1000 UpdateRDivider UpdateNDivider End Sub BAS-file: Option Explicit Declare Function Inp Lib "inpout16.Dll" Alias "Inp16" (ByVal InPort As Integer) As Integer Declare Sub Out Lib "inpout16.Dll" Alias "Out16" (ByVal OutPort As Integer, ByVal Value As Integer) Global OutPort '&H378, &H278 or &H3BC Global InPort '&H379, &H279 or &H3BD Global RValue 'Decimal value for Reference Divider Global RDivider 'Binary value for Reference Divider Global SValue 'Desimal value for Swallow Counter Global SDivider 'Binary value for Swallow Counter Global NValue 'Decimal value for Frequency Divider Global NDivider 'Binary value for Frequency Divider Global PValue '0 = 128/129 and 1 = 64/65 Sub UpdateNDivider() 'Used to calculate Binary value Dim Digit 'Number of Binary digit to S and N divider Dim BinValue 'Binary value Dim TempValue Dim DecValue 'Decimal value 'Calculate Binary value for Swallow Counter DecValue = Val(SValue) BinValue = "" Do TempValue = DecValue Mod 2 BinValue = CStr(TempValue) + BinValue DecValue = DecValue \ 2 Loop Until DecValue = 0 SDivider = BinValue 'Calculate Binary value for NDivider DecValue = Val(NValue) BinValue = "" Do TempValue = DecValue Mod 2 BinValue = CStr(TempValue) + BinValue DecValue = DecValue \ 2 Loop Until DecValue = 0 NDivider = BinValue 'Used to transmit Swallow Counter digit to PLL Dim c As Integer Dim d As Integer 'Used to transmit NCounter digit to PLL Dim e As Integer Dim f As Integer 'Send NDivider value to PLL Bit 8 to 18 For e = 1 To (11 Len(NDivider)) 'If number of Binary <11 digit Out (OutPort), 0 'Set Data Low. Out (OutPort), 1 'Set Clock High. Out (OutPort), 0 'Set Clock and Data Low. Next e For f = 1 To Len(NDivider) Digit = Mid$(NDivider, f, 1) If Digit = 0 Then Out (OutPort), 0 'Set Data Low. If Digit = 0 Then Out (OutPort), 1 'Set Clock High. If Digit = 0 Then Out (OutPort), 0 'Set Clock and Data Low. If Digit = 1 Then Out (OutPort), 2 'Set Data High. If Digit = 1 Then Out (OutPort), 3 'Set Clock High. If Digit = 1 Then Out (OutPort), 0 'Set Clock and Data Low. Next f 'Send SCounter value to PLL Bit 1 to 7 For c = 1 To (7 Len(PDivider)) 'If number of Binary <7 digit Out (OutPort), 0 'Set Data Low. Out (OutPort), 1 'Set Clock High. Out (OutPort), 0 'Set Clock and Data Low. Next c For d = 1 To Len(SDivider) Digit = Mid$(SDivider, d, 1) If Digit = 0 Then Out (OutPort), 0 'Set Data Low. If Digit = 0 Then Out (OutPort), 1 'Set Clock High. If Digit = 0 Then Out (OutPort), 0 'Set Clock and Data Low. If Digit = 1 Then Out (OutPort), 2 'Set Data High. If Digit = 1 Then Out (OutPort), 3 'Set Clock High. If Digit = 1 Then Out (OutPort), 0 'Set Clock and Data Low. Next d 'Send Control-bit LSB Control-bit = 0 Out (OutPort), 0 'Set Data Low Out (OutPort), 2 'Set Clock High Out (OutPort), 0 'Set all bit Low 'Send LE Out (OutPort), 4 'Set EN High Out (OutPort), 0 'Set all bit Low End Sub Sub UpdateRDivider() 'Used to calculate Binary value Dim Digit 'Number of Binary digit to R divider Dim BinValue 'Binary value Dim TempValue Dim DecValue 'Decimal value 'Calculate Binary value DecValue = Val(RValue) BinValue = "" Do TempValue = DecValue Mod 2 BinValue = CStr(TempValue) + BinValue DecValue = DecValue \ 2 Loop Until DecValue = 0 RDivider = BinValue 'Send Prescaler Control bit to R-divider Bit 15 Out (OutPort), 2 'Set Data High (ControlBit = 1). Out (OutPort), 3 'Set Clock High. Out (OutPort), 0 'Set all bit Low 'Used to transmit digit to PLL Dim i As Integer Dim j As Integer 'Send Reference Divider value to PLL Bit 1 to 14 For j = 1 To (14 Len(RDivider)) 'If number of Binary <14 digit Out (OutPort), 0 'Set Data Low. Out (OutPort), 1 'Set Clock High. Out (OutPort), 0 'Set Clock and Data Low. Next j For i = 1 To Len(RDivider) Digit = Mid$(RDivider, i, 1) If Digit = 0 Then Out (OutPort), 0 'Set Data Low. If Digit = 0 Then Out (OutPort), 1 'Set Clock High. If Digit = 0 Then Out (OutPort), 0 'Set Clock and Data Low. If Digit = 1 Then Out (OutPort), 2 'Set Data High. If Digit = 1 Then Out (OutPort), 3 'Set Clock High. If Digit = 1 Then Out (OutPort), 0 'Set Clock and DataLow. Next i If SValue = 128 Then Out (OutPort), 0 'Set Data Low. If SValue = 128 Then Out (OutPort), 1 'Set Clock High. If SValue = 128 Then Out (OutPort), 0 'Set Clock and Data Low. If SValue = 64 Then Out (OutPort), 2 'Set Data High. If SValue = 64 Then Out (OutPort), 3 'Set Clock High. If SValue = 64 Then Out (OutPort), 0 'Set Clock and DataLow. 'Send Control-bit LSB Control-bit = 1 Out (OutPort), 1 'Set Data High Out (OutPort), 3 'Set Clock High Out (OutPort), 0 'Set all bit Low 'Send LE Out (OutPort), 4 'Set EN High Out (OutPort), 0 'Set all bit Low End Sub