若希望通过比较事件置位或清零RC2/CCP1引脚,RC2应该置为输出。需要注意的是,这两种比较模式下引脚输出的电平直接来自于CCP1模块的数据锁存输出,与数字I/O端口的设定完全无关,即在这两种比较模式下,无法直接用软件去修改引脚的输出电平。软件中断模式和特殊事件触发模式可以直接用软件控制RC2引脚电平。
用一个比较模式产生方波的例子来说明CCP1模块比较模式的编程方法。
【例12-2】电路图如图12-6所示。采用CCP1模块的比较模式实现通过RC2输出周期为812µs的方波,并用示波器测量其周期是否准确。
电路图在光盘位置:“\Example\Chapter12\S122\CCP1_Comp.DSN”。
图12-6 基于CCP1模块比较模式的方波发生器电路图
题意分析
●RC2用做输出方波,所以应该把RC2置为输出方式。
●题意要求采用CCP1模块的比较模式,由于其有4种选择,对于输出指定周期的方波而言,用触发TMR1复位的比较模式最方便。可以把CCPR1H:CCPR1L的值设定为目标周期的一半,每中断一次就把RC2的值取反输出。这样就能实现两次中断的时间是一个周期,并且每次中断前后的电平是反向的。
●要求方波周期是812µs,其一半是406µs。当主频为4MHz,TMR1不分频的情况下,TMR1每计一个数的时间是1µs,这样需要TMR1从0计到400时才产生中断,即CCPR1H:CCPR1L的值应设定为406。需要把406分成高低两个字节,高字节保存(www.daowen.com)
在CCPR1H中,低字节保存在CCPR1L中。
设计过程
1)用MPLAB新建项目S122,语言工具选择为“HI-TECH Universal Toolsuite”,保存在C盘根文件夹下。
2)新建main.c文件并加入项目中,其内容如下所示。
3)程序录入完毕后,保存并编译成功。然后用调试工具Proteus VSM加载CCP1_Comp.DSN。启动VSM后运行程序。程序运行效果是示波器的A通道上会显示方波波形。读者可以使用示波器的Cursors功能来测量每个周期的时间长度,如图12-7所示。
图12-7 用示波器测量比较输出的周期
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。