打印

还是关于pic12f629的问题

[复制链接]
4198|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
如何不行?

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

版主帮忙分析下什么原因呐

使用特权

评论回复
5
yklstudent| | 2013-3-29 15:01 | 只看该作者
楼主用示波器看过引脚了吗?

使用特权

评论回复
6
daerjun|  楼主 | 2013-3-29 16:01 | 只看该作者
yklstudent 发表于 2013-3-29 15:01
楼主用示波器看过引脚了吗?

看过了,没有变化

使用特权

评论回复
7
daerjun|  楼主 | 2013-3-29 16:05 | 只看该作者
yklstudent 发表于 2013-3-29 15:01
楼主用示波器看过引脚了吗?

刚才听一高手讲是否因为config没有正确配置,导致单片机没有复位,从而代码没有运行起来?

使用特权

评论回复
8
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、其它代码不想看,你自己看数据手册对着检查吧。

使用特权

评论回复
9
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的其他的功能都可有可无,原来是错误的,需要配合使用

使用特权

评论回复
10
baoshi_libo| | 2013-3-29 17:06 | 只看该作者
GPIO=0x00;
delay(10);
GPIO0=0x03;//这是啥?GIOP0?
delay(10);
工作时间长了就会发现,问题都得自己细心解决

使用特权

评论回复
11
daerjun|  楼主 | 2013-3-29 17:08 | 只看该作者
baoshi_libo 发表于 2013-3-29 17:06
GPIO=0x00;
delay(10);
GPIO0=0x03;//这是啥?GIOP0?

这个是GPIO,当时传的时候可能没改好,跟这个应该没有关系

使用特权

评论回复
12
yklstudent| | 2013-3-29 21:46 | 只看该作者
我很好奇楼主问题到底解决没

使用特权

评论回复
13
谈的元| | 2013-3-29 23:02 | 只看该作者
对比C写的反汇编语句与汇编写的代码,找差别,

配置改成与汇编写法的一样测试找差别

使用特权

评论回复
14
hjl123| | 2013-3-30 09:04 | 只看该作者
C语言:GPIO0改成GPIO就可

使用特权

评论回复
15
jiabin1024| | 2013-3-30 14:56 | 只看该作者
仿真一下就解决了问题

使用特权

评论回复
16
HORSE7812| | 2013-3-31 11:10 | 只看该作者
mark

使用特权

评论回复
17
572523392| | 2013-4-1 09:01 | 只看该作者
你要配置晶振

使用特权

评论回复
18
daerjun|  楼主 | 2013-4-1 09:40 | 只看该作者
hjl123 发表于 2013-3-30 09:04
C语言:GPIO0改成GPIO就可

这个是误写,应该没有关系的

使用特权

评论回复
19
daerjun|  楼主 | 2013-4-1 09:41 | 只看该作者
jiabin1024 发表于 2013-3-30 14:56
仿真一下就解决了问题

正在学习仿真中

使用特权

评论回复
20
daerjun|  楼主 | 2013-4-1 09:42 | 只看该作者
572523392 发表于 2013-4-1 09:01
你要配置晶振

晶振配置了啊 FOSC_INTRCIO

使用特权

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

本版积分规则

5

主题

38

帖子

1

粉丝