' ********************************************************************** ' ** Programma: gmbi2cc.bas - Versione : 1.1 - 11 giugno 2003 ** ' ** Compilatore : BASCOM 8051 DEMO, (IDE e LIB V.2.0.11.0) ** ' ** Scheda : GMB HR84 e CAN GMx ** ' ** 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 ** ' ** sales@grifo.it tech@grifo.it grifo@grifo.it ** ' ** ** ' ** Realizzato da: Graziano Gaiba ** ' ********************************************************************** ' ' Questi demo permettono di comunicare con disposivi I2C BUS collegati a CN3. ' In accordo con il Mini Modulo utilizzato, e' possibile leggere e scrivere ' byte ad un qualsiasi slave address ed address inseriti da console. ' In particolare, in lettura il byte ricevuto viene visualizzato, mentre in ' caso di scrittura il dato inserito viene spedito. ' ' ' 11.06.2003 by Graziano Gaiba ' ' ' Prima di compilare selezionare nel menu Option/Compiler/Misc/ : ' Byte End 80. ' '*********************************************************************** ' '****************** Direttive del compilatore ************************** ' $regfile = "grifo_mm.dat" $romstart = &H0 ' indirizzo di partenza del codice ' macchina per FLASH $ramstart = &H0 ' indirizzo di partenza della area ' dati $ramsize = &H100 ' pongo a 256 bytes la area dati $crystal = 14745600 ' frequenza di clock del microcontrollore $baud = 19200 ' velocità di comunicazione RS-232 $large ' indirizzamento a 16 bit $map Config Sda = P2.1 ' I2C serial DATA Config Scl = P2.0 ' I2C serial CLK ' ' '****************** Dichiarazione delle variabili ********************** ' Dim Valore As Byte , I As Byte ' Uso generico Dim Slave As Byte ' Slave address Dim Buf(30) As Byte ' Dati da ricevere e spedire Dim Inviare As Byte ' Numero dati da inviare Dim Ricevere As Byte ' Numero dati da ricevere ' '****************** Dichiarazione delle procedure ********************** ' ' '************************* Programma main ****************************** ' Main: Waitms 1 ' Ritardo Assestamento segnali ' Inizializza il demo Disable Interrupts ' Disabilita gli interrupts Auxr = &H0C ' Seleziona Eram Su Area Dati Esterna Eecon = &H00 ' Disabilita Eeprom Del Micro Adcf = &H00 ' Imposta P1 come I/O Print Chr(12) Print "Questo demo e' stato progettato per funzionare solo su una CAN GM1 o GM2" Print "Proseguite nell'esecuzione solo se avete la scheda giusta!" Print "Se intendete proseguire, premete un tasto" Do Valore = Inkey Loop Until Valore <> 0 Do Print Chr(12) Print "Demo I2C BUS su CN3 di GMB HR84" Print Print "1) Scrittura" Print "2) Lettura" Print Print "Scelta: " Do Valore = Inkey Loop Until Valore = "1" Or Valore = "2" Print Input "Slave address (in decimale): " , Slave Input "Numero dati da ricevere: " , Ricevere Input "Numero dati da inviare: " , Inviare If Inviare <> 0 Then For I = 1 To Inviare Print "dato " ; I ; ") "; Input Buf(i) Next I End If Select Case Valore Case "1" : I2csend Slave , Buf(1) , Inviare Case "2": I2creceive Slave , Buf(1) , Inviare , Ricevere End Select If Ricevere <> 0 Then Print "Dati ricevuti:" For I = 1 To Ricevere Print "dato " ; I ; ") " ; Buf(i) Next I End If Print "Premere un tasto per continuare..." Do Valore = Inkey Loop Until Valore <> 0 Loop End ' '************************ Fine del programma *************************** '