打印

PIC16F1936看门狗

[复制链接]
3307|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
PIC16F1936启动看门狗,配置字中设置为WDTE_SWDTEN,软件使能看门狗功能,程序初始化完成后,进入main函数主循环前启动看门狗;
        // WITCH DOG TIME 4s
        SWDTEN = 1;
        WDTPS4 = 0;
        WDTPS3 = 1;
        WDTPS2 = 1;
        WDTPS1 = 0;
        WDTPS0 = 0;
        CLRWDT();

在主循环中,不执行CLRWDT();,让其进行看门狗定时复位,功能正常,但当我的主循环中执行如下延时函数时,看门狗功不能复位。

        __delay_us(40);                // 延时40us

__delay_us为pic.h定义的函数。
/****************************************************************/
/* Built-in delay routine                                        */
/****************************************************************/
#pragma inline(_delay)
extern void _delay(unsigned long);
// NOTE: To use the macros below, YOU must have previously defined _XTAL_FREQ
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#endif

_XTAL_FREQ = 32000000UL
请问高手这是什么原因啊?
沙发
yklstudent| | 2014-2-19 09:42 | 只看该作者
估计原型里有打狗语句,所以狗吓跑了 不起作用了

使用特权

评论回复
板凳
xuyqmazy52|  楼主 | 2014-2-19 10:10 | 只看该作者
void _delay(unsigned long); 这个函数原型不知道在哪里定义的,找不到。

使用特权

评论回复
地板
yewuyi| | 2014-2-19 10:20 | 只看该作者
1、按照PIC.H文中的指定的1936的芯片头文件指向,在PIC.H的同一目录下可以找到这个头文件,然后打开看看。

2、PIC.H是所有PIC芯片的总头文件,但显然不可能包含所有PIC芯片的头文件定义,所以,在PIC.H头文件会再包含具体芯片型号的头文件,这么做可以方便用户的书写和代码移植。

使用特权

评论回复
5
xuyqmazy52|  楼主 | 2014-2-19 10:37 | 只看该作者
我觉得自带的延时程序不会去做看门狗复位吧?感觉怪怪的!!

使用特权

评论回复
6
yklstudent| | 2014-2-19 13:11 | 只看该作者
xuyqmazy52 发表于 2014-2-19 10:37
我觉得自带的延时程序不会去做看门狗复位吧?感觉怪怪的!!


看看变异后的代码吧 CLRWDT
这个能让你的狗还能起作用吗?

使用特权

评论回复
7
xuyqmazy52|  楼主 | 2014-2-19 15:50 | 只看该作者
手头只有一个下载器,不能看编译的汇编代码,谢谢yklstudent!

使用特权

评论回复
8
zhimagod| | 2014-2-23 10:18 | 只看该作者
看编译之后的代码……不需要硬件支持的

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