终于把控制系统的显示和按键部分弄得差不多了。至此,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闪烁
}
}
文章评论(0条评论)
登录后参与讨论