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

PIC16F1933在MPLAB X IDE的调试问题

[复制链接]
693|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近学习microchip的8位MCU,以PIC16F1933入手,开始遇到些问题,希望大家指教一下。
1.每次在进入debug模式时,都会弹出提示框,提示需要打开看门狗,点击YSE后就可以进入debug,点击NO就退出了,这是为什么?

2.写了一个简单的IO口翻转功能,高低电平的持续时间是一样的,但是运行结果出现了非常大的差异:
在debug模式下运行,IO的波形高低时间一样,波形如下图:

当把程序通过烧录器下载后,再运行时,IO的波形高低电平时间不一样了,波形如下图:


附上代码:
#include "pic.h"
__CONFIG(0x3FE4);
__CONFIG(0x0FFF);

void System_Init(void)//系统初始化
{
        PORTA = 0x00;//A口清零
        PORTB = 0x00;//B口清零
        TRISA = 0x00;//A口设置输出
        ANSELA = 0x00;//数字
        TRISB = 0x00;//B口设置输出
        ANSELB = 0x00;//数字
        WPUB = 0x00;//禁止弱上拉
       PORTC = 0x00;//C口清零
        TRISC = 0x00;//C口数字
        INTE = 0;//禁止INT外部中断
        IOCIE = 0;//禁止电平变化中断
}
void Delay_1ms(unsigned int t)
{
        unsigned int i,j;
        for(i = 0;i < t;i ++)
                for(j = 0;j < 11;j ++);
}
main()
{
        System_Init();//系统初始化
        while(1)
        {
                RC1 = 0;
                Delay_1ms(1000);
                RC1 = 1;
                Delay_1ms(1000);       
        }
}

问题:为什么一样的代码,在debug运行和下载运行结果差异那么大?这是为什么?
配置字的配置有没有问题?各位大佬教教我,

使用特权

评论回复
评论
wangjj19950516 2021-1-26 09:59 回复TA
大家有没有遇到过类似的问题,同一个代码,在debug模式下和下载后运行的结果不一样 
沙发
systemchip| | 2021-1-26 10:30 | 只看该作者
你理解错误,其实是调试模式不允许使能WDT

使用特权

评论回复
板凳
wangjj19950516|  楼主 | 2021-1-26 13:06 | 只看该作者
systemchip 发表于 2021-1-26 10:30
你理解错误,其实是调试模式不允许使能WDT

可是配置字里已经关闭了看门狗呀

使用特权

评论回复
地板
wangjj19950516|  楼主 | 2021-1-26 13:14 | 只看该作者
systemchip 发表于 2021-1-26 10:30
你理解错误,其实是调试模式不允许使能WDT

非常感谢你的提醒,让我突然想到配置字的问题。各种尝试之后,我发现配置字的写法好像有影响:
1.直接在程序中写配置字寄存器
  __CONFIG(0x3FE4);
  __CONFIG(0x0FFF);
2.通过IDE的Configuration Bits配置生成的配置代码:
//CONFIG1
#pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = ON       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF       // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config VCAPEN = OFF     // Voltage Regulator Capacitor Enable (All VCAP pin functionality is disabled)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF        // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)

这两种的运行结果不一样,感觉好像第一种的写法没有写进去,这种写法是正确的吗?

使用特权

评论回复
5
hjl2832| | 2021-1-27 09:33 | 只看该作者
第一种写法,是PICC用的,XC8是用第二种。

使用特权

评论回复
6
lcczg| | 2021-1-27 10:45 | 只看该作者
你的两种写法配置是不一样的。第二种写法它的配置字的值是 0FFC和3FFF.


使用特权

评论回复
7
systemchip| | 2021-1-27 11:43 | 只看该作者
你仔细看看你第二种配置写法,看门狗分明是打开的

使用特权

评论回复
8
wangjj19950516|  楼主 | 2021-1-27 15:25 | 只看该作者
systemchip 发表于 2021-1-27 11:43
你仔细看看你第二种配置写法,看门狗分明是打开的

找到问题是,是因为我用的XC8编译器,第一种写法是PICC下的写法,所以没写进去

使用特权

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

本版积分规则

24

主题

86

帖子

2

粉丝