//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)
{
unsignedadclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=84997066f841cb24&k=long&k0=long&kdi0=0&luki=2&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=24cb41f866709984&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F2173%2Ehtml&urlid=0″ id=”1_nwl” mpid=”1″ target=”_blank”>longb;
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 ;
bitPWM_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;}
}
}
C8051F单片机PWM输出程序
PWM输出脚P03—————————————————————————–Includes——
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/318465.html