打印
[PIC®/AVR®/dsPIC®产品]

PIC16F1503无法进入TMR0中断

[复制链接]
2304|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chengang0574|  楼主 | 2017-5-26 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<pic.h>
unsigned int a;
unsigned int b;
unsigned int c;
unsigned int d;
unsigned int Touch_Count=0;
void main()
{
OSCCON=0X68; //内部4M晶振
TRISA2=0;   //RA2为输出
TRISA5=1;   //RA5为输入
TRISC1=0;   //RC1为输出
TRISC3=0;   //RC3为输出
TRISC5=0;   //RC5为输出
ANSA2=0;    //RA2为数字I/O
ANSC1=0;    //RC1为数字I/O
ANSC3=0;    //RC3为数字I/O
RC1=1;      //RC1输出高电平
RC5=1;      //RC5输出高电平
RC3=1;      //RC3输出高电平
RA2=1;      //RA2输出高电平
TMR0CS=0;   //使用内部时钟4/4=1M
TMR0IF=0;   //TMR0中断标志位清零
TMR0IE=1;    //TMR0中断开启
PSA=0;        //预分频器分给TMR0模块
PS0=1;        //1;256分频
PS1=1;        //1;256分频
PS2=1;        //1;256分频
TMR0=61;      //TMR0设初始值50mS
GIE=1;        //开启总中断

while(1)
{
;
}
}
void interrupt_TMR0()
{
if(TMR0IF==1)  //判断TMRO是否溢出
{
TMR0IF=0;      //TMRO标志位清零
Touch_Count++; //
TMR0=61;  //TMR0设初始值50mS
if(Touch_Count>20)
{
Touch_Count=0;
RC1=1;
RC5=1;
RC3=1;
RA2=~RA2;
}
}
}请教高手帮我看一下,谢谢!
评论
知秋一叶ol 2018-12-21 15:29 回复TA
void interrupt ISR() 
知秋一叶ol 2018-12-21 15:28 回复TA
void interrupt ISR() 
沙发
yklstudent| | 2017-5-26 16:51 | 只看该作者
void interrupt_TMR0()
中断函数名是这样写的???

使用特权

评论回复
板凳
150315175| | 2017-5-26 16:59 | 只看该作者
void interrupt_TMR0() 你改成 void interrupt TMR0()试一下?我想问下楼主你有在线调试吗?我在线调试一调试就停止Pickit3显示Target Halted

使用特权

评论回复
地板
chengang0574|  楼主 | 2017-5-26 17:50 | 只看该作者
还是不行

使用特权

评论回复
5
chengang0574|  楼主 | 2017-5-26 18:41 | 只看该作者
150315175 发表于 2017-5-26 16:59
void interrupt_TMR0() 你改成 void interrupt TMR0()试一下?我想问下楼主你有在线调试吗?我在线调试一调 ...

还是不行

使用特权

评论回复
6
chengang0574|  楼主 | 2017-5-26 18:42 | 只看该作者
yklstudent 发表于 2017-5-26 16:51
void interrupt_TMR0()
中断函数名是这样写的???

我按楼下说的写了也不行,麻烦你告诉我怎么写好么

使用特权

评论回复
7
150315175| | 2017-5-26 19:42 | 只看该作者
yklstudent 发表于 2017-5-26 16:51
void interrupt_TMR0()
中断函数名是这样写的???

我想问下为什么我调试时一run就Target Halted,不能在线调试了啊,不知怎么解决?

使用特权

评论回复
8
yklstudent| | 2017-5-26 20:16 | 只看该作者
不知道,没遇到过这个问题,检测硬件接线吧

使用特权

评论回复
9
kingkits| | 2017-6-2 15:46 | 只看该作者
你考虑一下看门狗

使用特权

评论回复
10
zhaor| | 2017-6-3 20:43 | 只看该作者
1503有在线调试功能吗?

使用特权

评论回复
11
ali51ok| | 2017-6-10 08:40 | 只看该作者
CONFIG没有配置,然后最好吧中断函数按照楼上的建议写,中断函数放在main函数前

使用特权

评论回复
12
yqdeso| | 2017-6-11 12:43 | 只看该作者
楼主啊,你把PEIE放哪去了?

使用特权

评论回复
13
shenzhenherry| | 2017-6-12 16:58 | 只看该作者
1\  启动定时器,需要先做初始化,例如(PIC16F887):
void Timer_Init0(void)
{       
        OPTION     = 0x03;//这是专门操作Timer0的寄存器,P32, 选1:16分频系数,P77也描述了这个寄存器,重复啦
        INTCON     = 0xe0;//p33,允许RB口的电平变化产生中断!主要是RB6的按键问题!
               
        T0IE = 0;  //1 = 允许 Timer0中断               
        TMR0       = 256-125;//125
        T0IF  = 0; //0=TMR0寄存器未发生溢出,即清除time0的溢出标志位
       
        OSCCON = 0X7c;//p64  //目的是为了把内部的震荡频率校准为8MHz 7E
        OSCTUNE = 0x00;//P68 //这样"秒表"才准! 201301125       
}

2、中断服务函数的语法,lz的写法完全不对!
void interrupt tmr0_tmr1(void)
      {
         }

使用特权

评论回复
14
yangzj1974| | 2018-2-13 15:26 | 只看该作者
学习

使用特权

评论回复
15
钓鱼大师| | 2018-12-21 10:08 | 只看该作者
yqdeso 发表于 2017-6-11 12:43
楼主啊,你把PEIE放哪去了?

我刚开始学PIC单片机,PEIE不是外设的中断允许位吗?TMR0属于外设?

使用特权

评论回复
16
钓鱼大师| | 2018-12-21 11:35 | 只看该作者
bellstudio 发表于 2018-12-21 10:20
你看得很仔细哦,根据数据手册中图7-1,TMR0, INT, IOC这三个不属于PEIE的管辖范围。 ...

哦哦,我刚开始学。有个问题可以请教你一下吗?
我们之前使用的K150烧录器里面找不到PIC16F1507这个型号,请问该怎么办?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