#include <16f84A.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=20000000)
#define periodo 125 //125 * 80microS =~10mS
#define duty 125 //parte del periodo que encenderan las lamparas
#define Tiempo_int 30 //50 * 125 * 80microS =~500mS entre cambio y cambio de intensidad
int c1=0; //rojo
int c2=0; //azul
int c3=0; //verde
int i2; //variable control de ciclo de retardo en intensidades
int i; //variable que controla el ciclo del periodo del pwm
int d = 0; //control porta
int z = 0; //control portb
/////////////////////////////////////////////////////////////////////////
void tiempo()
{
delay_ms(4000);
}
//led1_portb_0
void ciclo_PWM_10mS(){
for (i=1;i
{
if (i<=c1) //control intensidad rojo
{
bit_set(z,0); //led1_portb_0
bit_set(z,3); //led2_portb_3
bit_set(z,6); //led3_portb_6
bit_set(d,0); //led4_porta_0
}
else
{
bit_clear(z,0); //led1_portb_0
bit_clear(z,3); //led2_portb_3
bit_clear(z,6); //led3_portb_6
bit_clear(d,0); //led4_porta_0
}
if (i<=c2) //control intensidad azul
{
bit_set(z,1); //led1_portb_1
bit_set(z,4); //led2_portb_4
bit_set(z,7); //led3_portb_7
bit_set(d,2); //led4_porta_2
}
else
{
bit_clear(z,1); //led1_portb_1
bit_clear(z,4); //led2_portb_4
bit_clear(z,7); //led3_portb_7
bit_clear(d,2); //led4_porta_2
}
if (i<=c3)
{
bit_set(z,2); //led1_portb_2
bit_set(z,5); //led2_portb_5
bit_set(d,1); //led3_porta_1
bit_set(d,3); //led4_porta_3
}
else
{
bit_clear(z,2); //led1_portb_2
bit_clear(z,5); //led2_portb_5
bit_clear(d,1); //led3_porta_1
bit_clear(d,3); //led4_porta_3
}
output_b(z);
output_a(d);
}
delay_us(40);
}
/////////////////////////////////////////////////////////////////////////////////
void tonos_mas(){
for (c1=1,c2=1,c3=0; c1
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_2_mas(){
for (c3=1,c1=1,c2=0; c3
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_3_mas(){
for (c3=1,c1=0,c2=1; c3
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_menos(){
for (c1=duty,c2=duty,c3=0; c1>1 ; c1--,c2--) //;control de tono magenta
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_2_menos(){
for (c1=duty,c2=0,c3=duty; c1>1 ; c1--,c3--) //;control de tono amarillo
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void tonos_3_menos(){
for (c3=duty,c1=0,c2=duty; c3>1; c3--,c2--) //;control de tono cyan
{
for (i2=1; i2
ciclo_PWM_10mS() ;
}
}
void negro() //color negro
{
z=0;
d=0;
output_b(z);
output_a(d);
tiempo();
}
void blanco() //color blanco
{
z=d=255;
output_b(z);
output_a(d);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void rojo() //color rojo
{
output_b(0x49);
output_a(0x01);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void verde() //color verde
{
output_b(0x24);
output_a(0x0a);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void azul() //color azul
{
output_b(0x92);
output_a(0x04); tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void amarillo() //color amarillo
{
output_b(0x6d);
output_a(0x0b);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void cyan() //color cyan
{
output_b(0xb6);
output_a(0x0e);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
void magenta() //color magenta
{
output_b(0xdb);
output_a(0x05);
tiempo();
z=d=0;
output_b(z);
output_a(d);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
int main ()
{ //salida al puerto b=0
while (true)
{
// negro(); //(0, 0, 0) es negro
blanco(); //(255, 255, 255) es blanco
rojo(); //(255, 0, 0) es rojo
tonos_mas();
tonos_menos();
verde(); //(0, 255, 0) es verde
tonos_2_mas();
tonos_2_menos();
azul();
tonos_3_mas();
tonos_3_menos();
amarillo(); //(255, 255, 0) es amarillo
cyan(); //(0, 255, 255) es cyan
magenta(); //(255, 0, 255) es magenta
z=d=0;
output_b(z);
output_a(d);
}
return(0);
}
No hay comentarios.:
Publicar un comentario