PIC12F629的部分I/O口不能用!(问题已解决,感谢:lyunlimit 兔斯基)

2020-02-10 08:36发布

最近在玩PIC12F629,哎,被这玩意儿的寄存器弄得实在郁闷!
我的GPIO0、GPIO1、GPIO2都能正常使用,就是GPIO4、GPIO5死活不能用!
初始化我检查了N遍,结果还是一样!
__CONFIG(UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTEN & INTIO);

/**************************************************************************
*    函数原型: void ParaInit(void)
*    功                   能: 参数初始化
**************************************************************************/
void ParaInit(void){
        TMR0                    = TMR0_Value;
        time_10mS = vTime_10mS;
        time_100mS =vTime_100mS;
        time_1S = vTime_1S;
        time_1Min = vTime_1Min;
        time_1Hour= vTime_1Hour;
        time_10Hour = vTime_10Hour;       
}
/**************************************************************************
*    函数原型: void InitSys(void)
*    功                   能: 系统初始化
**************************************************************************/
void  InitSys(void){

        INTCON        =        0xd0;                //使能GP2/INT 外部中断,使能TMR0 溢出中断
        OPTION = 0x8f;
        CMCON  = 0x07;
        WPU    = 0x00;
        TRISIO = 0x00;
        GPIO   = 0xff;
        T1CON  = 0x08;
        TMR1IE          = 1;        //允许Timer1中断

        ParaInit();

}

/**************************************************************************
*    函数原型: void main(void)
*    功                   能: 主程序
**************************************************************************/
void main(void){
        InitSys();
        while(1){
                CLRWDT();
                GPIO=0xff;
                Delay_mS(100);
                GPIO=0x00;
                Delay_mS(100);
//                CommandDeal();
        }
}

就是上面这样直接置1或0,再延时也是毫无用处。
搞了2、3天了,还是一样!
期待大虾们的回复!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
flyunlimit
1楼-- · 2020-02-12 01:47
这里注意一下:

在OSC1(输入)和OSC2(放大器输出)引脚之间内
置有一个晶体振荡器电路。通过将控制位T1OSCEN
(T1CON<3>)置1 可使能该振荡电路。该振荡电路是
低功耗振荡电路,额定频率最高可达37 kHz。在休眠模
式中,它仍可继续工作。该振荡电路主要适用于32 kHz
晶振。表9-2 显示了Timer1 振荡器的可选电容。
Timer1 的振荡器与系统LP 振荡器共用。因此,只有当
系统时钟来自于内部振荡器时, Timer1 才能采用该模
式。与系统LP 振荡器相同,用户必须提供软件延时以
确保振荡器的正常起振。
当Timer1 振荡器被使能时,TRISIO4 和TRISIO5 置1。
GP4 和GP5 读作0,而TRISIO4 和TRISIO5 读作1。


你初始化里,有这句:T1CON  = 0x08:

你把LP振荡打开了。
结果就是:

当Timer1振荡器(就是指LP)被使能时,TRISIO4 和TRISIO5 置1。
GP4 和GP5 读作0,而TRISIO4 和TRISIO5 读作1。
qxs5264
2楼-- · 2020-02-12 05:57
楼上的果然厉害,问题确实在此处,非常感谢各位的帮助,哎!都怪我看资料不细心,再次感谢各位!
csuivan
3楼-- · 2020-02-12 06:35
我是新手,请多多指教

请问楼主 pic12f629 这个单片机能自己制作ISP下载线吗? 像at89s52那样的,那学起来就简单多了。

我现在在DIY   LED小手电的电路, 里面用到这个单片机对LED进行调光,然后用mos管扩流加大LED的驱动电流。
qxs5264
4楼-- · 2020-02-12 11:18
不能哦!

一周热门 更多>