OC7M、OC7D详解暨输出比较通道7说明有很多人对OC7M和OC7D两个寄存器很陌生,老是遇到它们但又不是很了解它们的作用。我特意整理了一些资料,对这两个寄存器做了详细的讲解。下面我们先讨论一下一个特殊的输出比较通道:输出比较通道7(OC7)我们都知道,输出比较通道1到6的功能是完全一样的,没有什么特殊的地方,然而输出比较通道7却有一个附加功能~~~当定时器部件通过TIOS寄存器被设为输出比较功能时,{设置寄存器如下(IOSn=1)},输出通道7可以控制所有输出比较引脚的逻辑状态。就是通过设置OC7M和OC7D两个寄存器来使得该特殊的功能可用的,这就引出了这两个寄存器~~~~~~~~~开讲:先看看这两个寄存器的内容吧~~内容很简单,OC7M和OC7D中的各位与PORTT口寄存器的各位一一对应,其中寄存器OC7M决定哪些通道将处于OC7的管理之下;而OC7M对于其他OC输出引脚的管理限于将某个二进制值送到对应引脚,这个值保存在寄存器OC7D中的对应位中。而所有的一切动作产生,都源于OC7是否比较成功。。。。。。我先援引书上的一句话,再详细地解释一下:书上这么说的:当在TCNT寄存器不断更新自由运行计数器的值与TC7寄存器的值相等的时候(也就是说输出比较7成功了),OC1--OC7引脚上的逻辑状态由预先存储在OC7M和OC7D寄存器的值来控制。OC7M的作用就像一个打开或关掉每个输出比较引脚的开关,这个开关有OC7是否成功比较输出来决定。若OC7M都为1(选定其他通道都有OC7来控制),那么输出引脚上的逻辑状态根据OC7D寄存器内部的值来改变。这么说还不明白么,那来个例子说明一下吧------------------------------------------------------------------------------首先将各个通道设置为输出比较,即在TIOS=0XFF的前提下,设OC7M=11000011B,那么就说明输出比较通道7将要管理OC0、OC1、OC6、OC7四个通道;设OC7D=10101110B,那么在OC7输出比较成功后(就是TCNT增加到了TC7),那么刚才提到的四个通道引脚上的逻辑状态就编程了0(OC7D的第0位)、1(OC7D的第1位)、0(OC7D的第6位)、1(OC7D的第7位)。感觉和普通的输出没什么区别,没错,TIOS将某个通道设定为输出比较时,将OC7M中的相应位置1,对应的引脚就是输出状态,与DDR中的对应位的状态无关,但OC7Mn并不改变DDR相应位的状态。------------------------------------------------------------------------------这个特殊功能有什么作用呢,本身定时器就是比较灵活的,利用OC7通道可以在不同的时间方便地控制输出比较引脚的逻辑状态,还可以产生PWM信号,不信你自己可以试试看~~~~