Wednesday, July 9, 2014

Saving this from being erased:

Main Blinky . c

#if defined(__XC)
    #include <xc.h>         /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>        /* HiTech General Include File */
#endif

#include <stdint.h>        /* For uint8_t definition */
#include <stdlib.h>

//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000

void init()
{
    //Configure GPIO Port
    ANSEL =  0b00000000;  //Configure all GPIO pins as digital
    TRISIO = 0b11001000;  //Set GP0, GP1, GP2, GP4, GP5 as outputs (0) and the rest as inputs (1)
    WPU = 0x00;           //Disable weak pullups
    //Configuer AD Convertor
    ADCON0 = 0x00;        //AD disabled
    ADRESH = 0x00;        //Init the AD Register
    //Configure Comparator
    CMCON0 = 0xFF;   // Comparator is turned off
    CMCON1 = 0x00;   // Comparator is turned off
    //Interrupt configuration
    INTCON = 0x00;   //Disable all interrupts
}

void vdelay(int n)
{
    int i;

    for (i=0;i<n;i++)
     {
      __delay_ms(1);
     }
}

void blink00()
// Blink 4 short pulses v
 {
  GPIO = 0b00000000;
  vdelay(2000);
  GPIO = 0b00000001;
  vdelay(50);
  GPIO = 0b00000000;
  vdelay(2000);
  GPIO = 0b00000010;
  vdelay(50);
  GPIO = 0b00000000;
  vdelay(2000);
  GPIO = 0b00000100;
  vdelay(50);
  GPIO = 0b00000000;
  vdelay(2000);
  GPIO = 0b00010000;
  vdelay(50);
 }

void blink01()
// Cycle through the lights from 0 to 3 v
{
    int i,s,n;
    s = ((rand() & 3)+1)*64;
    n = 512/(s+1);
    for (i=0;i<n;i++)
     {
      GPIO = 0b00000001;
      vdelay(s);
      GPIO = 0b00000010;
      vdelay(s);
      GPIO = 0b00000100;
      vdelay(s);
      GPIO = 0b00010000;
      vdelay(s);
      }
   GPIO = 0b00000000;
   vdelay(s);
}

void blink02()
// Blink light 0-3 from slow to fast v
{
    int i,j,k,n;
    k = 1;
    for (j=0;j<4;j++)
     {
      for (i=0;i<10;i++)
       {
        GPIO = 0b00000000;
        vdelay(200/(i+1));
        GPIO = k;
        vdelay(356/(i+1));
       }
      k=k<<1;
      if (k==8) k=k<<1;
     }
}

void blink03()
// Binary counter 0-32 (note pin 3 is input only) v
{
    int i,j,k,n;
    GPIO = 0b00000000;
    vdelay(100);
    for (i=0;i<10;i++)
    {
     for (j=0;j<32;j++)
      {
       k = j<8?j:j<<2;
       GPIO = j;
       vdelay(300/((i+1)*2));
      }
    }
   GPIO = 0b00000000;
   vdelay(100);

}

void blink04()
// Turn on lights 0-3 sequentially then faster v
{
    int i,j,n,k;
    GPIO = 0b00000000;
    vdelay(100);
    for (i=0;i<50;i++)
    {
     k=1;
     for (j=0;j<4;j++)
      {
       GPIO = k;
       vdelay(500/(i+1));
       k=k<<1;
       if (k==8) k=k<<1;
      }
    }
    GPIO = 0b00000000;
    vdelay(100);
}

void blink05()
// Chaser lights from 0 to 3 then 3 to 0 v
{
    int i,s,n;
    s = ((rand() & 3)+1)<<5;
    n = 1024/(s+1);
    for (i=0;i<n;i++)
     {
      GPIO = 0b00000001;
      vdelay(s);
      GPIO = 0b00000010;
      vdelay(s);
      GPIO = 0b00000100;
      vdelay(s);
      GPIO = 0b00010000;
      vdelay(s);
      GPIO = 0b00000100;
      vdelay(s);
      GPIO = 0b00000010;
      vdelay(s);
      }
   GPIO = 0b00000000;
   vdelay(s);
}

