' ********************************************************************** ' * File gmbiob.bas - Rel. 1.1 con Bascom 8051 DEMO IDE e LIB 2.0.11.0 * ' * GRIFO(R) via Dell'Artigiano 8/6 40016 S. Giorgio di Piano (BO) * ' * Scheda: GMB HR168 + GMM AC2 * ' * 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 * ' * by Graziano Gaiba del 24.02.04 * ' ********************************************************************** ' ' Questo demo permette di comunicare con disposivi I2C BUS collegati a CN8. ' 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. ' ' ' ' !!!!!!!!!!!!!!!!!!!!! ATTENZIONE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' Nel menu Options/Compiler/Misc impostare: ' - Byte End(hex) ad almeno A0 ' ' ' 24.02.04 - Rel 1.1 By Graziano Gaiba ' ' Il file compilato non supera i 2048 bytes, quindi puo' essere ' compilato con il demo gratuito di BASCOM 8051. ' '*********************************************************************** ' '****************** Direttive del compilatore ************************** ' $regfile = "89c51ac2.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 P1 = &HFF ' Imposta P1 come input I = P1 P2 = &HFF ' Imposta P2 come input I = P2 Do Print Chr(12) Print "Demo I2C BUS su CN8 di GMB HR168 ds 110104" Print Print "1) Scrittura" Print "2) Lettura" Print Print "Scelta: " Do Valore = Inkey() Loop Until Valore = "1" Or Valore = "2" Print Inputhex "Slave address (in esadecimale): " , Slave Input "Numero dati da ricevere (in decimale): " , Ricevere Input "Numero dati da inviare (in decimale): " , 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 *************************** '