打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C8051F单片机PWM输出程序
olf2010-6-21 22:421#
//PWM输出脚P0.3
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include // SFR declarations
#include 
#include 
//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void PORT_Init (void);
void PCA_Init (void);
void PCA_ISR (void);
void SYSCLK_Init (void);
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)

unsigned long b;
WDTCN = 0xde; // disable watchdog timer
WDTCN = 0xad;
SYSCLK_Init ();
PORT_Init (); /*初始化I/O口*/
PCA_Init (); /*PCA初始化成8位脉宽调置方式*/
EIE1= 0x08;
EA=1;
PCA0CPH0=0x20;
while (1) 
{ }
}
//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
void PORT_Init (void)

XBR0 = 0x11; // XBAR0: Initial Reset Value
XBR1 = 0x00; // XBAR1: Initial Reset Value
XBR2 = 0x40; // XBAR2: Initial Reset Value
// Port configuration (1 = Push Pull Output)
PRT0CF = 0x08; // Output configuration for P0 
PRT1CF = 0x00; // Output configuration for P1 
PRT2CF = 0x00; // Output configuration for P2 
PRT3CF = 0x00; // Output configuration for P3 
}
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
unsigned int i; // delaynms counter
OSCXCN = 0x67; // start external oscillator with
for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
OSCICN = 0x88; // select external oscillator as SYSCLK 
}
//-----------------------------------------------------------------------------
// PCA_Init
//-----------------------------------------------------------------------------
void PCA_Init (void)

// PCA0CPM0 = 0x42; // PCA Capture/Compare Register 0
PCA0CN = 0x40;
PCA0CPM1 = 0x42;
PCA0CPL0 = 0x00;
PCA0CPH0 = 0x00;
// PCA0MD &= 0x40;
PCA0MD = 0x01;
}
//-----------------------------------------------------------------------------
// PCA_ISR
//-----------------------------------------------------------------------------
void PCA_ISR (void) interrupt 9
{ unsigned char a ;
bit PWM_PAC;
CF = 0;
if(PWM_PAC==0) //占空比由0 >>0xfe
{
PCA0CPH1=a;
a++;
if(a==0xfe){PWM_PAC=1;}
}
else //占空比由0xfe >>0
{
PCA0CPH1=a;
a--;
if(a==0){PWM_PAC=0;}
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
STC12C5201AD单片机的PWM功能的应用总结
STC15系列CCP/PWM/PCA介绍
STC单片机之PCA -- 单片机爱好者
51单片机STC15W408AS驱动无感无刷电机BLDC
九九的STM32笔记(四)DMA、USART的演示 (www.ourdev.cn)
STM32 HAL库 +freeRTOS+Keil 移植
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服