Radyo Alıcısı Thumbwheel switch

Başlatan onurinci, 30 Eylül 2023, 22:58:16

onurinci

arkadaşlar merhabalar ,Forumda Proton yazıtlarının canlandığını farkettim.şansımı deneyeyim dedim.
Proton bana bayağı bir uzak.PB'de hafızaya alma işlemlerinde pek kötü değilim.ama proton gözümde hiç canlanmadı.
elimde 45 yıllık bir HF alıcı var 10KHz 30MHz arası.çok eski bir derginin arşiv sayfasında bana yardımcı olabilecek bir program buldum.Proton'un emekleme döneminde yazılmış, üzerinde baya bir değişiklik yapıp derlemeyi başardım.
7 adet Thumbwheel switch kötü kullanımdan kırılmış ve bulunması mümkün değil.PLL devresinde Frekansları ayar edebilmek için 7 adet 0...9'a BCD kod üretiyorlar.buraya kadar devreyi kurdum ve alıcıyı kusursuz çalıştırdım fakat.program ayar edipte en son bıraktığım yeri saklama yada kaydetme olanağına sahip değil .tek eksik yanı bu gibi.  program satırlarının en dibinde bir kaç satırlık yer 7.092.000 yazar yer bu default frekanstan açılıyor.program 100Hz'lik adımlar ile ilerleyebiliyor .10Hz'lik kısmı yazılmamış koma durumunda.sıkıcı bir durum benim .için en en önemli aradığım özellik.akşam dinlediğim frekansı öbür akşam açtığımda bir ayar yapmadan orada durması.görüşlerinize açığım.simulasyon dosyası ve yazılım ektedir.

Device 16F628A
Config CPD_OFF,CP_OFF,BODEN_OFF,MCLRE_OFF,PWRTE_ON,WDT_OFF,INTRC_OSC_NOCLKOUT,LVP_OFF
Xtal=4
All_Digital = TRUE
;Declare Optimiser_Level = 3

Declare LCD_RSPin = PORTB.0         
Declare LCD_ENPin = PORTB.3         
Declare LCD_DTPin = PORTB.4    
Declare LCD_Interface = 4            '4-bit Interface
Declare LCD_Lines = 2                 'in this case 2 lots of 2 lines
Declare LCD_Type = 0
Declare PORTB_Pullups = TRUE

Dim Tmp        As Byte 
Dim TmpOld [8] As Byte 
Dim Frq        As Dword
Dim Frq704C    As Dword
Dim KeyN       As Byte 
Dim Ypos       As Byte 
Dim Xpos       As Byte
Dim XposM      As Byte 
Dim FrqD [8]   As Byte
Dim Pw         As Dword 
Dim T          As Byte 
Dim I          As Byte 
Dim ErrorCF    As Bit
Dim DataBit    As Bit
Dim Nu         As Float
Dim old        As Byte 
Dim new        As Byte 
Dim var1       As Byte
;---------------------
Dim Onr        As Byte
;---------------------

Declare SDA_Pin PORTB.1
Declare SCL_Pin PORTB.2 

Symbol SDA=PORTB.1 
Symbol SCL=PORTB.2


Main:


TRISA= %00000111 : PORTA= 0
TRISB= %00000000 : PORTB= 0
    DelayMS 500
    Cls
    
    Print At 1, 1, "ITT MACKAY 3030A"
    Print At 2, 1, " Marin Receiver "
    
    DelayMS 1500
    Cls
    GoSub DefaultFrq
    ErrorCF =0
    GoSub CalculateFrq
    GoSub PrintFrq
    GoSub InvFrq
    While 1 = 1
KeyN = 0
KeyN = KeyN + PORTA.0
KeyN = KeyN + PORTA.1 * 2
KeyN = KeyN + PORTA.2 * 4
KeyN = 7 - KeyN
    DelayMS 200
 Select KeyN
  Case 1
    GoSub UpKey
  Case 2
    GoSub DownKey
  Case 3
    GoSub RightKey
  Case 4
    GoSub LeftKey
 EndSelect
    Wend
    End

LeftKey:
    If XposM  < 6 Then
    Inc XposM
    Else
    XposM = 0
    EndIf
    GoSub Cursors
    Return

RightKey:
    If XposM > 0 Then
    Dec XposM
    Else
    XposM = 6
    EndIf
    GoSub Cursors
    Return

UpKey:
    GoSub OldFrqD
    I = XposM + 1
    Repeat
    If FrqD [I-1] = 9 Then
    FrqD [I-1] = 0 
    Dec I
    Else
;-------------------------------    
    Onr=FrqD[I-1]
    Inc Onr
    FrqD[I-1]=Onr
;-------------------------------- 
;;    Inc FrqD  [I-1]  ; ?????
    I = 0
    EndIf
    Until I = 0
    GoSub CalculateFrq
    If ErrorCF = 1 Then
    GoSub FrqDOld
    ErrorCF = 0
    Return 
    EndIf
    GoSub PrintFrq
    GoSub InvFrq
    Return

