看门狗定时器(PIC16F72,XC8编译器)复位了处理器

时间:2017-05-10 09:03:00

标签: pic microchip mplab watchdog xc8

我已经通过MPLAB X IDE和XC8编译器启动了PIC16F72微控制器的PIC编程。下面是我的代码,编译成功。

#define _XTAL_FREQ 4000000
#include<xc.h>
#pragma config FOSC = RC // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

char pattern[] = {0b10000001,0b11000011,0b11100111,0b11111111,0b11100111,0b11000011,0b10000001};

void write(char tab)
{
    char check;
    for(int a=0;a<8;a++)
    {
        check = ((tab >> a) & 1);
        if(check)
        {
            PORTBbits.RB7=1;
            PORTBbits.RB6=0;PORTBbits.RB6=1;
        }
        else
        {
            PORTBbits.RB7=0;
            PORTBbits.RB6=0;PORTBbits.RB6=1;
        }           
    }
}
void main(void) {

    TRISB=0x00; //Initialize as output
    PORTBbits.RB6=0;
    PORTBbits.RB5=0;
    PORTBbits.RB5=1;
    while(1)
    {
        for(int i=0;i<7;i++)
        {
            write(pattern[i]);
           __delay_ms(1000);
        }
    }

    return;
}

当我在Proteus中模拟我的代码时,它显示以下错误 每隔2.3秒,看门狗定时器在xxxxx 到期后重置处理器。

我搜索过这个问题没有成功。我无法解决问题

4 个答案:

答案 0 :(得分:1)

你忘记了一封信。你有......

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)

应该是

#pragma config WDTEN = OFF

查看datasheet

的第60页

答案 1 :(得分:0)

尝试

__ CONFIG(_WDT_OFF&amp; _PWRTE_ON)

而不是使用#pragma config

答案 2 :(得分:0)

您可以尝试使用MPLAB X为您生成配置位。

在MPLAB X中,单击窗口 - &gt; PIC存储器视图 - &gt;配置位。新窗口将显示您可以配置PIC和禁用看门狗的位置。如果单击按钮&#34; 生成源代码以输出&#34; MPLAB将为您在项目中使用的PIC生成具有适当配置位的源代码。这是Microchip的官方教程,详细描述了它 - http://microchipdeveloper.com/mplabx:view-and-set-configuration-bits

答案 3 :(得分:0)

仿真工具Proteus不是microchip(芯片制造商)官方提供的,有时盗版软件也会产生问题,你可以尝试的一件事是在Proteus中双击微控制器并将配置字更改为什么你实际上想要。我建议你在物理微控制器上测试代码。