PIC单片机定时器中断程序怎么进不去?

各位好!我用PIC16F73单片机编一个定时器程序,但无法进入中断程序,如果把中断程序放到主函数中能正常运行。程序如下:#include"init.h"#definese... 各位好!我用PIC16F73单片机编一个定时器程序,但无法进入中断程序,如果把中断程序放到主函数中能正常运行。程序如下:
#include "init.h"
#define set_bit(a,b) a|=1<<b
#define clr_bit(a,b) a&=~(1<<b)
uchar timecnt;
//看门狗初始化
void watchdoginit(void)
{
OPTION = 0x0F; //B口上拉,内部RC时钟,预分频给WDT,WDT分频为1:128
}
//定时器1初始化,10ms定时
void timer1init(void)
{
TMR1H = 0XFB;
TMR1L = 0X1E;
TMR1IF = 0;
PEIE = 1;
TMR1IE = 1;
T1CON = 0X31;
}
//端口初始化
void portinit(void)
{
//clr_bit(OPTION,7); //端口B内部上拉使能
TRISA = 0xFF;
TRISB = 0x7F;
clr_bit(PORTB,7);
TRISC = 0x00;
PORTC = 0x10;
}
void init(void)
{
di();
portinit();
timer1init();
ei();
}
//中断服务程序
void interrupt ISR(void)
{
if(TMR1IF)
{
TMR1IF = 0;
TMR1H = 0XFB;
TMR1L = 0X1E;
timecnt++;
if(timecnt<30)
{
set_bit(PORTC,0);
}
else
{
clr_bit(PORTC,0);
}
if(timecnt>60)
timecnt = 0;
}
}
void main(void)
{
clr_bit(TRISC,0);
clr_bit(TRISC,1);
clr_bit(TRISC,3);
watchdoginit();
init();
while(1)
{
CLRWDT();
}
}
求高手求解!
展开
 我来答
gong4545
2012-05-22 · TA获得超过125个赞
知道小有建树答主
回答量:206
采纳率:100%
帮助的人:133万
展开全部
他用EI();打开全局中断的
首先你仔细调试看看TI的计数器是否能溢出
溢出后中断标志是否为1,为1了清零;
T1中断使能相关:GIE,PEIE,TMRIE这三个
你在特殊寄存器中单步调试仔细看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jianghe706
2012-05-17 · TA获得超过5145个赞
知道大有可为答主
回答量:2213
采纳率:77%
帮助的人:808万
展开全部
你把总的中断设置INTCON的GIE忘了置1,当然就进不了中断!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式