DownKey:
    GoSub OldFrqD
    I = XposM + 1
    Repeat
    If FrqD [I-1] = 0 Then
    FrqD [I-1] = 9
    Dec I
    Else
;------------------------    
    Onr=FrqD[I-1]
    Dec Onr
    FrqD[I-1]=Onr
;------------------------    
;;    Dec FrqD [I-1]  ; ?????
    I = 0
    EndIf
    Until I = 0
    GoSub CalculateFrq
    If ErrorCF = 1 Then
    GoSub FrqDOld
    ErrorCF = 0
    Return 
    EndIf
    GoSub PrintFrq
    GoSub InvFrq
    Return

CalculateFrq:
    Pw = 1
    Frq = 0
    For T = 0 To 7
    Frq = Frq + FrqD [7-T] *Pw
    Pw = Pw * 10
    Next T
    If Frq < 10000 Then
    ErrorCF = 1
    Print $FE ,$0C
    Print At 2, 2, "Limit's Min Freq"
    DelayMS 1000
    Print At 2, 1, "                "
    GoSub Cursors
    EndIf
    If Frq > 30000000 Then
    ErrorCF = 1
    Print $FE ,$0C
    Print At 2, 2, "Limit's Max Freq"
    DelayMS 1000
    Print At 2, 1, "                "
    GoSub Cursors
    EndIf
    ' If Frq > 600000  and < 1500000 Then
    Return

PrintFrq:
    Print $FE ,$0C
    Xpos = 6
    Print At 1, 2, "MHz "
    For T = 0 To 7 Then
    If T = 2 Or T = 5 Then
    Cursor 1, Xpos
    Print "." , @FrqD[T]
    Inc Xpos
    Inc Xpos
    Else
    Cursor 1, Xpos
    Print  @FrqD[T]
    Inc Xpos
    EndIf
    Next T
    GoSub Cursors
    Return

Cursors:
 Select XposM
  Case 0
    Xpos = 6
  Case 1
    Xpos = 7
  Case 2
    Xpos = 9
  Case 3
    Xpos = 10
  Case 4 
    Xpos = 11
  Case 5
    Xpos = 13
  Case 6
    Xpos = 14
  Case 7
    Xpos = 15
 EndSelect
    Print $FE ,$0E
    Cursor 1, Xpos
    Return

InvFrq:

    var1 = 0 + (FrqD [0] + FrqD [1] * 16) 
    I2COut SDA ,SCL , %01110000 , [var1]
    
    var1 = 0 + (FrqD [2] + FrqD [3] * 16)  
    I2COut SDA ,SCL , %01110010 , [var1]
    
    var1 = 0 + (FrqD [4] + FrqD [5] * 16)  
    I2COut SDA ,SCL , %01110100 , [var1]
    
    var1 = 0 + (FrqD [6] + FrqD [7] * 16)  
    I2COut SDA ,SCL , %01110110 , [var1]
    Return

OldFrqD:
    T = 8
    Repeat 
    Dec T
    TmpOld [T-1] = FrqD [T-1]
    Until T = 0
    Return

FrqDOld:
    T = 8
    Repeat 
    Dec T
    FrqD [T-1] = TmpOld [T-1]
    Until T = 0
    Return

DefaultFrq:
    FrqD [0] = 0
    FrqD [1] = 7
    FrqD [2] = 0
    FrqD [3] = 9
    FrqD [4] = 2
    FrqD [5] = 0
    FrqD [6] = 0
    FrqD [7] = 0
    Return

Pepe

#1
.

onurinci

@Pepe Eres grande, si tienes la oportunidad, me gustaría que el último dígito fuera 10 Hz.

Pepe

no entiendo la pregunta, muestre una imagen de lo que desea

onurinci

LSB Readout Last Digit 10Hertz Resolution not working.
 display'in en sağ 10Hz gösterme kısmı programda yok.çalışmıyor PCF8574'de çıkış yok , o bölüm için. olsa güzel olurdu.

Pepe

#5
.

onurinci

Vaya, eso es perfecto, genial. ¿Puedes reemplazar el signo que marqué con una coma?

Pepe

#7
.

onurinci

Va genial, estamos por llegar al final ¿Puede el cursor empezar desde la casa que marqué en cada inicio?

elektro77

Alıntı yapılan: Pepe - 01 Ekim 2023, 03:55:11modificado con coma
si puede podria donar algo por el trabajo realizado
Devre şeması da olsaydı, belki ben bağış yapabilirdim.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

onurinci

#10
@

Pepe

#11
Ver #18

onurinci

La opción anterior de Autoguardado era muy buena, pero se ha vuelto muy complicada y difícil. Si no grabas manualmente el lugar que escuchaste, tendrás que recordarlo mañana. De hecho, sería fantástico si existiera la posibilidad de guardar un cursor en la versión anterior. Por ejemplo, el cursor de esta última versión. Se abre desde el lugar correcto. Saludos cordiales.

rexo

Hola Pepe,

Te envié un mensaje privado, te agradecería que le echaras un vistazo y me respondieras.

Pepe

#14
Ver #18

Powered by EzPortal