我一直在尝试开始使用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-/复制/修改的,但无论我使用什么样的代码,结果都是一样的。我猜是有一个寄存器或配置变量我在某处设置错误,但我无法弄明白。
您必须将输出切换为数字。
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共用引脚,因此它只是一个输入引脚。