• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

想用PIC time0中断,输出一个1k的方波,但是输出一直是低

想用time0中断,输出一个1k的方波,但是输出一直是低,帮忙看看哪儿出问题了。

#include        //调用头文件,可以去PICC软件下去查找PIC16F87XA单片机的头文件

__CONFIG(XT&WDTDIS&LVPDIS);    //定义配置字,晶振类型:XT,关闭开门狗,禁止低电压编程

#define clk RD0     //定义V0为RD0端口

void timer0init(void)

{T0CS=0;                //TMR0工作于定时器方式

PSA=0;                 //TMR0分频    PS2=0;    PS1=0;    PS0=1; 

T0IF=0;                //清除TMR0中断标志

T0IE=1;                //TMR0中断允许 

TMR0=0x09;             //赋初值,

GIE=1;}  

void interrupt  ISR(void)

{

if(TMR0IF==1)             

{  TMR0=0x09;  

T0IF=0;     

clk=!clk;         //将clk取反,达到输出方波的目的 

  }}

void main(void)

  

 TRISD=0B00000000;        //RD设置为输出

PORTD=0B00000001;         

timer0init();              

while(1)   

}

}

全部回复(10)
正序查看
倒序查看
2014-04-25 10:08

//__CONFIG(XT&WDTDIS&LVPDIS);    //定义配置字,晶振类型:XT,关闭开门狗,禁止低电压编程

把你的这段配置先注释掉,试试!感觉你的配置有问题!

 

 

0
回复
joe_choo
LV.4
3
2014-04-25 15:57
@yueyunno1
//__CONFIG(XT&WDTDIS&LVPDIS);  //定义配置字,晶振类型:XT,关闭开门狗,禁止低电压编程把你的这段配置先注释掉,试试!感觉你的配置有问题! [图片] 

虽然已经调试出来了,还是很谢谢你。

0
回复
2014-04-25 18:21
@joe_choo
虽然已经调试出来了,还是很谢谢你。
呵呵 没事
0
回复
2014-04-27 00:10
@joe_choo
虽然已经调试出来了,还是很谢谢你。
把搞出来的原因和方法共享下啊
0
回复
joe_choo
LV.4
6
2014-04-28 10:10
@yueyunno1
呵呵没事
还有一事请教一下,如果测频率的话,为了使得测出的频率精度要高,是把多次测出的频率做平均值,这样子的做法合不合理。谢谢!!
0
回复
2014-04-28 10:24
@joe_choo
还有一事请教一下,如果测频率的话,为了使得测出的频率精度要高,是把多次测出的频率做平均值,这样子的做法合不合理。谢谢!!

合理的,如果要求精度高都会这样去做!

0
回复
shenx123
LV.10
8
2014-04-28 15:25
@joe_choo
还有一事请教一下,如果测频率的话,为了使得测出的频率精度要高,是把多次测出的频率做平均值,这样子的做法合不合理。谢谢!!
多次测量能得到合理的中间数
0
回复
daihui713
LV.6
9
2014-04-28 15:36
T0IF错了吧
0
回复
2014-04-28 21:46
@daihui713
T0IF错了吧
戴工对PIC比较熟悉,顶一个!
0
回复
joe_choo
LV.4
11
2014-10-06 12:00
@yueyunno1
合理的,如果要求精度高都会这样去做!
看了些关于频率测试的代码,人家的做法是将多次采样的频率做比较,如果多次比较频率相同。就可以去这个值
0
回复