liuyu8087 发表于 2024-9-4 15:54:32

ok,非常感谢

liuyu8087 发表于 2024-9-4 15:55:27

ok,非常感谢

小飞侠 发表于 2024-9-5 09:03:05

wnagming 发表于 2024-9-4 13:28
1us定时,频率就是1M,你的主频怎么着也得50M,才能有实用价值,中断函数语句还不能太多 ...

这是实际问题

liuyu8087 发表于 2024-9-9 14:37:32

Lkck8210 发表于 2024-9-4 10:00
STC12C5616AD有PCA/PWM模块
可以用定时器的1us溢出来作时钟源
那就不用频繁进出中断

我把这个代码复制到项目里,但没有产生出PWM信号。
我现在需要一个频率是10KHz,占空比50%的PWM信号。
在5616AD的P3.5口输出。可否帮忙給个完整的代码?非常谢谢!

Lkck8210 发表于 2024-9-9 15:11:41

liuyu8087 发表于 2024-9-9 14:37
我把这个代码复制到项目里,但没有产生出PWM信号。我现在需要一个频率是10KHz,占空比50%的PWM信号。在56 ...

/*------------------------------------------------------------------*/
/* --- 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 <STC12C5630AD.H>

#include "intrins.h"

#define FOSC    11059200L

typedef unsigned char BYTE;
typedef unsigned int WORD;

void Timer0_Init(void)                //0.333微秒@12.000MHz
{
        AUXR |= 0x80;                        //定时器时钟1T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TMOD |= 0x02;                        //设置定时器模式
        TL0 = 0xFC;                                //设置定时初始值
        TH0 = 0xFC;                                //设置定时重载值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
}

void main()
{
        Timer0_Init();
    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 = 0x04;                  //Set PCA timer clock source as Timer0 overflow
                                    //Disable PCA timer overflow interrupt

    CCAP1H = CCAP1L = 0x7f;         //PWM1 port output 50% duty cycle square wave
                                                                        //修改这个值控制PWM输出
    PCA_PWM1 = 0x00;
    CCAPM1 = 0x42;                  //PCA module-1 work in 8-bit PWM mode and no PCA interrupt

    CR = 1;                         //PCA timer start run

    while (1);
}

神农鼎 发表于 2024-9-9 15:34:35

liuyu8087 发表于 2024-9-9 14:37
我把这个代码复制到项目里,但没有产生出PWM信号。
我现在需要一个频率是10KHz,占空比50%的PWM信号。
在5 ...
我是新人,占空比 50%的信号就是 方波 ?
也就是你要时钟输出 ?

管脚兼容的 12H1K16-36I-TSSOP20/28, SOP20/28, LQFP32
在 P3.5上可以T0CLKO, 用T0对主时钟分频输出时钟,无需中断干预
















页: 1 [2]
查看完整版本: 5616AD如何精确产生1us的计时