请大家帮助分析一下TMR0程序

[复制链接]
 楼主| 田宏亮 发表于 2007-12-19 12:59 | 显示全部楼层 |阅读模式
功能:<br />&nbsp;&nbsp;&nbsp;&nbsp;定时器0工作于16位定时模式,没有使用预分频器,每次定时中断时间约20ms,18次中断后把一状态标志(变量dddd)置1,主程序循环检测变量dddd,发现其值为1,则发一脉冲,并清除标志。<br /><br />问题:<br />&nbsp;&nbsp;&nbsp;&nbsp;长时间用示波器观察,程序执行一段时间后,脉冲消失,经过一段时间后有恢复。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;请大家帮忙分析一下原因。谢谢!<br /><br /><br />程序代码如下:<br /><br />#include&nbsp;&quot;p18f45j10.h&quot;<br /><br />void&nbsp;InterruptH_isr(void);<br /><br />void&nbsp;init_board(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LATA=0x18;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISA=0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;T0CON=0x08;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR0H=0x28;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR0L=0x30;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=0x20;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCONbits.IPEN=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON2bits.TMR0IP=1;<br />}<br /><br />volatile&nbsp;unsigned&nbsp;char&nbsp;dddd;<br /><br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;init_board();<br />&nbsp;&nbsp;&nbsp;&nbsp;T0CONbits.TMR0ON=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIEH=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dddd)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dddd=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTAbits.RA1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTAbits.RA1=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />#pragma&nbsp;code&nbsp;InterruptVectorHigh=0x08<br /><br />void&nbsp;Interrupt_High(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;_asm<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;InterruptH_isr<br />&nbsp;&nbsp;&nbsp;&nbsp;_endasm<br />}<br />#pragma&nbsp;code<br /><br />#pragma&nbsp;interrupt&nbsp;InterruptH_isr<br />void&nbsp;InterruptH_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;unsigned&nbsp;char&nbsp;cnt20ms=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(INTCONbits.TMR0IF)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.TMR0IF=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMR0H=0x28;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMR0L=0x30;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt20ms++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cnt20ms==18)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dddd=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt20ms=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />
anxiangbo 发表于 2007-12-19 13:32 | 显示全部楼层

楼主用哪个版本的编译器

楼主用哪个版本的编译器
 楼主| 田宏亮 发表于 2007-12-19 13:50 | 显示全部楼层

RE

anxiangbo你好<br />我的MAPLB是7.5的,C编译器是MAPLB&nbsp;C18&nbsp;V3.0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

25

帖子

2

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