用定时器产生PWM
#include "HT66F018.h"
#define u8 unsigned char
#define u16 unsigned int
#define BEEP _t1on //TMn 计数器 On/Off 控制位
void delay_ms(u16 ms)
{
while(ms--)
{
GCC_DELAY(2000);//编译器自带延时指定个周期,在主频8Mhz下,一个指令周期为0.5us
GCC_CLRWDT();
}
}
void pwminit()
{
_pac7=0;
_pa7=0;
_t1cp=1;//设置端口为定时器端口
_tm1c0=0x20;//clk=sys/16
_tm1c1=0xa8;//pwm模式 高电平有效 比较器P匹配清0
_tm1rpl=125;//f=sys/16/125=4k
_tm1rph=0;
_tm1al=62;//duty=62/125=49.6%
_tm1ah=0;
}
void main()
{
_wdtc=0xa8;//关闭看门狗
_pac3=0;//设置为输出
_cos=1;//设置pa3管脚为IO,而不是比较器输出
_acerl=0;//模拟端口关闭
pwminit();
while(1)
{
BEEP=1;
}
}
|