×
单片机 > 单片机程序设计 > 详情

c8051f005单片机PWM测试程序

发布时间:2020-06-19 发布时间:
|

c8051f005单片机PWM测试程序

//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 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;} 
        } 
}


关键字:c8051f005  单片机  PWM  测试程序

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式