辉芒PWM输出代码例程---1.5HZ

  /* 文件名:TEST_61F02x_PWM345.C
* 功能:   FT61F02x-增强型PWM功能演示
* IC:     FT61F023 SOP16
* 晶振:   16M/2T                    
* 说明:   此程序用来演示PWM345功能
*		   演示程序中在PWM345脚分别输出2KHz,1KHz,500Hz
*		   占空比的为50%的信号
*          BY SOILFISH FOR FREEDOM 20230911
  •           FT61F023  SOP16 
    
  •           ---------------
    
  • VDD---------|1(VDD) (VSS)16|--------GND
  • NC----------|2(PA7) (PA0)15|---------NC
  • NC----------|3(PA6) (PA1)14|---------NC
  • NC----------|4(PA5) (PA2)13|---------NC
  • PWM4--------|5(PC3) (PA3)12|---------NC
  • PWM5--------|6(PC2) (PC0)11|---------NC
  • NC----------|7(PA4) (PC1)10|---------NC
  • NC----------|8(PC5) (PC4)09|-------PWM3
  •   	    ---------------
    

*/

#include "SYSCFG.h"
//********************宏定义***************************
//PWM引脚输入输出控制
#define	PWM3Dir	TRISC4

#define    SW_ON    (PA1)

volatile bit SW_STATUS;

/*-------------------------------------------------

  * 函数名:interrupt
* 功能:  中断处理
* 输入:  无
* 输出:  无
--------------------------------------------------*/
void interrupt ISR(void)	
{
NOP();
}

void DelayUs(unsigned char Time)
{
unsigned char a;
for(a=0;a

}

/*-------------------------------------------------
* 函数名:POWER_INITIAL
* 功能:  上电系统初始化
* 输入:  无
* 输出:  无
 --------------------------------------------------*/
void POWER_INITIAL (void) 
{
//111 16M 
OSCCON = 0B01000001;	//IRCF=111=16MHz/2=8MHz,0.125us
INTCON = 0;  			//暂禁止所有中断
PORTA = 0B00000000; 
TRISA = 0B00000010; 	//PA输入输出 1-输入 0-输出
PORTC = 0B00000000; 
TRISC = 0B00000000;		//PC输入输出 1-输入 0-输出

WPUA = 0B00000010;    	//禁止所有PA口上拉
WPUC = 0B00000000;    	//禁止所有PC口上拉
OPTION = 0B00001000;	//Bit3=1,WDT MODE,PS=000=WDT RATE 1:1
MSCKCON = 0B00000000;

//Bit6->0,禁止PA4,PC5稳压输出
//Bit5->0,TIMER2时钟为Fosc
//Bit4->0,禁止LVR       
CMCON0 = 0B00000111; 	//关闭比较器,CxIN为数字IO口
}

/*-------------------------------------------------
* 函数名:PWM_INITIAL
* 功能:  PWM3,4,5初始化
* 设置PWM3周期=2^TMRXPS*2^PXPER*[(T3CKDIV+1)/PWM时钟源]
* 			=2^0*2^8*[(30+1)/16000000]=496us
* 	PWM4周期=2^TMRXPS*2^PXPER*[(T4CKDIV+1)/PWM时钟源]
  • 		=2^0*2^8*[(62+1)/16000000]=1.008ms
                 
                                      * 	PWM5周期=2^TMRXPS*2^PXPER*[(T5CKDIV+1)/PWM时钟源]
    
  •   	=2^0*2^8*[(124+1)/16000000]=2ms
    
      
      * 设置PWM3周期=2^TMRXPS*2^PXPER*[(T3CKDIV+1)/PWM时钟源]
    
  •   	=2^16*2^4*[(9+1)/16000000]=0.6S
    

--------------------------------------------------*/

 void PWM_INITIAL (void) 
{
PWM3Dir = 1;	//PWM3输出PIN暂为输入模式

//-------------PWM3---------------  
PWM3CR0 = 0B00110000;    //011 8bit OK    
PWM3CR1 = 0B10101000;  //64 分频最低 3.8HZ  OK  
TMR3H   = 0;

//1.5Hz
T3CKDIV = 80;	//赋值 
PR3L    = 200;  //80%

 }

/*-------------------------------------------------
* 函数名:main
 * 功能:  主函数
* 输入:  无
* 输出:  无
--------------------------------------------------*/
void main(void)
{	
POWER_INITIAL(); 
PWM_INITIAL();

TMR3ON=1;
PWM3Dir = 0;	//PWM3 PIN设为输出模式允许PWM输出


SW_STATUS = 0;
while(1)
{	       
   NOP();
}
}

你可能感兴趣的:(经验分享)