本帖最后由 w986366 于 2015-9-19 14:49 编辑
#include <c8051f410.h>
#define SYSCLK 24500000
void OSCILLATOR_Init (void);
void PORT_Init (void);
void PCA0_Init (void);
void main (void)
{
// unsigned int delay_count; // Used to implement a delay
bit duty_direction = 0; // 0 = Decrease; 1 = Increase
PCA0MD = 0x00; // Disable watchdog timer
PORT_Init (); // Initialize crossbar and GPIO
OSCILLATOR_Init (); // Initialize oscillator
PCA0_Init (); // Initialize PCA0
while (1)
{
};
}
void OSCILLATOR_Init (void)
{
OSCICN = 0x84; // 设置内部振荡器使能
// SYSCLK为内部振荡器8分频。 3.0625MHZ
CLKSEL = 0x00; // 选择内部晶振作为系统时钟
}
void PORT_Init (void)
{
P0SKIP = 0x07;
XBR0 = 0x00;
XBR1 = 0x41; // Route CEX0 to P0.3,
// 使能交叉开关和弱上拉
P0MDOUT = 0x08; // 设置 CEX0 (P0.3)推挽输出
}
void PCA0_Init (void)
{
// 配置 PCA 时基; 禁用溢出中断
PCA0CN = 0x00; // 停止计数; 清除标记
PCA0MD = 0x08; // 用系统时钟作为时基
PCA0CPM0 = 0x42; // 模块0 = 8-bit PWM模式
// Configure initial PWM duty cycle = 50%
PCA0CPH0 = 256 - (256 * 0.5);
// Start PCA counter
CR = 1;
PCA0L = 0xaa;
PCA0H = 0x99;
}
现在遇到的问题是 用系统时钟不能准确分频8K ,想用计时器但是不会配置!求计时器的配置
PS:由于硬件PWM 精度不够 现在用定时器完成PWM 频率依然是8K 每个周期的时间:1/8K 125us 高电平为3.90625us 也就是 1/36
现在没定时器的时钟怎么设置没思路 能给点思路么?!
|