Pic12f683仅在引脚2(GP5)上具有数字输出

问题描述 投票:1回答:1

我一直在尝试开始使用PIC12f683,以便熟悉PIC系列微控制器。

我已经把它连接到Pickit 3,和我的电脑交谈,一切似乎都很好。

我一直在尝试从互联网上的各种LED闪光灯示例,但无论我尝试哪种示例代码,或者我使用TRISO或GPIO寄存器做什么,我只能在引脚2上输出,其他任何GPIO引脚都不会做任何事情。

电气方面......引脚1,4,6,7和8连接到Pickit for ICSP。引脚2,3,5和7的LED具有从引脚到地的220欧姆电阻,引脚1和8连接到锂离子电池(~3.7V)。

这是我目前使用的代码。

#define _XTAL_FREQ 8000000 

#include <xc.h>

// BEGIN CONFIG 
// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF      // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)

//END CONFIG 

int main() 
{ 
    TRISIO =0b00000000; //RB0 as Output PIN 
    GPIO = 0b00111111;
    while(1) 
    { 
        GP5=1;
        GP4=1;
        GP0=1;
        GP2=1; 
        __delay_ms(1000); 
        GP5=0;
        GP4=0;
        GP0=0;
        GP2=0;
       __delay_ms(1000); 
    } 
    return 0; 
}

我相信配置部分是由MPlab生成的,其余部分是从这个instructable:https://www.instructables.com/id/How-to-Blink-an-Led-With-PIC16F886-/复制/修改的,但无论我使用什么样的代码,结果都是一样的。我猜是有一个寄存器或配置变量我在某处设置错误,但我无法弄明白。

microcontroller pic
1个回答
0
投票

您必须将输出切换为数字。

int main() 
{ 
    TRISIO =0b00000000;   //RB0 as Output PIN 
    ANSEL = 0;            // all outputs digital !!!!!
    CMCON0 = 0b00000111;  //turn Cin Pins as I/O
    GPIO = 0b00111111;
    while(1) 
    { 
        GP5=1;
        GP4=1;
        GP0=1;
        GP2=1; 
        __delay_ms(1000); 
        GP5=0;
        GP4=0;
        GP0=0;
        GP2=0;
       __delay_ms(1000); 
    } 
    return 0; 
}

输出GP0 ... GP4是默认模拟输出。 请记住GP3与MCLR共用引脚,因此它只是一个输入引脚。

© www.soinside.com 2019 - 2024. All rights reserved.