' ********************************************************************** ' ** File: Hello_it.BAS - Versione : 1.1 - 31 Gennaio 2006 ** ' ** Compilatore: Bascom 8051 IDE e LIB 2.0.11.0 ** ' ** Scheda: GMM 935 e GMM 935.11 ** ' ** Ditta: grifo(r) ITALIAN TECHNOLOGY ** ' ** Via Dell' Artigiano 8/6 40016 San Giorgio di Piano (BO) ** ' ** Tel.+39 051 892 052 Fax +39 051 893 661 ** ' ** http://www.grifo.com http://www.grifo.it ** ' ** ** ' ** Realizzato da: Graziano GAIBA ** ' ********************************************************************** ' ' Hello_it.BAS - Rel. 1.1 - 31.01.2006 by Graziano Gaiba ' Programma precaricato nei mini moduli. ' Effettua il lampeggiamento del LED di bordo. ' 'N.B. Verificare ed eventualmente aggiungere il file 89lpc935.dat nella ' directory principale del BASCOM 8051. Inoltre nella finestra ' Options | Compiler | Misc effettuare i seguenti settaggi: ' Register File = 89lpc935.dat ' Byte End(Hex) = A0 ' Size warning = 8191 ' '*********************************************************************** ' '****************** Direttive del compilatore ************************** ' $regfile "89lpc935.dat" $romstart = &H0 ' Indirizzo inizio codice in FLASH $ramstart = &H0 ' Indirizzo inizio RAM esterna $ramsize = &H200 ' 512 bytes di RAM esterna $crystal = 11059200 ' Massima F quarzo del microcontrollore $baud = 19200 ' Velocità comunicazione seriale $large ' Indirizzamento a 16 bit $map ' Genera informazioni per ogni riga ' ' '********************** Dichiarazione delle costanti *************************** ' Const Rcint = 7372800 ' Frequenza clock da RC interno Const Qz11m = 11059200 ' Frequenza clock da quarzo esterno ' ' '********************** Dichiarazione delle variabili ************************** ' Dim Cclk As Long ' Frequenza clock della CPU Dim R As Word , Rit1ms As Word , Rit As Word ' Gestione ritardi ' ' '********************** Dichiarazione delle procedure ************************** ' Declare Sub Get_clk ' Acquisizione frequenza clock Declare Sub Ritardo(rit As Word) ' Effettua ritardo calibrato ' '*************************** Programma Main **************************** ' Main: ' Determina la configurazione del clock Call Get_clk ' Imposta come uscite le linee TTL collegate al LED P0m1 = P0m1 Or &H40 ' Setta P0.6 in modo 3=OpenDrain P0m2 = P0m2 Or &H40 Do ' Accende il LED P0.6 = 0 ' Pausa di 200 millisecondi Call Ritardo(200) ' Spegne il LED P0.6 = 1 ' Pausa di 200 millisecondi Call Ritardo(200) ' Ripete all'infinito Loop End ' '********************** Fine del programma Main ************************ ' ' ' '************************ Procedure di uso generale **************************** ' Legge il byte di configurazione UCFG1 in FLASH grazie alle procedure IAP del ' Boot Rom del P89LPC935. Restituisce la variabile globale cclk settata con la ' frequenza di clock della CPU, senza controllare gli eventuali errori. Sub Get_clk mov A,#&H03 ' Usa comando Misc. Read mov R7,#&H00 ' Legge registro UCFG1 lcall &HFF03 ' Chiama proc. IAP ad ind. PGM_MTP mov A,R7 ' Salva risultato anl A,#&H07 ' Mantiene bit con clock CPU Select Case Acc Case &H00 : Cclk = Qz11m ' Frequenza clock da quarzo esterno Case &H03 : Cclk = Rcint ' Frequenza clock da RC interno End Select End Sub ' ' ' Effettua un ritardo del numero di millisecondi passato nel parametro rit, ' tenendo conto della frequenza di clock salvata nella variabile cclk senza ' usare le istruzioni BASCOM che usano un valore predefinito e costante di ' clock. Sub Ritardo(rit As Word) If Cclk = Rcint Then Rit1ms = 73 ' Valore sperimentale per 1 msec a 7 MHz Else Rit1ms = 110 ' Valore sperimentale per 1 msec a 11 MHz End If Do For R = 0 To Rit1ms ' Ciclo per ritardo di 1 msec Next R Rit = Rit - 1 Loop Until Rit = 0 End Sub