⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jj.txt

📁 HID汽车大灯安定器,应用现在的安定器上,有多种保护功能
💻 TXT
📖 第 1 页 / 共 2 页
字号:
};
 
//=============================================================
void   CLEARAM (void)
{
 //nop();

 };  
void timer1_set (void)
{ 
   T1CON=0; 
   TMR1=0;
   PR1=0X100;      //4mS/次.
   T1CONbits.TSIDL=0;
   T1CONbits.TGATE=0;
   T1CONbits.TCKPS1=0;
   T1CONbits.TCKPS0=0;
   T1CONbits.TSYNC=0;
   T1CONbits.TCS=0;
   T1CONbits.TON=1;
   IPC0bits.T1IP=1;    //T1优先.
   IEC0bits.T1IE=1;
};
void INT_SET (void)
{
  IPC0=IPC1=IPC2=IPC3=IPC4=IPC5=IPC7=IPC8=0; 
  IEC0=IEC1=IEC2=0;
//--------------------
//中断嵌套.
  INTCON1=0;
  INTCON2=0;   
//--------------------
//中断优先权处理.
  IPC8bits.CMP4IP=0;
  IPC7bits.CMP1IP=0;
  IPC7bits.CMP2IP=0;
  IPC7bits.CMP3IP=0;
  IPC4bits.PWM1IP=0;
  IPC5bits.PWM2IP=0;
  IPC5bits.PWM3IP=0;
  IPC5bits.PWM4IP=0;
  IPC4bits.INT1IP=0;
  IPC4bits.INT2IP=0;
  IPC4bits.PSEMIP=0;
  IPC4bits.PWM1IP=0;
  IPC3bits.NVMIP=0;
  IPC3bits.SI2CIP=0;
  IPC3bits.MI2CIP=0;
  IPC2bits.SPI1IP=0;
  IPC2bits.U1RXIP=0;
  IPC2bits.U1TXIP=0;
  IPC2bits.ADIP=0;
  IPC1bits.T3IP=0;
  IPC1bits.T2IP=0;
  IPC0bits.T1IP=1;    //T1优先.
  IPC0bits.OC1IP=0;
  IPC0bits.IC1IP=0;
  IPC0bits.INT0IP=0;
//--------------------
     IFS0=IFS1=IFS2=0;
//--------------------
//中断位开放.
  IEC0bits.T1IE=1;
};
//==========================================================================================================
void ADC_Init(void)
{


   ADCON=ADCPC0=0;
   ADSTAT=0X00;     //AD对取样结果
   ADBASE=0X1;     //AD基本配置.
  // ADPCFG=0X00;     //AD端口配置. 0为AD脚.1为IO脚.
  // ADCPC0=0XE2E2;   //AD对配置.  AN3-AN2,AN1-AN0
  // ADCPC1=0XE2E2;   //AD对配置.  AN7-AN6,AN5-AN4
  // ADCPC2=0XE2E2;   //AD对配置.  AN11-AN10,AN9-AN8
 
  // ADCONbits.ADSIDL=0;
    ADCONbits.GSWTRG=0;
  // ADCONbits.FORM=0;
  // ADCONbits.EIE=1;  
  // ADCONbits.ORDER=1;
  // ADCONbits.SEQSAMP=1;
  // ADCONbits.ADCS=0;
   //ADCONbits.ADON=1; 

	ADCONbits.ADSIDL    = 0;        /* Operate in Idle Mode */
	ADCONbits.FORM      = 0;        /* Output in Integer Format	*/
	ADCONbits.EIE       = 1;        /* No Early Interrupt */
	ADCONbits.ORDER     = 0;        /* Even channel first */
	ADCONbits.SEQSAMP   = 1;        /* Sequential Sampling Enabled */
	ADCONbits.ADCS      = 5;        /* Clock Divider is set up for Fadc/14 */
  	ADPCFG = 0xFFFC;                /* AN0 and AN1 are analog inputs */
	ADSTAT = 0;                     /* Clear the ADSTAT register */
	ADCPC0bits.TRGSRC0 	= 0x1;      /* Trigger conversion on TMR1 Prd Match */
   ADCPC0bits.PEND0    =1;
   ADCPC0bits.SWTRG0   =1; 
   ADCPC0bits.IRQEN0	= 1;  
      /* Enable the interrupt */   
	/* Set up the Interrupts */  
	IFS0bits.ADIF 	= 0;            /* Clear AD Interrupt Flag */	
 	IPC2bits.ADIP	= 4;            /* Set ADC Interrupt Priority */
	IEC0bits.ADIE	= 1;            /* Enable the ADC Interrupt */ 
	/* Enable ADC and Timer */
	ADCONbits.ADON 	= 1;            /* Start the ADC module */ 






     PTPER = 2048;                   /* PWM Period = 2.199 usec @ 29.1 MIPS */
	                                /* Refer to PWM section for more details */	

	/* Initialize PWM Generator 1 */
	
	IOCON1bits.PENH		= 1;        /* PWM Module controls High output */
	IOCON1bits.PENL		= 1;        /* PWM Module controls Low output */
	IOCON1bits.POLH		= 0;        /* High Output Polarity is active High */
	IOCON1bits.POLL		= 0;        /* Low Output Polarity is active High */
	IOCON1bits.PMOD		= 1;        /* Independant output mode */
	IOCON1bits.OVRENH 	= 0;        /* High Output Override disabled */
	IOCON1bits.OVRENL 	= 0;        /* Low Output Override disabled */
	
	TRGCON1bits.TRGDIV = 0;         /* Trigger on evry event */
	TRGCON1bits.TRGSTRT	= 0;        /* Start the counting at the start */
	
	TRIG1 = 200;                    /* Trigger event at  0.214 usec from
	                                   start of the PWM cycle */
										
	PWMCON1bits.FLTSTAT = 0;        /* Clear Fault Interrupt flag */
	PWMCON1bits.CLSTAT = 0;         /* Clear Current Limit Interrupt flag */
	PWMCON1bits.TRGSTAT = 0;        /* Clear PWM Trigger Interrupt flag */
	PWMCON1bits.FLTIEN = 0;         /* Disable Fault Interrupt */
	PWMCON1bits.CLIEN = 0;          /* Disable Current Limit Interrupt */
	PWMCON1bits.TRGIEN = 0;         /* Disable Trigger Interrupt */
	PWMCON1bits.ITB	= 0;            /* Time base is read from PTMR */
	PWMCON1bits.MDCS = 0;           /* Duty cycle is read from PDC */
	PWMCON1bits.DTC	= 2;            /* No Dead Time */
	PWMCON1bits.XPRES = 0;          /* No extenal reset for PTMR */
	PWMCON1bits.IUE = 0;            /* Immediate update to PDC */
										
	PDC1 = 128;                     /* Start with a Ton value of 0.137usec */
	PHASE1 = 0;                     /* No staggering */
		
	/* Intialize the ADC */
	
	ADCONbits.ADSIDL = 0;           /* Operate in Idle Mode */
	ADCONbits.FORM = 0;             /* Output in Integer Format */
	ADCONbits.EIE = 1;              /* Enable Early Interrupt */
	ADCONbits.ORDER = 0;            /* Even channel first */
	ADCONbits.SEQSAMP = 1;          /* Sequential Sampling Enabled */
	ADCONbits.ADCS = 5;             /* Clock Divider is set up for Fadc/14 */
	
	ADPCFG = 0xFFFC;                /* AN0 and AN1 are analog inputs */
	ADSTAT = 0;                     /* Clear the ADSTAT register */
	ADCPC0bits.TRGSRC0 = 0x4;       /* Trigger conversion on PWM#1 Trigger */
	ADCPC0bits.IRQEN0 = 1;          /* Enable the interrupt */
	
	ADCONbits.ADON = 1;             /* Start the ADC module */	
				
	/* Set up the Interrupts */
	
	IFS0bits.ADIF = 0;              /* Clear AD Interrupt Flag */	
	IPC2bits.ADIP = 4;              /* Set ADC Interrupt Priority */
	IEC0bits.ADIE = 1;              /* Enable the ADC Interrupt */
	
	PTCON = 0x8000;                 /* Enable PWM Module */


	
}
//==========================================================================================================
void PWM_Init(void)
{   

    /*~~~~~~~~~~~~~~~~~~~~~~~ PWM1 Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/    
    /* PWM1 I/O Control Register register */
    IOCON1bits.PENH      = 0;      /* PWM1H is controlled by GPIO module */ 
    IOCON1bits.PENL      = 1;      /* PWM1L is controlled by PWM module */
    IOCON1bits.PMOD      = 1;      /* Select Independent Output PWM mode */

    /* Load PDC1 register with initial Duty Cycle value */
    PDC1 = 640;

    /* Load PDTR1 and ALTDTR2 register with preset dead time value */
    DTR1    = 64;                  /* Deadtime setting */
    ALTDTR1 = 64;                  /* Deadtime setting */

    /* PHASE1 register */
    PHASE1 = 0;                    /* No phase shift */

 
    /*~~~~~~~~~~~~~~~~~~~~~~~ PWM2 Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    /* PWM2 I/O Control Register register */
    IOCON2bits.PENH      = 0;      /* PWM2H is controlled by GPIO module */
    IOCON2bits.PENL      = 1;      /* PWM2L is controlled by PWM module */
    IOCON2bits.PMOD      = 1;      /* Select Independent Output PWM mode */

    /* Load PDC2 register with initial Duty Cycle value */
    PDC2 = 640;

    
    /* Load PDTR2 and ALTDTR2 register with preset dead time value */
    DTR2    = 64;                  /* Deadtime setting */
    ALTDTR2 = 64;                  /* Deadtime setting */

    /* PHASE2 register */
    PHASE2 = 240;                  /* approximately 250 nsec phase shift */

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
    /* Configure PTPER register to produce 400kHz PWM frequency */
    PTPER = 2380;                 /* PWM Period @30 MIPS, 2.5usec == 400kHz */

    /* PWM Time Base Control Register */
    PTCONbits.PTEN       = 1;    //_PTEN=1; PWM使能. 
//-------------------------------------------
}
//==========================================================================================================



int main(void)
{
//======================================
  CLEARAM();     //清内存
  timer1_set();  //时间中断设定
  //INT_SET();     //开对应中断.  
  ADC_Init();    //开AD中断.
 // PWM_Init();  
//======================================
 
 TRISB=0;


  PORTB=0x0000;
  TRISB=0x0000;
  temp3=0; 

while(1) 	 
	{
    clrwdt();  
  // temp3++;
  // PORTB=~PORTB;
	
	 };

};



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -