花生漫画

ADuC7026产生随时间变化的占空比变化的PWM信号

0
阅读(2380)
#include 
#include 

void IRQ_Handler() __irq;
void ProPPM();
void ADCpoweron(int time);
int PeriodCount=0;
int PPM=0;

int main(void){

	   T1LD=0x1A2;
	   ADCCON=0x7E3;
       ADCpoweron(2000);
	   REFCON=0x01;
	   ADCCP=0x02;

	   //GP1CON = 0x011;	 				// Setup tx & rx pins on P1.0 and P1.1
	   
	   
	   GP3DAT = 0x01010000; 
	   T1CON=0xC0;
	   IRQEN |= 0x08;	
	   GP4DAT = 0x04000000;
	   while (1)
	{
	}	
}

void IRQ_Handler() __irq {
        if ((IRQSTA & GP_TIMER_BIT) !=0)
        {
               

				PPM++;
	     		PeriodCount++;
                ProPPM();
                T1CLRI = 0;	
        }
         
  
        return;
}

void ProPPM()
{
	 int t;
	  
	//while(!ADCSTA){}
	  t=(int)(0.0244*(ADCDAT>>16)+100.0);

    if(PPM==t)
    { 
                GP3DAT=GP3DAT&0x0F0E0000;
        }
    

        if(PeriodCount > 2000)
        {
                GP3DAT = 0x01010000; 		
                PPM = 0;
               	PeriodCount=0;

        	
        }
}


void ADCpoweron(int time)
{
	ADCCON=0x7E3;	 					// power-on the ADC
	while (time >=0)	  				// wait for ADC to be fully powered on
    time--;
}