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

📄 c8051f33xpwm.c

📁 c8051f330 C程序源代码
💻 C
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:PWM.c
//
// 编写人:宁太阳 
//
// 编写时间:2004/12/28
//
// 目标器件: C8051F33x
//
// 编译工具: Silicon Laboratories IDE

//------------------------------------------------------------------------------------

//程序功能
//-----------------------------------------------------------------------------
//P0.0为系统时钟输出,P0.1为PWM输出(8位),可以用示波器观察输出波形.
//-----------------------------------------------------------------------------
//头文件包含
//-----------------------------------------------------------------------------
#include <c8051f330.h>                   

//-----------------------------------------------------------------------------
//  定义定时器2的16位特殊功能寄存器
//-----------------------------------------------------------------------------

sfr16 TMR2RL   = 0xca;                    
sfr16 TMR2     = 0xcc;            

//-----------------------------------------------------------------------------
// 常量定义
//-----------------------------------------------------------------------------

#define SYSCLK       24500000 / 8         //  系统工作频率 
//-----------------------------------------------------------------------------
// 位定义
//-----------------------------------------------------------------------------
sbit LED = P1^3;                          // LED所接的引脚                 
//-----------------------------------------------------------------------------
// 定义函数
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void PCA_Init(void);
void PCA0_ISR(void);
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void) {

   PCA0MD &= ~0x40;                 //禁止看门狗定时器                    
                                  

   SYSCLK_Init ();                  //系统时钟初始化                  
                                       
   PORT_Init ();                    //交叉开关和通用I/O口初始化    
   PCA_Init();                      //PCA初始化                                   

   EA = 1;	                        // 总中断使能						   

while (1)
 {                          
 }

}

//-----------------------------------------------------------------------------
// 系统时钟初始化
//-----------------------------------------------------------------------------

void SYSCLK_Init (void)
{

   OSCICN = 0x80;                  // 系统时钟初始化为片内的 24.5MHz / 8                    
                                        
   RSTSRC = 0x04;                  // 使能时钟丢失检测器                    
}

//-----------------------------------------------------------------------------
// I/O口及交叉开关初始化
//-----------------------------------------------------------------------------

void PORT_Init (void)
{

   XBR0     = 0x08;              //系统时钟输出             
   XBR1     = 0x43;              //交叉开关使能,PCA的CEX0、CEX1、CEX2分配到引脚上     
   P0MDOUT = 0x03;               //P0.0、P0.1设为推挽方式                  
}
//-------------------------------------------------------------------------------
// PCA 初始化
//---------------------------------------------------------------------------   
void PCA_Init(void)
{
   PCA0CN  = 0x40;               //使能PCA计数/定时器 
   PCA0MD  = 0x08;               //选择PCA的时钟源,0x00、0x02、0x08分别为系统时钟的12、4、及      
   PCA0CPM0 =0x63;//8f;          //不分频 
   PCA0L    =0x00;               //PCA计数/定时寄存器低字节
   PCA0H   = 0x00;               //PCA计数/定时寄存器高字节
   PCA0CPL0 = 0x00;            //PCA捕捉比较寄存器低字节         
   PCA0CPH0 = 0x00;              //PCA捕捉比较寄存器高字节  
   EIE1 |= 0x10;                 //	使能PCA中断
}
//----------------------------------------------------------------
//PCA 中断处理
//----------------------------------------------------------------
 void PCA0_ISR(void) interrupt  11          
   {
    CCF0  =0;            //PCA模块0捕捉/比较标志位清0      
	PCA0CPH0 = 0x80;    //设置输出脉冲占空比。
	} 

⌨️ 快捷键说明

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