' ******************************************************************* ' * Programma: PWM8254.BAS Versione: 1.1 - 06 Settembre 1999 * ' * Compilatore: BASCOM 8051 (IDE V.1.0.0.16, LIB V.1.10) * ' * Ditta: Grifo(r) Via Dell'Artigiano 8/6 * ' * 40016 San Giorgio di Piano * ' * Tel. +39-051-892052 Fax +39-051-893661 * ' * http://www.grifo.com http://www.grifo.it * ' * sales@grifo.it tech@grifo.it grifo@grifo.it * ' * * ' * Realizzato da: Graziano Gaiba * ' ******************************************************************* ' ' Programma realizzato per la scheda GPC(r) F2, con il BASCOM 8051, ' collegata alla EMI 01. ' Vengono pilotate le due uscite PWM della EMI 01 in modo da generare una ' Qualunque tensione tra -10 e +10 V. ' '****************** Direttive del compilatore ************************** ' $romstart = &H8050 ' Indirizzo di partenza del codice macchina $ramstart = &HD000 ' Indirizzo di partenza della area dati $ramsize = &H2800 ' Pongo a 10K la area dati $crystal = 11059200 ' Frequenza di clock del microcontrollore $baud = 9600 ' Velocità di comunicazione RS-232 $large ' Indirizzamento a 16 bit ' '****************** Dichiarazione delle variabili ********************** ' Dim V As Word , S As Single , C As String * 1 ' Variabili di uso generico Dim Nimp As Word ' Numero impulsi per generare Vout Dim Indstat As Word , Indcnt2 As Word ' Indirizzi registri 8253 Dim Cmdw2 As Byte ' Parola di comando per 8253 ' '************************* Programma main ****************************** ' Waitms 1 ' Ritardo per assestamento dei segnali Print Chr(12) ' Pulizia video Print "SELEZIONARE IC 8254 DI LAVORO (A o B) " ; C = Waitkey ' Attende un tasto Print C If C = "a" Then Goto Selezione_a Else Goto Selezione_b Selezione_a: Indstat = &HFA43 ' Assegna indirizzo reg. di stato 8253 A Indcnt2 = &HFA42 ' Assegna indirizzo reg. dati per contatore 2 A Goto Continua Selezione_b: Indstat = &HFA83 ' Assegna indirizzo reg. di stato 8253 B Indcnt2 = &HFA82 ' Assegna indirizzo reg. dati per contatore 2 B Continua: ' REM endif Cmdw2 = &HB2 ' Parola di comando per contatore 2: modo 1 Out Indstat , Cmdw2 ' Inizializzazione contatore 2 Print : Print ' Spaziatura Print "PROGRAMMA PER LA GENERAZIONE DI UNA TENSIONE CONTINUA" Print "VARIABILE TRA -10V E +10V, TRAMITE SEGNALE PWM" Ripeti: ' Da qui ripete all' Print : Print : Print : ' Spaziatura Print "INSERIRE UN VALORE COMPRESO TRA -10 E +10" Input S ' Lettura valore della ' Tensione richiesto in out ' Calcolo numero di impulsi da contare 'Nimp = ((s + 10.0) * 204.75) If S = -10.0 Then Nimp = 1 Else S = S + 10.0 S = S * 204.75 Nimp = S End If Print "Numero Impulsi = " ; Nimp V = Low(nimp) ' Byte basso del numero impulsi Print "Byte Basso Numero Impulsi = " ; V Out Indcnt2 , Low(nimp) ' Caricamento byte low del n. impulsi V = High(nimp) ' Byte alto del numero impulsi Print "Byte Basso Alto Numero Impulsi = " ; V Out Indcnt2 , High(nimp) ' Caricamento byte high del n. impulsi Goto Ripeti End ' '************************ Fine del programma *************************** '