'Programme en PicBasic pour le pilotage du module Comtech TX1200 'avec affichage de la fr‚quence sur un LCD en mode 4-bit. 'Fmin =1200 MHz, F max= 1650 MHz 'S‚lection du pas 125, 250, 500, 1000 kHz 'Mémorisation de la fréquence par bouton poussoir ' *** Copyright - F6CSX/F5hii - octobre 2001 *** ' 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) INPUT UP 'Up et Down sont des entrées INPUT DOWN INPUT MEMO INPUT CH_PAS ' ** DÉCLARATION DES VARIABLES b1 var BYTE b2 var BYTE b3 var BYTE b5 var BYTE F1 var WORD F2 var WORD F3 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=9600 'début à 1200 MHz : 1200 / 0,125 = 9600 PAS = 1 ' pas de 0.125 MHZ par défaut PAUSE 100 LOW PORTB.2 'Met RB2 = R/W à 0 LCDOUT $FE, 1 ' Clear LCD screen LCDOUT "TX 1.2GHz ATV v0" ' affiche numéro de version pendant 1 seconde PAUSE 1000 EEPROM 0,[$90,$01] 'données initiales TMP = 400 ($190) correspond à F = 1250 MHz ' Le point de départ est 1200 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 *** READ 0,TMP_LO 'lit les 8 bits de poids faible READ 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 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 MONTE: '** AUGMENTE LA FRÉQUENCE DE 1 PAS TMP = TMP + PAS IF TMP > 3600 THEN TMP = 0 'Fmax = 1600 MHz GOTO MAIN DESCEND: '** DIMINUE LA FREQUENCE DE 1 PAS IF TMP