原创 STC12C5A60S2的16位PCA软定时器(2)

2012-8-18 07:17 4718 8 8 分类: 软件与OS

        终于把控制系统的显示和按键部分弄得差不多了。至此,STC12C5A60S2的4个定时器被我用光光。Timer0和Timer1用于步进电机脉冲信号的生成,PCA的两个定时器分别用于按键定时扫描和数码管定时显示。昨晚花了不少功夫研究PCA的2个软定时器,发现中断号只有一个:interrupt 7。但是在中断程序里面设置了一个判断语句if (CCF0 ==1)  {模块0中断服务程序}  if (CCF1 == 1) {模块1中断服务程序},CCF0和CCF1是中断标志位。

        下面主攻核心问题:频率调制。这是是上面担心的问题,我心里也比较担心。胆小!我还是打算通过改变定时器重装定时值的方法来频率调制。目前遇到的问题是调制周期非常短,不知道怎么加长。要是脉宽调制就好了,这款单片机上面只需要修改某些寄存器的值。或许是我还没找到正确的方法,多读几遍Datasheet,相信会找到有效的方法。

        回去睡觉!

void PCA0_isr() interrupt 7 using 1

 if (CCF0 == 1)                    //PCA模块0中断
     {
  CCF0=0;//清0中断标志0
  CCAP0L=valuePCA0;
  CCAP0H=valuePCA0>>8;
  valuePCA0+=0x2400;//定时大约10ms
  
  LED1=~LED1;//指示灯1闪烁
 }

 if (CCF1 == 1)                    //PCA模块1中断
     {
  CCF1=0;//清0中断标志1
  CCAP1L=valuePCA1;
  CCAP1H=valuePCA1>>8;
  valuePCA1+=0x2400;//定时大约10ms
  
  LED2=~LED2;//指示灯2闪烁
 }
}

tam

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条