void blink06()
// Random lights constant time
{
 int i,s,n,r;
 s = ((rand() & 7)+1)<<6;
 n = 1024/(s+1)*2;
 for (i=0;i<n;i++)
  {
   r = rand() & 7;
   switch (r)
    {
     case 1:
      GPIO = 0b00000001;
      vdelay(s);
      break;
     case 2:
      GPIO = 0b00000010;
      vdelay(s);
      break;
     case 3:
      GPIO = 0b00000100;
      vdelay(s);
      break;
      case 4:
      GPIO = 0b00010000;
      vdelay(s);
      break;
     case 5:
      GPIO = 0b00010001;
      vdelay(s);
      break;
     case 6:
      GPIO = 0b00000110;
      vdelay(s);
      break;
     default:
      GPIO = 0b00010111;
      vdelay(s);
    }
  }
 GPIO = 0b00000000;
 vdelay(s);
}

void blink07()
// Smooth panning lights
 {
  int i,s,n,j,k,m,p;
  uint8_t sGPIO;
  uint8_t aGPIO[7]={0b00000001,0b00000010,0b00000100,0b00010000,0b00000100,0b00000010,0b00000001};
  s = ((rand() & 7)+1)<<3;
  n = 1023/(s+1);
  sGPIO = 0b00000000;
  for (p=0;p<2;p++)
  {
  for (m=0;m<6;m++)
   {
    for (j=0;j<n;j++)
     {
      k = n-j;
      for (i=0;i<n;i++)
       {
        if (i<k)
         {
          sGPIO = aGPIO[m] | sGPIO;
          GPIO = sGPIO;
          __delay_us(1);
         }
        if (i>k)
         {
          sGPIO = !aGPIO[m] & sGPIO;
          GPIO = sGPIO;
          __delay_us(1);
         }
        if (i<j)
         {
          sGPIO = aGPIO[m+1] | sGPIO;
          GPIO = sGPIO;
          __delay_us(1);
         }
        if (i>j)
         {
          sGPIO = !aGPIO[m+1] & sGPIO;
          GPIO = sGPIO;
          __delay_us(1);
         }
       }
     }
   }
  }
 }

void main()
{
    uint8_t db_cnt;
    int i, r;
    init();
    GPIO = 0b00000000;
    while(1)
    {
    r = rand() & 0b00000111;
     switch (r)
      {
       case 1:
        blink01();
        break;
       case 2:
        blink02();
        break;
       case 3:
        blink03();
        break;
       case 4:
        blink04();
        break;
       case 5:
        blink05();
        break;
       case 6:
        blink06();
        break;
       case 7:
        blink07();
        break;
       default:
        blink00();
      }
    }
}

LFO

#if defined(__XC)
    #include <xc.h>         /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>        /* HiTech General Include File */
#endif

#include <stdint.h>        /* For uint8_t definition */
#include <stdlib.h>

//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000

void init()
{
    //Configure GPIO Port
    ANSEL =  0b00000000;  //Configure all GPIO pins as digital
    TRISIO = 0b11001000;  //Set GP0, GP1, GP3, GP4, GP5 as outputs and the rest as inputs
    WPU = 0x00;           //Disable weak pullups
    //Configuer AD Convertor
    ADCON0 = 0x00;        //AD disabled
    ADRESH = 0x00;        //Init the AD Register
    //Configure Comparator
    CMCON0 = 0xFF;   // Comparator is turned off
    CMCON1 = 0x00;   // Comparator is turned off
    //Interrupt configuration
    INTCON = 0x00;   //Disable all interrupts
}

void vdelay(int n)
{
    int i;

    for (i=0;i<n;i++)
     {
      __delay_us(1);
     }
}

