[PIC®/AVR®/dsPIC®产品] PIC18F4520奇怪的现象

[复制链接]
1592|15
 楼主| heweibig 发表于 2022-10-20 19:59 | 显示全部楼层 |阅读模式
  18F4520做了一个简单的定时器控制的LED亮灭。在软件仿真的时候,定时时间,io引脚输出高低电平都是符合要求的。      问题:  在硬件烧写后,程序老是不能正常跑,用手碰一下地线或者压一下LED,或者用手把板子拎起来,都能正常工作。我以为是我焊点虚焊的, 但是 在LED不亮灭的时候,我用示波器抓了一下LED输出脚的波形,波形没有输出。
 楼主| heweibig 发表于 2022-10-20 20:03 | 显示全部楼层
VPP脚高电平,输入5V也是正常
huanghuac 发表于 2022-10-20 20:06 | 显示全部楼层
不是虚焊的问题
tian111 发表于 2022-10-20 20:09 | 显示全部楼层
配置位没有配置好
 楼主| heweibig 发表于 2022-10-20 20:11 | 显示全部楼层
软件仿真的时候是正常的
 楼主| heweibig 发表于 2022-10-20 20:13 | 显示全部楼层
VPP和VCC直接接了一个10k的电阻。LED输出用的是RA0和RA1.
pengf 发表于 2022-10-20 20:18 | 显示全部楼层
配置位贴上
renyaq 发表于 2022-10-20 20:20 | 显示全部楼层

// CONFIG1H
#pragma config OSC = INTIO7     // Oscillator Selection bits (Internal oscillator block, CLKO function on RA6, port function on RA7)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and software)
#pragma config BORV = 3         // Brown Out Reset Voltage bits (Minimum setting)

// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config CCP2MX = PORTC   // CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
#pragma config PBADEN = ON      // PORTB A/D Enable bit (PORTB<4:0> pins are configured as analog input channels on Reset)
#pragma config LPT1OSC = OFF    // Low-Power Timer1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = OFF       // MCLR Pin Enabl  e bit (MCLR pin enabled; RE3 input pin disabled)

// CONFIG4L
#pragma config STVREN = ON      // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = ON         // Single-Supply ICSP Enable bit (Single-Supply ICSP enabled)
#pragma config XINST = OFF      // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000800-001FFFh) not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (002000-003FFFh) not code-protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (004000-005FFFh) not code-protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (006000-007FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000800-001FFFh) not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (002000-003FFFh) not write-protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (004000-005FFFh) not write-protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (006000-007FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot block (000000-0007FFh) not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000800-001FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF      // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) not protected from table reads executed in other blocks)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
huangchui 发表于 2022-10-20 20:23 | 显示全部楼层
配置字看着还好。
1. RA0,RA1不接LED,用示波器量有没有问题?
huangchui 发表于 2022-10-20 20:26 | 显示全部楼层
2. 用一个极其简单的代码,就是翻转RA0,RA1,结果如何?
bqyj 发表于 2022-10-20 20:27 | 显示全部楼层
#pragma config LVP = OFF
Bowclad 发表于 2022-11-2 20:18 | 显示全部楼层
配置位没配置好吧
zwk34 发表于 2025-6-3 20:41 | 显示全部楼层
结果怎么样,如何解决问题的?
chenjun89 发表于 2025-6-3 20:50 来自手机 | 显示全部楼层
从现象来看像是焊接的问题
kingTek 发表于 2025-6-10 07:56 来自手机 | 显示全部楼层
很可能是主频不振所致,见我旧贴
四十四次日落 发表于 2025-11-11 15:46 | 显示全部楼层
PIC18F4520 易出现的奇怪现象:上电后 IO 口电平异常,多是配置位未关看门狗或未选对振荡器;SPI 通信丢数,可能是时钟极性 / 相位不匹配或 SS 脚未正确配置;中断不响应,常因优先级设置错误或全局中断未使能;ADC 读数跳变,大概率是参考电压不稳或未加滤波电容,可逐一排查配置与硬件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

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