pic16f1503单片机的定时器1,自由定时,内部16MHz晶振。程序主要是进入中断翻转IO,发现最高的翻转频率也就在90KHz左右。
贴上一段程序:
void T1Init()
{
OSCCONbits.IRCF=0xf; //16MHz系统时钟
TMR1CS1=0;
TMR1CS0=1; //timer1时钟源为系统时钟(Fosc=16MHz)
T1CKPS1=0;
T1CKPS0=0; //timer1预分频1:1
T1CONbits.nT1SYNC=1;
TMR1GE=0;
TMR1H=DTmr1H;
TMR1L=DTmr1L; //初值
}
void OpenT1()
{
GIE=1;
PEIE=1;
TMR1IE=1; //溢出使能位,TMR1IF为标志位
TMR1ON=1;
}
中断服务程序如下:
void interrupt ISR(void)
{
if(TMR1IF)
{
TMR1IF=0;
TMR1H=DTmr1H;
TMR1L=DTmr1L;
RA0=!RA0;
}
}
不知道是我程序的问题还是单片机就这速度,怎么能提高IO翻转速度呢?
另外,我试了下TIMER2控制的PWM输出,因为TIMER2为指令时钟4MHz,所以速度也不怎么高,16MHz晶振,我想达到2-3MHz的翻转速度不知道可行么。
|