请教中断服务程序

[复制链接]
2378|3
 楼主| zmmhmily 发表于 2008-12-9 00:20 | 显示全部楼层 |阅读模式
void&nbsp;TimerInit(void)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CON&nbsp;=&nbsp;0b1000000000010000;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T1IF&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;PR1&nbsp;=&nbsp;0x2FF<br />&nbsp;&nbsp;&nbsp;&nbsp;IEC0bits.T1IE=1;<br />}<br /><br />以上是我写的用定时器1初始化程序,&nbsp;我想在中断服务程序里实现一些功能,&nbsp;<br />这个中断服务程序格式是什么样的啊,&nbsp;初学PIC,&nbsp;不懂,&nbsp;请教一下各位高手了<br />谢谢!
hotpower 发表于 2008-12-9 00:42 | 显示全部楼层

。。。

void&nbsp;TimerInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Timer1Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;Timer2Init();<br />}<br /><br />void&nbsp;Timer1Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR1&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;复位时间计数器<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//关闭Timer1<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TSIDL&nbsp;=&nbsp;0;&nbsp;&nbsp;//处于休眠模式时继续操作<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TGATE&nbsp;=&nbsp;0;&nbsp;//禁止门时间累加<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TCS&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//使用Tcy作为时钟源<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TCKPS&nbsp;=&nbsp;3;&nbsp;//输入时钟Tcy&nbsp;/&nbsp;256<br />&nbsp;&nbsp;&nbsp;&nbsp;PR1&nbsp;=&nbsp;(Fcy/256)/1000;//设定1mS延时时间&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T1IF&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清Timer&nbsp;1中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;IEC0bits.T1IE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能Timer1中断<br />&nbsp;&nbsp;&nbsp;&nbsp;T1CONbits.TON&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;//打开Timer1<br />}<br /><br />void&nbsp;Timer2Init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR2&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;复位时间计数器<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TON&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//关闭Timer2<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TSIDL&nbsp;=&nbsp;0;&nbsp;&nbsp;//处于休眠模式时继续操作<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TGATE&nbsp;=&nbsp;0;&nbsp;//禁止门时间累加<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TCS&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;//使用Tcy作为时钟源<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TCKPS&nbsp;=&nbsp;3;&nbsp;//输入时钟Tcy&nbsp;/&nbsp;256<br />&nbsp;&nbsp;&nbsp;&nbsp;PR2&nbsp;=&nbsp;(Fcy/256)/2;&nbsp;&nbsp;&nbsp;//设定500mS延时时间&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T2IF&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清Timer&nbsp;2中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;IEC0bits.T2IE&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能Timer2中断<br />&nbsp;&nbsp;&nbsp;&nbsp;T2CONbits.TON&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;//打开Timer2<br />&nbsp;&nbsp;&nbsp;&nbsp;Second&nbsp;=&nbsp;0;<br />}<br /><br />void&nbsp;__attribute__((interrupt,&nbsp;no_auto_psv))&nbsp;_T1Interrupt(&nbsp;void&nbsp;)<br />{<br />static&nbsp;unsigned&nbsp;char&nbsp;KeyCount&nbsp;=&nbsp;0;<br />unsigned&nbsp;char&nbsp;KeyState;<br />static&nbsp;int&nbsp;count&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ClrWdt();<br />&nbsp;&nbsp;&nbsp;&nbsp;KeyState&nbsp;=&nbsp;KeyboardScan(KeyCount);//调用零耗时键盘扫描<br />&nbsp;&nbsp;&nbsp;&nbsp;KeyboardCommand(KeyCount,&nbsp;KeyState);//命令键盘执行程序<br />&nbsp;&nbsp;&nbsp;&nbsp;KeyCount&nbsp;++;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(KeyCount&nbsp;&gt=&nbsp;KeyboardMaxCount)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyCount&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;++;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(count&nbsp;&gt=&nbsp;200)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuDisplay();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T1IF&nbsp;=&nbsp;0;//清除Timer1中断标志<br />}<br /><br />void&nbsp;__attribute__((interrupt,&nbsp;no_auto_psv))&nbsp;_T2Interrupt(&nbsp;void&nbsp;)<br />{<br />//.......................................................<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.T2IF&nbsp;=&nbsp;0;//清除Timer2中断标志<br />}
 楼主| zmmhmily 发表于 2008-12-9 09:40 | 显示全部楼层

感谢感谢感谢

hotpower&nbsp;&nbsp;太谢谢了&nbsp;帮我一大忙啊&nbsp;这下可以少走很多弯路了&nbsp;谢谢
hotpower 发表于 2008-12-9 21:59 | 显示全部楼层

C30

  <br /> 相关链接:<a href='http://blog.**/hotpower/20100/category.aspx'>http://blog.**/hotpower/20100/category.aspx</a>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

205

主题

698

帖子

0

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