新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C8051F單片機(jī)PWM輸出程序

        C8051F單片機(jī)PWM輸出程序

        作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏
        //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位脈寬調(diào)置方式*/
        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;}
        }
        }


        關(guān)鍵詞: C8051F單片機(jī)PW

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 长白| 水富县| 安丘市| 四平市| 达日县| 根河市| 黔江区| 南漳县| 景德镇市| 梁河县| 盐池县| 沛县| 无为县| 衢州市| 锦州市| 罗城| 布尔津县| 抚顺县| 西华县| 偃师市| 翼城县| 防城港市| 新乡市| 沈阳市| 绵竹市| 友谊县| 钟山县| 丹阳市| 阿拉尔市| 雷波县| 朝阳区| 桓台县| 南川市| 金山区| 盐亭县| 炉霍县| 班玛县| 江达县| 沧州市| 南皮县| 吉林省|