void lfo_saw(int frq)
// Blink 4 short pulses v
 {
  int i, j, k;
  uint8_t sGPIO = 0b00000000;

  for (k=0;k<4;k++)
   {
    for (j=0;j<255;j=j+frq+1)
     {
      for (i=0;i<255;i++)
       {
        if (i<j)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO | 0b00000001;
          sGPIO = sGPIO & 0b11111101;
          GPIO = sGPIO;
          //__delay_us(1);
         }
        if (i>j)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO | 0b00000010;
          sGPIO = sGPIO & 0b11111110;
          GPIO = sGPIO;
          //__delay_us(1);
         }
        if (j<127)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO | 0b00000100;
          sGPIO = sGPIO & 0b11101111;
          GPIO = sGPIO;
          //__delay_us(1);
         }
        if (j>127)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO | 0b00010000;
          sGPIO = sGPIO & 0b11111011;
          GPIO = sGPIO;
          //__delay_us(1);
         }
        if (j<31)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO | 0b00100000;
          GPIO = sGPIO;
          //__delay_us(1);
         }
        if (j>31)
         {
          sGPIO = GPIO;
          sGPIO = sGPIO & 0b11011111;
          GPIO = sGPIO;
          //__delay_us(1);
         }
       }
     }
   }
 }

void main()
{
    uint8_t db_cnt;
    int i, r;
    init();
    GPIO = 0b00000000;
    while(1)
    {
     r = rand() & 0b00001111;
     //r = 1;
     switch (r)
      {
       case 1:
        lfo_saw(r);
        break;
       default:
        lfo_saw(r);
      }
    }

}

//Motor Controller
#if defined(__XC)
    #include <xc.h>         /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>        /* HiTech General Include File */
#endif

#include <stdint.h>        /* For uint8_t definition */
#include <stdlib.h>

//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 4000000

void init()
{
    //Configure GPIO Port
    //ANSEL =  0b00000001;  //Configure GPIO pins as digital GP0 set to analog
    ANSEL =  0b01111000;  //Configure GPIO pins as digital, GP4 Analog

    TRISIO = 0b11011000;  //Set GP1,GP2,GP4,GP5 as outputs
    WPU = 0x00;           //Disable weak pullups
    //Configuer AD Convertor
    ADCON0 = 0b10001101;        //AD Set up
    ADRESH = 0x00;        //Init the AD Register
    //Configure Comparator
    CMCON0 = 0xFF;   // Comparator is turned off
    CMCON1 = 0x00;   // Comparator is turned off
    //Interrupt configuration
    INTCON = 0x00;   //Disable all interrupts

    OPTION_REGbits.nGPPU = 0;
    WPU = 1<<1;     //Enable weak pullups on GP1
    //Configuer AD Convertor
    //ADCON0 = 0x00;        //AD disabled
    //ADRESH = 0x00;        //Init the AD Register
        //Configuer AD Convertor

}

int read_v()
// Read voltage from input 0
 {
    int val;
    ADCON0bits.GO=1;
    while(ADCON0bits.nDONE);
    val = (ADRESH<<2)+(ADRESL>>6);
    return val;
 }

void vdelay(int n)
 {
  int i;

  for (i=0;i<n;i++)
   {
    __delay_us(100);
   }
 }

void pwgen(int pw)
// Send pulse width
 {
  int i, n=4;

  if (pw>56)
  {
      pw = 255;
      n=1;
  }
  if (pw<16)
   {
      n = 10;
   }
  for (i=0;i<255;i++)
   {
    if (i<pw)
     {
      GPIO = 0b00000010;
      vdelay(n);
     }
    if (i>pw)
     {
      GPIO = 0b00000000;
      vdelay(n);
     }
   }
 }

void main()
{
    uint8_t db_cnt;
    int v;
    init();
    GPIO = 0b00000000;
    while(1)
    {
     v = read_v();
     pwgen(v<<2);
    }


}

PWMC

#if defined(__XC)
    #include <xc.h>         /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>        /* HiTech General Include File */
#endif

#include <stdint.h>        /* For uint8_t definition */
#include <stdlib.h>

//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCIO
#define _XTAL_FREQ 8000000

