打印

PIC12F629 GPIO的问题

[复制链接]
3989|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿尔法99|  楼主 | 2013-5-11 19:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于不能仿真,使用编程器(深圳乾龙盛的QL-2006)烧写程序,以下观察都是用示波器所得。烧写了两片,现象都一样,。
1、现象:
    GPIO00不能输出或者输出电平不变,一直为高电平。GPIO01、GPIO02可以输入,也可以输出。
2、连接:
   GPIO00控制LED, GPIO00---LED---电阻----VCC
3、初始化如下:
        CMCON=0x07;   //关闭比较器
        TRISIO=0x3f;  //IO设为输入  IO口只在需要输出的时候设置为输出,待机时为输入
        WPU=0;        //关闭上拉
        INTCON=0x00;
        OPTION=0x8f;  //128分频
        IOCB=0;       //管脚中断控制关闭
        VRCON=0;      //基准源
        T1CON=0;

4、配置如下:

    __CONFIG(PROTECT & CPD & MCLRDIS & PWRTDIS & BORDIS & INTIO & WDTEN);

相关配置字在头文件里如下定义:

/* Protection of data block */
#define CPD        0x3EFF                /* data protect on */
#define UNPROTECT        0x3FFF         /* data protect off */

/* Protection of program code */
#define PROTECT        0x3F7F                 /* code protection on */
#define UNPROTECT        0x3FFF         /* code protection off */

/* Brown out detection enable */
#define BOREN        0x3FFF                 /* brown out reset enabled */
#define BORDIS        0x3FBF                 /* brown out reset disabled */

/* Memory clear enable */
#define MCLREN        0x3FFF                 /* memory clear function enabled */
#define MCLRDIS        0x3FDF                 /* memory clear function disabled */

/* Power up timer enable */
#define PWRTDIS        0x3FFF                 /* power up timer disabled */
#define PWRTEN        0x3FEF                 /* power up timer enabled */

/* Watchdog timer enable */
#define WDTEN        0x3FFF                 /* watchdog timer enabled */
#define WDTDIS        0x3FF7                 /* watchdog timer disabled */

/* Oscillator configurations */
#define RCCLK        0x3FFF                 /* GP4 = clock out signal/GP5 = RC osc */
#define RCIO        0x3FFE                 /* GP4 = IO/GP5 = RC osc */
#define INTCLK        0x3FFD                 /* internal osc/GP4 = clock out signal/GP5 = IO */
#define INTIO        0x3FFC                 /* internal osc/GP4 = IO//GP5 = IO */
#define EC        0x3FFB                 /* external clock */
#define HS        0x3FFA                 /* high speed crystal/resonator */
#define XT        0x3FF9                 /* crystal/resonator */
#define LP        0x3FF8                 /* low power crystal/resonator */

        请教版主及各位好心人士,这个问题原因是什么,并如何解决?
沙发
阿尔法99|  楼主 | 2013-5-11 20:40 | 只看该作者
编程器有配置位设置。说明书上指出若程序有配置可以不选。把配置选项去掉后,所有IO都不正常了。估计问题出在配置上。

使用特权

评论回复
板凳
弓长月月鸟| | 2013-5-12 10:09 | 只看该作者
第一、IOCB 寄存器在629中存在吗?
第二、QL-2006软件界面下也有关于配置位的选项,是否跟你程序中的配置要求一样。
第三、GPIO0_0在输出时是否又设置为输出口。
请楼主查看一下。
仅供参考。。。。。

使用特权

评论回复
地板
yewuyi| | 2013-5-13 09:01 | 只看该作者
1、你确定你搞清楚MCLRDIS 、PWRTDIS 、BORDIS 、 INTIO这四个配置位的作用了吗?你确定你是按照这个配置位设计软硬件的吗?
2、 GPIO00上是否有其它复用功能?你确定你是否已经关闭了这些功能?
3、你是否确定GPIO00的输入输出方向已经正确设置?
4、你是否确定GPIO00的输出电平已经正确设置?
5、你是否确定已经将应用程序正确的烧入芯片?
6、建议购买一个官方的PICKIT3工具,尽量不要用非官方的开发工具,KIT3也很便宜,大概100元左右把。

使用特权

评论回复
5
阿尔法99|  楼主 | 2013-5-14 11:27 | 只看该作者
KIT3这边便宜啊。真后悔买了一个不便宜的编程器。现在已经调通了。的确是配置的问题。感觉是编程器的配置起最终作用。

使用特权

评论回复
6
yklstudent| | 2013-5-14 11:29 | 只看该作者
用灌了ICD3 感觉这个好使  比ICD2好用多了
其它但是没用过

使用特权

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

本版积分规则

21

主题

219

帖子

1

粉丝