#include
#define SYSCLK 2000000
#define Motol_Run PCA0CN=0x40 // :允許PCA0 計數器/定時器
#define Motol_stop PCA0CN=0x00
//sbit Motol_dir=P3^0;
void PORT_Init(void)
{
//P0MDOUT&=0xfe;
P0MDOUT=0x00; // 端口引腳的輸出方式為漏極開路
XBR0=0x08; // CEX0 連到端口引腳。
XBR2|=0x40;
}
void SYSCLK_Init(void)
{
// unsigned char i;
WDTCN=0xde;
WDTCN=0xad; //關看門狗,默認使能默認內部時鐘2M
/* OSCXCN="0x67"; //
for(i=0;i<255;i++);
while(!(OSCXCN&0x80));
OSCICN=0x88; //22.1184Mhz */
}
void PCA_Init(unsigned char fre)
{
PCA0CN=0x00;
PCA0MD=0x82; //系統(tǒng)時鐘的4 分頻,空閑方式時,PCA0 停止工作
PCA0CPM0&=0xc7; //16 位PWM 11000111
PCA0CPM0|=0x4e; //頻率輸出方式01001110 x100111x
PCA0CPL0=fre;
PCA0CPH0=fre;
PCA0L=0x00;
//PCA0CN|=0x40;
}
main()
{
unsigned int i="0";
SYSCLK_Init();
PORT_Init();
PCA_Init(SYSCLK/4/2/2000);
Motol_Run;
while(1)
{
// Motol_dir=0;
if(CCF0==1)
{i++;
CCF0=0;
}
if(i==200)
Motol_stop;
}
}