void init()
{
    //Configure GPIO Port
    ANSEL =  0b00000000;  //Configure all GPIO pins as digital
    TRISIO = 0b11101100;  //Set GP0, GP1, GP2, GP4 as outputs (0) and the rest as inputs (1)
    WPU = 0x00;           //Disable weak pullups
    //Configuer AD Convertor
    ADCON0 = 0x00;        //AD disabled
    ADRESH = 0x00;        //Init the AD Register
    //Configure Comparator
    CMCON0 = 0xFF;   // Comparator is turned off
    CMCON1 = 0x00;   // Comparator is turned off
    //Interrupt configuration
    //INTCON = 0x00;   //Disable all interrupts
}

void main()
{
 uint8_t db_cnt, sPIR1,i,sCCP1CON; // ADC_result2;
 init();

 TRISIO = 0b11101100;  //Disable IO2
 PR2 = 0x00;
 CCP1CON = 0b00111100;
 CCPR1L =  1; // 1,4,16
 sPIR1 = PIR1 & 0b11111101; //Clear TMR2IF
 PIR1 = sPIR1;
 T2CON = 0b00000101;

 while(1)
  {
   for (i=0;i<4;i++)
    {
     if (PIR1bits.TMR2IF == 1)
      {
       TRISIO = 0b11101000;
       //sCCP1CON = CCP1CON;
      // CCP1CON = (sCCP1CON & 0b11001111) | (i<<4);
       //CCP1CON = 0b11001111;
       PR2 = i;
      }
     __delay_us(800000);
   }
  }

}

STOP LIGHTS

#if defined(__XC)
    #include <xc.h>         /* XC8 General Include File */
#elif defined(HI_TECH_C)
    #include <htc.h>        /* HiTech General Include File */
#endif

#include <stdint.h>        /* For uint8_t definition */
#include <stdbool.h>       /* For true/false definition */

//#fuses NOMCLR,NOPROTECT,NOWDT,INTRC
#pragma config MCLRE=OFF,CP=OFF,WDTE=OFF,FOSC=INTOSCCLK
#define _XTAL_FREQ 4000000
uint8_t sGPIO;

void init()
{
    //Configure GPIO Port
    ANSEL =  0b00000000;  //Configure all GPIO pins as digital
    TRISIO = 0b11111000;  //Set GP0, GP1, GP3 as outputs and the rest as inputs
    WPU = 0x00;           //Disable weak pullups
    //Configuer AD Convertor
    ADCON0 = 0x00;        //AD disabled
    ADRESH = 0x00;        //Init the AD Register
    //Configure Comparator
    CMCON0 = 0xFF;   // Comparator is turned off
    CMCON1 = 0x00;   // Comparator is turned off
    //Interrupt configuration
    INTCON = 0x00;   //Disable all interrupts
}


void main()
{
    uint8_t db_cnt;
    init();
    GPIO = 0b00100000;
    sGPIO= 0b00100000;
    while(1)
    {
     GPIO = 0b00100000;
     for (db_cnt = 0; db_cnt <= 5; db_cnt++)
     {
      GPIO = 0b00100001;
     __delay_ms(40);
     GPIO = 0b00100000;
     GPIO = 0b00100010;
     __delay_ms(40);
     GPIO = 0b00100000;
     GPIO = 0b00100100;
     __delay_ms(40);
     GPIO = 0b00100000;
     }
     __delay_ms(1000);
             for (db_cnt = 0; db_cnt <= 10; db_cnt++)
            {
               __delay_ms(10);
               if (GPIObits.GP5 == 1)
                db_cnt = 0;
            }
     GPIO = 0b00100001;
     __delay_ms(1000);
     GPIO = 0b00100000;
     GPIO = 0b00100010;
     __delay_ms(1000);
     GPIO = 0b00100000;
     GPIO = 0b00100100;
     __delay_ms(1000);
            for (db_cnt = 0; db_cnt <= 10; db_cnt++)
            {
               __delay_ms(1);
               if (GPIObits.GP5 == 1)
                db_cnt = 0;
            }

    }

}