金牌会员
- 积分
- 1209
- 威望
- 528
- 贡献
- 373
- 兑换币
- 291
- 注册时间
- 2013-7-24
- 在线时间
- 154 小时
|
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=1; //总线时钟=48/2=24MHz
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80; //选定锁相环时钟
}
void PWM3_Init()
{
PWME_PWME3=0x00; // Disable PWM 禁止
PWMPRCLK=0x33; // 0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置 //T/2^n n=0011
PWMSCLA=150; // SA=A/2/150=10k 时钟设置
PWMSCLB=15; // SB=B/2/15 =100k 时钟设置
PWMCLK_PCLK3=1; // PWM3-----SB 时钟源的选择
PWMPOL_PPOL3=1; // Duty=High Time 极性设置
PWMCAE_CAE3=1; // Left-aligned 对齐方式设置
PWMCTL=0x00; // no concatenation 控制寄存器设置
PWMPER3=100; // Frequency=SB/100=1K 周期寄存器设置
PWMDTY3=10; // Duty cycle = 50% 占空比寄存器设置
PWME_PWME3=1; // Enable PWM 使能
}
void delayms(byte b)
{
byte i;
int delayms;
for(i=0;i<b;i++)
for(delayms=0;delayms<1000;delayms++)
asm("nop");
}
void main ()
{ uchar a,b,c,d,e;
DDRP_DDRP2=0; DDRP_DDRP4=0;DDRP_DDRP0=0;DDRP_DDRP7=0;
PWM3_Init();
while(1)
{ a=PTIP_PTIP0;b=PTIP_PTIP2;c=PTIP_PTIP4;d=PTIP_PTIP7;
delayms(5); delayms(5); delayms(5);
e=8*d+c*4+b*2+a;
switch(e)
{
case 14: PWMDTY3=30;break;
case 13: PWMDTY3=40;break;
case 11: PWMDTY3=50;break;
case 10: PWMDTY3=53;break;
case 9: PWMDTY3=56;break;
case 3: PWMDTY3=59;break;
case 7: PWMDTY3=65;break;
case 15: PWMDTY3=20;break;
default:break;
}
}
} |
|