PIC16F1936看门狗

[复制链接]
3638|7
 楼主| xuyqmazy52 发表于 2014-2-18 22:06 | 显示全部楼层 |阅读模式
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头文件会再包含具体芯片型号的头文件,这么做可以方便用户的书写和代码移植。
 楼主| xuyqmazy52 发表于 2014-2-19 10:37 | 显示全部楼层
我觉得自带的延时程序不会去做看门狗复位吧?感觉怪怪的!!
yklstudent 发表于 2014-2-19 13:11 | 显示全部楼层
xuyqmazy52 发表于 2014-2-19 10:37
我觉得自带的延时程序不会去做看门狗复位吧?感觉怪怪的!!


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| xuyqmazy52 发表于 2014-2-19 15:50 | 显示全部楼层
手头只有一个下载器,不能看编译的汇编代码,谢谢yklstudent!
zhimagod 发表于 2014-2-23 10:18 | 显示全部楼层
看编译之后的代码……不需要硬件支持的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

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