#include "reg936.h"
/********************************
利用CCU产生PWM
*********************************/
void PwmInit()
{
P2M1 &= ~0x40; //P2^6输出
P2M2 |= 0x40;
TPCR2H = 0; //无预分频
TPCR2L = 0;
CCCRA = 0x01; //非反相非对称pwm
TOR2H = 0xff; //2ms
TOR2L = 0xff;
OCRAH = 0; //1ms
OCRAL = 0;
TCR21 = 0x8f; //4分频 ccuclk = 32*(pclk/4) 锁存重装值 比较值
TCR20 = 0x82; //非对称pwm
}
void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<668;j++);
}
main()
{
unsigned char temp,flag;
P2M1 &= ~0x10;
P2M2 |= 0x10;
P2 &= ~0x10;
PwmInit();
while(1)
{
if(flag == 0)
{
temp++;
OCRAH = temp;
TCR21 |= 0x80; //比较值锁存
if(temp == 255)
flag = 1;
delay(50);
}
if(flag == 1)
{
temp--;
OCRAH = temp;
TCR21 |= 0x80; //比较值锁存
if(temp == 0)
{
flag = 0;
delay(2000);
TCR20 &= ~0x03;
delay(2000);
TCR20 |= 0x02;
}
delay(50) ;
}
}
}
评论0