首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助:强制输出比较

求助:强制输出比较

请教各位大侠:
S12单片的定时器模块输出比较功能中,强制输出比较寄存器CFORC有什么用?不使用这个寄存器能输出比较得到PWM方波吗?
在其他条件没错的情况下,
下面的程序能在PT0口得到占空比为(65535-30000)/65535的方波吗?

void main(void)
{
TSCR1_TEN=1;  // 允许定时器正常工作
TIOS=0x01; //设定PT0输出比较
TSCR1_TFFCA=1; //写输出比较通道将清空相应的通道标志位
TCTL2=0x02; //0000 0010 初始化设定PT0输出低电平
TTOV=0x01; //通道0溢出翻转
TIE|=0x01;  // 通道0允许输出比较中断
for(;;)
    {
      
    }   
}

void RTI_ISR(void)
{
TC0=30000;
}

void OC4_ISR(void)
{
TFLG1_C4F=1;  //清除通道4的输出比较标志位
TCTL2=0x01; //0000 0001 在中断程序里让PT0输出电平翻转
}
强制输出比较的作用,是将各输出管脚的电平置于设定的状态。它主要是用于用软件的方式来生成PWM信号。一般如果采用硬件的输出比较方式来产生PWM信号时,它是用不着的。
海纳百川  有容乃大
关于寄存器的设置。如果PWM输出的占空比和发生比较事件时的电平转换方式不变的话,那么在初始化程序中设置好即可,无需在每次中断后再行设置。
海纳百川  有容乃大
TCTL1/TCTL2的设置决定PWM输出信号的极性。一般来说,我们应设定发生比较事件是输出高电平或低电平,而在定时器溢出时将输出电平翻转。
海纳百川  有容乃大
要是按照版主的说法,我的这段程序应该能够输出PWM方波了?
可惜我现在手头没有板子验证一下。。。
还是要说声谢谢!
返回列表