maxking 发表于 2019-1-30 11:13:19

STC12LE608AD如何用PWM1输出LED半亮状态?

+5V通过限流电阻接LED到P3.5脚,我想通过这个脚输出PWM来达到LED的半亮效果。参照例程的设置和思路还是不行。请各位大虾指点下。谢谢!例程如下:

/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C56xx Series MCU PCA module output PWM wave Demo -------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966----------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* --- Web: www.GXWMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the*/
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include "reg51.h"
#include "intrins.h"

#define FOSC    11059200L

typedef unsigned char BYTE;
typedef unsigned int WORD;

/*Declare SFR associated with the PCA */
sfr CCON      =   0xD8;         //PCA control register
sbit CCF0       =   CCON^0;         //PCA module-0 interrupt flag
sbit CCF1       =   CCON^1;         //PCA module-1 interrupt flag
sbit CR         =   CCON^6;         //PCA timer run control bit
sbit CF         =   CCON^7;         //PCA timer overflow flag
sfr CMOD      =   0xD9;         //PCA mode register
sfr CL          =   0xE9;         //PCA base timer LOW
sfr CH          =   0xF9;         //PCA base timer HIGH
sfr CCAPM0      =   0xDA;         //PCA module-0 mode register
sfr CCAP0L      =   0xEA;         //PCA module-0 capture register LOW
sfr CCAP0H      =   0xFA;         //PCA module-0 capture register HIGH
sfr CCAPM1      =   0xDB;         //PCA module-1 mode register
sfr CCAP1L      =   0xEB;         //PCA module-1 capture register LOW
sfr CCAP1H      =   0xFB;         //PCA module-1 capture register HIGH
sfr CCAPM2      =   0xDC;         //PCA module-2 mode register
sfr CCAP2L      =   0xEC;         //PCA module-2 capture register LOW
sfr CCAP2H      =   0xFC;         //PCA module-2 capture register HIGH
sfr CCAPM3      =   0xDD;         //PCA module-3 mode register
sfr CCAP3L      =   0xED;         //PCA module-3 capture register LOW
sfr CCAP3H      =   0xFD;         //PCA module-3 capture register HIGH
sfr PCAPWM0   =   0xF2;
sfr PCAPWM1   =   0xF3;
sfr PCAPWM2   =   0xF4;
sfr PCAPWM3   =   0xF5;

void main()
{
    CCON = 0;                     //Initial PCA control register
                                    //PCA timer stop running
                                    //Clear CF flag
                                    //Clear all module interrupt flag
    CL = 0;                         //Reset PCA base timer
    CH = 0;
    CMOD = 0x02;                  //Set PCA timer clock source as Fosc/2
                                    //Disable PCA timer overflow interrupt
    CCAP0H = CCAP0L = 0x80;         //PWM0 port output 50% duty cycle square wave
    CCAPM0 = 0x42;                  //PCA module-0 work in 8-bit PWM mode and no PCA interrupt

    CCAP1H = CCAP1L = 0xff;         //PWM1 port output 0% duty cycle square wave
    PCAPWM1 = 0x03;
    CCAPM1 = 0x42;                  //PCA module-1 work in 8-bit PWM mode and no PCA interrupt

    CR = 1;                         //PCA timer start run

    while (1);
}
页: [1]
查看完整版本: STC12LE608AD如何用PWM1输出LED半亮状态?