Ir ao conteúdo
  • Cadastre-se

traduzir codigo em c


jorgeletronico

Posts recomendados

Por favor alguem q entenda linguagem c poderia traduzir esse codigo pra linguagem humana pra eu poder ,reescrevelo em asm.Agradecido!

********************************************************************************

* Programa PicDimmer - Controlando la Potencia Eléctrica con PIC

* Rutinas originales: Scott Fink Microchip 1997

* Adaptación PIC16F84: Carlos Narvaez, 2002

* Compilado: CC5X Free V3.1

*

* RB0 = Pulsador Dim

* RB1 = Pulsador Brillo

* RA0 = Sensor de cruce por cero

* RA4 = Salida al optoacoplador

********************************************************************************/

#include <16f84.h>

#pragma bit Brtbut @ PORTB.0

#pragma bit Dimbut @ PORTB.1

#pragma bit LineInput @ PORTA.0

#pragma bit Salida @ PORTA.4

void Buttoncheck(void); //verificar los pulsadores

unsigned int PercentOn, Maxdim; //variables globales

unsigned int TestCheck, Outcount, TestCount;

unsigned int DelayCnt;

unsigned int LastBoth, FirstPass;

unsigned int Count;

unsigned int Maxbrt, NotInTest;

void main() {

Maxbrt = 0xf0; //brillo máximo

NotInTest = 3;

PercentOn = 0xd0; //periodo encendido

Maxdim = 0x70; //valor máximo Dim

TestCheck = 0; //

Outcount = 0; //contador salida del modo test

TestCount = 0; //contador modo test

DelayCnt = NotInTest; //contador retardo

LastBoth = 0; //bandera ambos pulsadores

//presionados la ultima vez

FirstPass = 1; //

Count = 0; //contador general

for(Count = 0; Count < 60; Count++) //estabilización tensión

{

while(LineInput == 1);

while(LineInput == 0);

clrwdt();

}

W = 0x5; //1:64 prescale, Pull-up activo

OPTION = W;

W = 0x11; //RA0, RA4 Entradas

TRISA = W;

PORTA = 0x10; //RA4 Latch high

W = 0x3; //RB0, RB1 Entradas

TRISB = W;

while(LineInput == 1) //Sincronización fase linea

clrwdt();

TMR0 = PercentOn;

while(TMR0 >= 3 && LineInput == 0) //retardo entrada punto apropiado

clrwdt();

Carlos A. Narváez V. 2002Regulación de la Potencia Eléctrica Aplicaciones Personales

while(1)

{

Count = 0;

while(Count < DelayCnt) //Verifica pulsadores

{ //cada DelayCnt cruce por cero

Count += 1;

if(LineInput == 1) //si línea AC esta en semiciclo

{ //positivo. incrementa Maxdin y

Maxdim +=5; //resincroniza con la línea

while(LineInput == 1);

while(LineInput == 0)

clrwdt();

}

else

{

while(LineInput == 0) //Espera el cruce por cero

clrwdt();

Maxdim = PercentOn - TMR0 + 2; //compensa valor de full Dim

}

if(FirstPass == 1) //Si es el primer pase Full Dim

{

FirstPass = 0;

PercentOn = Maxdim;

}

if(PercentOn < Maxdim)

PercentOn = Maxdim;

TMR0 = PercentOn;

while(TMR0 >= 3 && LineInput == 1) //Retarda encendido del triac

clrwdt();

PORTA = 0x00; //RA4 Lach Alto

W = 0x01; //RA0 entrada, RA4 Salida

TRISA = W; //Dispara triac

#asm

nop //Retardo disparo del triac

nop

nop

nop

nop

nop

nop

#endasm

W = 0x11; //RA4, entrada

TRISA = W; //Fin señal disparo triac

clrwdt();

if(LineInput == 0) //línea AC en semiciclo negativo?

{

Maxdim +=5; //si es asi incrementa Maxdim

while(LineInput == 0); //y resincroniza con la línea

while(LineInput == 1)

clrwdt();

}

else

{

while(LineInput == 1) //espera cruce por cero

clrwdt();

Maxdim = PercentOn - TMR0 + 2; //compensa full Dim

}

Carlos A. Narváez V. 2002Regulación de la Potencia Eléctrica Aplicaciones Personales

if(PercentOn < Maxdim) //corrija brillo

PercentOn = Maxdim;

TMR0 = PercentOn; //Retardo

while(TMR0 >= 3 && LineInput == 0)

clrwdt();

PORTA = 0x00;

W = 0x01;

TRISA = W; //dispare triac

#asm

nop

nop //retardo señal disparo

nop

nop

nop

nop

nop

#endasm

W = 0x11;

TRISA = W; //Fin señal disparo

clrwdt();

}

Buttoncheck(); //verifica pulsadores

}

}

/*************************************************************************

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...