haxan
New Member
Hi, i have written a code for PIC18 using C18 compiler. I want to know how to migrate it for PIC12F629 and which compiler to use. Can anyone please guide. Its for a Fan dimming circuit i am making.
Code:
#include <p18cxxx.h>
#include <delays.h>
#pragma config WDT = OFF
#define ZERO_CROSSING PORTAbits.RA0
#define OUTPUT PORTBbits.RB0
void detect_zero(void);
void fireTriac(void);
void Pulse(unsigned int); // Sends pulse after int value
void delay_ms(unsigned int);
unsigned int dimmer = 0;
unsigned int ZC = 0;
unsigned int stat=0;
void main (void)
{
ADCON1 = 0b00001111; // Set Port A for digital i/o
TRISA = 0b00011111; // Set ZeroCrossing input;
TRISB = 0x00;
PORTA = 0;
PORTB = 0;
while (1)
{
dimmer = PORTA & 0b00011110;
dimmer = dimmer >> 1;
detect_zero();
}
}
void detect_zero(void)
{
if(ZERO_CROSSING == 1 && stat == 0)
{
stat = 1;
fireTriac();
}
if (ZERO_CROSSING == 0 && stat == 1)
{
stat = 0;
fireTriac();
}
}
void fireTriac(void)
{
OUTPUT = 0;
ZC++;
if(dimmer == 0){ZC = 0;}
if(dimmer == 1){if(ZC == 5){Pulse(1);}}
if(dimmer == 2){if(ZC == 2){Pulse(1);}}
if(dimmer == 3){Pulse(175);}
if(dimmer == 4){Pulse(150);}
if(dimmer == 5){Pulse(125);}
if(dimmer == 6){Pulse(100);}
if(dimmer == 7){Pulse(75);}
if(dimmer == 8){Pulse(50);}
if(dimmer == 9){Pulse(25);}
if(dimmer == 10){Pulse(1);}
}
void Pulse(unsigned int del)
{
delay_ms(del);
OUTPUT = 1;
ZC = 0;
delay_ms(1);
OUTPUT = 0;
}
void delay_ms(unsigned int ms)
{
int i = 0;
for(;i < ms;i++)
{
Delay10TCYx(2);
}
}