完整的CCP1捕捉模式程序(MCC18-PIC18F2480)

[复制链接]
5290|1
 楼主| hahahaluo 发表于 2007-12-26 13:23 | 显示全部楼层 |阅读模式
#include&nbsp;&ltp18f2480.h&gt&nbsp;<br /><br />unsigned&nbsp;char&nbsp;cap_high;<br />unsigned&nbsp;char&nbsp;cap_low;<br /><br />void&nbsp;VectorHigh&nbsp;(void);<br />void&nbsp;HandlerHigh&nbsp;(void);<br /><br />#pragma&nbsp;code&nbsp;VectorHigh&nbsp;=&nbsp;0x08<br />void&nbsp;VectorHigh&nbsp;(void)<br />{<br />&nbsp;&nbsp;_asm<br />&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;HandlerHigh&nbsp;//jump&nbsp;to&nbsp;interrupt&nbsp;routine<br />&nbsp;&nbsp;_endasm<br />}<br />#pragma&nbsp;code<br /><br />#pragma&nbsp;interrupt&nbsp;HandlerHigh<br />void&nbsp;HandlerHigh&nbsp;()<br />{<br />//CCP1中断----------------------------------<br />TMR1H=0;//定时器1一定要在中断里面清0<br />TMR1L=0;//进入中断先清0,保证计时精度<br /><br />&nbsp;if(PIR1bits.CCP1IF)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;PIR1bits.CCP1IF&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//一定要在中断里面赋值<br />&nbsp;&nbsp;&nbsp;cap_low=CCPR1L;<br />&nbsp;&nbsp;&nbsp;cap_high=CCPR1H;<br />&nbsp;&nbsp;&nbsp;}<br /><br />}<br />#pragma&nbsp;code<br /><br />void&nbsp;main()&nbsp;<br />{&nbsp;<br />//初始化定时器1,Capture用----------------------------------------<br /><br />TRISCbits.TRISC2=&nbsp;1;&nbsp;//设定RC2为输入<br /><br />CCP1CON&nbsp;=&nbsp;0x04;//CCP1下降沿捕捉模式<br /><br />T3CON&nbsp;=&nbsp;0x00;//定时器1是CCP1的时钟源<br /><br />CCPR1H=0;<br />CCPR1L=0;<br /><br />PIE1bits.CCP1IE=1;//CCP1中断打开<br />PIR1bits.CCP1IF=0;//CCP1溢出标志<br />IPR1bits.CCP1IP&nbsp;=&nbsp;1;//CCP1溢出中断优先级为高中断<br /><br />T1CON&nbsp;=&nbsp;0x01;//打开定时器1<br /><br />PIE1bits.TMR1IE=1;//定时器1中断打开<br />PIR1bits.TMR1IF=0;//定时器1溢出标志<br />IPR1bits.TMR1IP&nbsp;=&nbsp;1;//定时器1溢出中断优先级为高中断<br /><br />INTCONbits.GIE&nbsp;=&nbsp;1;//全局中断打开<br />INTCONbits.PEIE=1;//外围设备中断打开<br /><br />for(;;);<br /><br />}&nbsp;
jantw996 发表于 2010-6-22 15:15 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部