📄 pwm8_1.c
字号:
//-----------------------------------------------------------------------------
// PWM8_1.c
//-----------------------------------------------------------------------------
/*
两路 (p0.0,p0.1) 8位的调制脉宽
*/
#include <c8051f020.h> // SFR declarations
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
#define PWM 0x88 // Number of PCA clocks for waveform
#define PWM1 0x20
sbit Led=P1^6;
// duty cycle = (256 - PWM) / 256
// Note: this is an 8-bit value
//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void main (void);
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{
int i=30000,j=3000,k=3000,l=3000;
WDTCN = 0xde; // Disable watchdog timer
WDTCN = 0xad;
OSCICN = 0x07; // set SYSCLK to 16MHz, internal osc.
XBR0 = 0x08; //CEX0,CEX1连接到对应的端口
//XBR0 = 0x10; //CEX0,CEX1连接到对应的端口
XBR2 = 0x40; // 弱上拉,交叉开关使能
// P0MDOUT |= 0x04; // 允许p0.0输出
P0MDOUT |= 0x0f; // 允许p0.0输出
P1MDOUT |= 0x40; // 允许P1.6(LED)
// configure the PCA
//** P02=1;
PCA0MD = 0x02; // disable CF interrupt
// PCA time base = SYSCLK / 4
//配置CEX0
PCA0CPL0 = PWM; // initialize PCA PWM value
PCA0CPH0 = PWM;
PCA0CPM0 = 0x42; // CCM0 in 8-bit PWM mode
PCA0CN = 0x40; // enable PCA counter
//配置CEX1
PCA0CPL1 = PWM1; // initialize PCA PWM value
PCA0CPH1 = PWM1;
PCA0CPM1 = 0x42; // CCM0 in 8-bit PWM mode
PCA0CN = 0x40; // enable PCA counter
while (1)
{
// PCON |= 0x01; // set IDLE mode
while(i--) ;
while(j--) ;
while(k--) ;
while(l--) ;
Led=~Led;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -