发表于:2006/8/18 20:26:00
#0楼
我最近在编一个程序,根据需要要在P3.5引脚输出20K的方波,使用的晶振是2M的。
我的程序如下:
#include <STC122052.H>
/*三相交流电机,4个键:走时、正快、反快、停钟,指示灯:走时时1秒1闪,加快时闪烁,停钟时亮2秒灭2秒*/
//含看门狗,看门狗定时器溢出时间393.216ms
//20K的方波已通过验证
//P3.5和P1.4设置为推挽输出(强上拉)
#define PiPeiZhi 25
void main()
{
//AUXR = 0xC0;//定时器0和1工作在1T模式
P3M0 =0x01;
P3M1 =0x20;
IP = 0x40;
IPH = 0x40;
CL = 0;
CH = 0;
CMOD = 0x02;
CCAP1L = PiPeiZhi;
CCAP1H = 0;
CCAPM1 = 0x4D;
EPCA_LVD =1;
//CCON = 0x40;
EA = 1;
CR = 1;
loop:
PCON=PCON | 0x01;
goto loop;
}
//------------------------
void FangBo()interrupt 6 //方波
{
CCF1=0;//清匹配中断标志CCF1
if (CCAP1L<=(255-PiPeiZhi)) CCAP1L =CCAP1L + PiPeiZhi;
else
{
CCAP1L=PiPeiZhi-(256-CCAP1L);
if (CCAP1H<255) CCAP1H++;
else CCAP1H=0;
}
}
但是我却不能得到比较稳定的20K的方波,这是为什么?
我的程序如下:
#include <STC122052.H>
/*三相交流电机,4个键:走时、正快、反快、停钟,指示灯:走时时1秒1闪,加快时闪烁,停钟时亮2秒灭2秒*/
//含看门狗,看门狗定时器溢出时间393.216ms
//20K的方波已通过验证
//P3.5和P1.4设置为推挽输出(强上拉)
#define PiPeiZhi 25
void main()
{
//AUXR = 0xC0;//定时器0和1工作在1T模式
P3M0 =0x01;
P3M1 =0x20;
IP = 0x40;
IPH = 0x40;
CL = 0;
CH = 0;
CMOD = 0x02;
CCAP1L = PiPeiZhi;
CCAP1H = 0;
CCAPM1 = 0x4D;
EPCA_LVD =1;
//CCON = 0x40;
EA = 1;
CR = 1;
loop:
PCON=PCON | 0x01;
goto loop;
}
//------------------------
void FangBo()interrupt 6 //方波
{
CCF1=0;//清匹配中断标志CCF1
if (CCAP1L<=(255-PiPeiZhi)) CCAP1L =CCAP1L + PiPeiZhi;
else
{
CCAP1L=PiPeiZhi-(256-CCAP1L);
if (CCAP1H<255) CCAP1H++;
else CCAP1H=0;
}
}
但是我却不能得到比较稳定的20K的方波,这是为什么?