Advertisement
AtomSoft

I2C

Feb 11th, 2013
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. //  Author: Jason Lopez aka AtomSoft
  2. //  Company: AtomSoftTech
  3. //  Website: AtomSoft.wordpress.com
  4. //
  5. //  I2C Proximity Sensor and Ambient Light Sensor
  6. /******************************************************************************/
  7. /* Files to Include                                                           */
  8. /******************************************************************************/
  9.  
  10. #include "user.h"          /* User funct/params, such as InitApp */
  11. #include "i2cbb.h"
  12.  
  13. #pragma config WDTEN = OFF, XINST = ON, STVREN = OFF,  FCMEN = OFF , CLKOEC = OFF
  14.  
  15. #pragma config OSC = HSPLL, PLLDIV = 3,CFGPLLEN = ON,CPUDIV = OSC1
  16. //#pragma config LS48MHZ = SYS48X8
  17. /******************************************************************************
  18. ADDRESS = 0x27
  19.           G = GET
  20.           2 = 10bytes
  21.           14 = REGISTER/LOCATION 0x14
  22.  
  23.  ADDRESS = 0xA1
  24.           P = PUT
  25.           2 = 10bytes
  26.           14 = REGISTER/LOCATION 0x14
  27. ******************************************************************************/
  28.  
  29. #pragma udata BIG
  30. char msgBuff[255];
  31. #pragma udata
  32.  
  33. char crlf[4] = "\r\n\0";
  34. /******************************************************************************/
  35. /* Main Program                                                               */
  36. /******************************************************************************/
  37.  
  38. void main(void)
  39. {
  40.     InitApp();
  41.  
  42.     while(1)
  43.     {
  44.  
  45.          
  46.     }
  47.  
  48. }
  49. void WriteI2C(unsigned char data, unsigned char dev)
  50. {
  51.     char done = 0;
  52.  
  53.     i2c_start();
  54.     i2c_tx(dev);
  55.     i2c_tx(data);
  56.     i2c_stop();
  57. }
  58.  
  59. void InitApp(void)
  60. {
  61.     OSCTUNE = 0;
  62.     OSCCON = 0;                 //Primary OSC Selected
  63.     //while(!OSCCONbits.OSTS);    //Wait until Primary OSC is ready and running
  64.  
  65.     ADCON0 = 0;
  66.     ADCON1 = 0x0F;
  67.     CM1CON = 0x00;
  68.     ANCON0 = 0xFF;
  69.     ANCON1 = 0xFF;
  70.     CM2CON = 0x00;
  71.     CCP1CON = 0;
  72.     INTCON = INTCON2 = INTCON3 = 0;
  73.     PIR1 = PIR2 = 0;
  74.     PIE1 = PIE2 = 0;
  75.  
  76.     //Enable UART 9600,8-N-1
  77.     RCSTAbits.SPEN = 1;
  78.     TRISC |= 0b11000000;
  79.  
  80.     //Select Your Speed
  81.     //SPBRG = 38;   //19200bps
  82.     SPBRG = 77; //9600bps
  83.  
  84.     SPBRGH = 0;
  85.     TXSTA   = 0b00100100;
  86.  
  87.     BAUDCON = 0b00000000;
  88.     RCSTA   = 0b10010000;
  89.     INTCON = 0;
  90.    
  91.     PIE1 = 0;
  92.     PIR1 = 0;
  93.  
  94.     //Set INT channels to input
  95.     TRISA |= 0b00000011;
  96.     TRISB |= 0b00111111;
  97. }
  98.  
  99. unsigned char getChar(void)
  100. {
  101.     unsigned char rxTemp = 0;
  102.  
  103.     while(PIR1bits.RCIF == 0);
  104.     rxTemp = RCREG;
  105.     return rxTemp;
  106. }
  107. void putChar(char data)
  108. {
  109.     while(!PIR1bits.TXIF);
  110.     TXREG = data;
  111. }
  112.  
  113. void getStr(char *buff)
  114. {
  115.     char temp = 0;
  116.     char done = 0;
  117.     while(!done)
  118.     {
  119.         temp = getChar();
  120.         if(temp == '\n')
  121.             done = 1;
  122.         else
  123.             *buff++ = temp;
  124.     }
  125. }
  126. void putStr(char *buff)
  127. {
  128.     char temp=0;
  129.     while(*buff != 0)
  130.     {
  131.         temp = *buff++;
  132.         putChar(temp);
  133.         //Delay10TCYx(1);
  134.     }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement