/* 文件名:TEST_61F02x_PWM345.C
* 功能: FT61F02x-增强型PWM功能演示
* IC: FT61F023 SOP16
* 晶振: 16M/2T
* 说明: 此程序用来演示PWM345功能
* 演示程序中在PWM345脚分别输出2KHz,1KHz,500Hz
* 占空比的为50%的信号
* BY SOILFISH FOR FREEDOM 20230911
FT61F023 SOP16
---------------
---------------
*/
#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();
}
}