' Programme en PicBasic pour programmer le module Comtech TX2400 ' avec affichage de la fréquence sur un LCD en mode 4-bit. 'Fmin =2000 MHz, F max= 2650 MHz 'Sélection du pas 125, 250, 500, 1000, 10 000 kHz 'Mémorisation de la fréquence par bouton poussoir ' deux VFO sélectionnables par Port A3 ' *** Copyright - F6CSX - Juillet 2002 *** ' ** DÉFINITION HARDWARE (CONFIGURATION COMME F1BIU, COMPATIBLE CI DE F6KIO): ' LCD PIC ' ------ -------- ' DB4 PortB.4 ' DB5 PortB.5 ' DB6 PortB.6 ' DB7 PortB.7 ' RS PortB.1 ' E PortB.3 ' RW PortB.2 ' Vdd 5 volts ' Vss Ground ' Vo potentiometre de 10K ' ' ** DÉCLARATION DE LA CONFIGURATION HARD DEFINE LCD_DREG PORTB 'Selection du port B DEFINE LCD_DBIT 4 'Selection de RB4 à RB7 DEFINE LCD_RSREG PORTB 'RS sur port B DEFINE LCD_RSBIT 1 'RS sur RB1 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 3 'E sur RB3 DEFINE LCD_BITS 4 'Mode 4 bits DEFINE LCD_LINES 1 '1 ligne DEFINE I2C_SCLOUT 1 ' ** DÉFINITION DES ENTREES - SORTIES ' Sorties I2C SCL var PORTB.1 ' SCL sur RB1 (pin 7) SDA var PORTB.0 ' SDA sur RB0 (pin 6) 'Boutons MEMO var PORTA.2 ' Bouton de mémorisation sur RA2 (pin 1) UP var PORTA.0 'augmente la fréquence (sur RA0) DOWN var PORTA.1 'diminue la fréquence (sur RA1) CH_PAS var PORTA.4 'Change le pas du synthé (sur RA4) SEL var PORTA.3 'Choix VFO A ou B (sur RA3) INPUT UP 'Up et Down sont des entrées INPUT DOWN INPUT MEMO INPUT CH_PAS INPUT SEL ' ** DÉCLARATION DES VARIABLES b1 var BYTE b2 var BYTE b3 var BYTE b5 var BYTE b6 var BYTE b7 var BYTE F1 var WORD F2 var WORD F3 var WORD W1 var BYTE W2 var WORD ADDR1 VAR BYTE TMP VAR WORD TMP_LO VAR TMP.LOWBYTE TMP_HI VAR TMP.HIGHBYTE PLLBASE VAR WORD PLL VAR WORD LO VAR PLL.LOWBYTE HI VAR PLL.HIGHBYTE PAS VAR BYTE '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz '*** DONNEES INITIALES *** ADDR1=$C2 'adresse I2C du SDA5055 PLLBASE=16000 'début à 2000 MHz : 2200 / 0,125 = 17600 PAS = 1 ' pas de 125 kHz par défaut PAUSE 100 LOW PORTB.2 'Met RB2 = R/W à 0 LCDOUT $FE, 1 ' Clear LCD screen LCDOUT "TX ATV 2.3GHz v0" ' affiche numéro de version pendant 1 seconde W1=0 W2="A" PAUSE 1000 EEPROM 0,[$A0,$09,$00,$0A] 'données initiales TMP =2464 ($9A0) correspond à F = 2308 MHz ' TMP = 2560 ($A00) correspond à 2320 MHz ' Le point de départ est 2000 MHz donné par PLLBASE. On rajoute un décalage de 125kHz * TMP 'TMP est sur 16 bits, donc 65535 fréquences possibles. ' '*** LECTURE DU DECALAGE TMP *** LECTURE: READ W1,TMP_LO 'lit les 8 bits de poids faible READ W1+1,TMP_HI 'lit les 8 bits de poids fort ' *** DÉBUT DU PROGRAMME *** MAIN: PLL = PLLBASE + TMP I2CWRITE SDA,SCL,ADDR1,[HI,LO,$8E] 'Envoi des données au module GOSUB CALCUL 'calcule la fréquence pour l'affichage GOSUB AFFICHAGE 'affiche la fréquence PAUSE 500 '*** BOUCLE PRINCIPALE *** BOUCLE: BUTTON SEL,0,255,0,b6,1,VFO_A 'surveille le bouton SEL: 0=VFO A BUTTON SEL,1,255,0,b7,1,VFO_B ' 1= VFO B BUTTON UP,0,10,2,b1,1,MONTE 'surveille le bouton UP BUTTON DOWN,0,10,2,b2,1,DESCEND 'surveille le bouton DOWN BUTTON MEMO,0,255,0,b5,1,STORE 'surveille le bouton MEMO BUTTON CH_PAS,0,255,0,b3,1, CHOIX 'surveille le bouton PAS PAUSE 100 'pause de 0.1s GOTO BOUCLE VFO_A: 'Change de VFO W1=0 W2="A" GOTO LECTURE VFO_B: W1=2 W2="B" GOTO LECTURE MONTE: '** AUGMENTE LA FRÉQUENCE DE 1 PAS TMP = TMP + PAS IF TMP > 5200 THEN TMP = 0 'Fmax = 2650 MHz GOTO MAIN DESCEND: '** DIMINUE LA FREQUENCE DE 1 PAS IF TMP