0 Membros e 2 Visitantes estão vendo este tópico.
#define ON 1#define OFF 0sbit TMR1_FLAG at TMR1IF_bit;sbit TMR1_STAT at TMR1ON_bit;sbit AZUL at GPIO.B0;sbit VERDE at GPIO.B1;sbit ROJO at GPIO.B2;unsigned short acm_pwm = 0x00;unsigned short i;// AZUL VERDE ROJOshort PWM1 = 0x00, PWM2 = 0x00, PWM3 = 0x00;void Inicializar_Registros(){TMR1L = 0xCD;TMR1H = 0xFF;CMCON = 0x07;WPU = 0x00;IOC = 0x00;INTCON = 0xC0;PIE1.B0 = 1;T1CON = 0x01;TRISIO = 0x00;GPIO = 0x00;}void Rutina_Timer(){acm_pwm++;if(acm_pwm > 99) acm_pwm = 0x00;if(PWM1 > acm_pwm) AZUL = ON;else AZUL = OFF;if(PWM2 > acm_pwm) VERDE = ON;else VERDE = OFF;if(PWM3 > acm_pwm) ROJO = ON;else ROJO = OFF;}void Rutina_Cambio_Color(){while(ON){ for(PWM1=99, PWM2=0, PWM3=0,i=0; i < 11; i++){ PWM2+=9; PWM3+=9; Delay_ms(65); } for(PWM1=99, PWM2=99, PWM3=99,i=0; i < 25; i++){ PWM2-=3; PWM3-=3; Delay_ms(85); } for(PWM1=99, PWM2=0, PWM3=0, i=0; i < 100; i++){ PWM1-=1; PWM2+=1; Delay_ms(70); } for(PWM1=0, PWM2=99, PWM3=0,i=0; i < 100; i++){ PWM2-=1; PWM3+=1; Delay_ms(70); } for(PWM1=0, PWM2=0, PWM3=99,i=0; i < 100; i++){ PWM3-=1; PWM1+=1; Delay_ms(70); } }}void interrupt(){Rutina_Timer();TMR1_STAT = OFF;TMR1L = 0xCD;TMR1H = 0xFF;TMR1_STAT = ON ;TMR1_FLAG = OFF;}void main(){Inicializar_Registros();Rutina_Cambio_Color();}