还是关于pic12f629的问题

[复制链接]
4954|25
 楼主| daerjun 发表于 2013-3-29 11:26 | 显示全部楼层 |阅读模式
汇编程序运行正常,如下:
                    include "P12F629.INC"
                    __CONFIG _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON &_CP_ON & _CPD_ON & _INTRC_OSC_NOCLKOUT

                ORG       0x0                 
                GOTO      L_101                 
L_101        MOVLW     0x08           
                BSF       STATUS,RP0     
                MOVWF     TRISIO               
                BCF       STATUS,RP0         
                MOVLW     0x07            
                MOVWF     CMCON         
                MOVLW     0x07   
                MOVWF     GPIO  
                MOVLW     0x00   
                MOVWF     GPIO         
                END

但是c程序就是不行,如下:
#include<pic.h>
__CONFIG ( FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_OFF & CP_ON & CPD_ON);
void delay( unsigned char x )
{
unsigned char i,j;
for(i=0;i<x;i++)
  for(j=0;j<110;j++);
}

void main(void)
{   
        TRISIO=0x08;
        CMCON = 0x07;
        while(1)
        {
                GPIO=0x00;
                delay(10);
                GPIO0=0x03;
                delay(10);         
        }
}
到底什么原因啊,mplab ide v8.88,picc v9.83,烧写器是pickit2


yewuyi 发表于 2013-3-29 11:42 | 显示全部楼层
如何不行?

难道问问题,还需要让别人猜到底是什么不行吗?
 楼主| daerjun 发表于 2013-3-29 11:46 | 显示全部楼层
yewuyi 发表于 2013-3-29 11:42
如何不行?

难道问问题,还需要让别人猜到底是什么不行吗?

就是c程序在片子上运行不了,io口没有变化,但是汇编io就可以
 楼主| daerjun 发表于 2013-3-29 11:47 | 显示全部楼层
yewuyi 发表于 2013-3-29 11:42
如何不行?

难道问问题,还需要让别人猜到底是什么不行吗?

版主帮忙分析下什么原因呐
yklstudent 发表于 2013-3-29 15:01 | 显示全部楼层
楼主用示波器看过引脚了吗?
 楼主| daerjun 发表于 2013-3-29 16:01 | 显示全部楼层
yklstudent 发表于 2013-3-29 15:01
楼主用示波器看过引脚了吗?

看过了,没有变化
 楼主| daerjun 发表于 2013-3-29 16:05 | 显示全部楼层
yklstudent 发表于 2013-3-29 15:01
楼主用示波器看过引脚了吗?

刚才听一高手讲是否因为config没有正确配置,导致单片机没有复位,从而代码没有运行起来?
yewuyi 发表于 2013-3-29 16:39 | 显示全部楼层
1、你首先要搞清楚 FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_OFF & CP_ON & CPD_ON这些关键字的具体作用。
2、你确定你是使用的INTRC振荡吗?
3、你确定你不需要BOREN低压检测复位吗?
4、其它代码不想看,你自己看数据手册对着检查吧。
 楼主| daerjun 发表于 2013-3-29 16:47 | 显示全部楼层
yewuyi 发表于 2013-3-29 16:39
1、你首先要搞清楚 FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_OFF & CP_ON & CPD_ON这些关 ...

确定用的是INTRC,这是参考头文件写的。之前一直以为只要晶振选对的话,单片机就可以正常工作,config的其他的功能都可有可无,原来是错误的,需要配合使用
baoshi_libo 发表于 2013-3-29 17:06 | 显示全部楼层
GPIO=0x00;
delay(10);
GPIO0=0x03;//这是啥?GIOP0?
delay(10);
工作时间长了就会发现,问题都得自己细心解决
 楼主| daerjun 发表于 2013-3-29 17:08 | 显示全部楼层
baoshi_libo 发表于 2013-3-29 17:06
GPIO=0x00;
delay(10);
GPIO0=0x03;//这是啥?GIOP0?

这个是GPIO,当时传的时候可能没改好,跟这个应该没有关系
yklstudent 发表于 2013-3-29 21:46 | 显示全部楼层
我很好奇楼主问题到底解决没
谈的元 发表于 2013-3-29 23:02 | 显示全部楼层
对比C写的反汇编语句与汇编写的代码,找差别,

配置改成与汇编写法的一样测试找差别
hjl123 发表于 2013-3-30 09:04 | 显示全部楼层
C语言:GPIO0改成GPIO就可
jiabin1024 发表于 2013-3-30 14:56 | 显示全部楼层
仿真一下就解决了问题
HORSE7812 发表于 2013-3-31 11:10 | 显示全部楼层
572523392 发表于 2013-4-1 09:01 | 显示全部楼层
你要配置晶振
 楼主| daerjun 发表于 2013-4-1 09:40 | 显示全部楼层
hjl123 发表于 2013-3-30 09:04
C语言:GPIO0改成GPIO就可

这个是误写,应该没有关系的
 楼主| daerjun 发表于 2013-4-1 09:41 | 显示全部楼层
jiabin1024 发表于 2013-3-30 14:56
仿真一下就解决了问题

正在学习仿真中
 楼主| daerjun 发表于 2013-4-1 09:42 | 显示全部楼层
572523392 发表于 2013-4-1 09:01
你要配置晶振

晶振配置了啊 FOSC_INTRCIO
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

38

帖子

1

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