dsPic可以不用外置晶振吗?以及一起的3个问题。谢谢

2020-02-09 11:33发布

我最近在研究dsPic30f2012,就写了那么2行代码
其中,2-5脚连接了4个led,led的另一端接了电阻后接电源。
#include "p30f2012.h"
int main(void)
{
        PORTB=0x0000;
        TRISB=0x0000;
        while(1)
        {
                PORTB=0x00;
                asm("nop");
                PORTB=0xff;
                asm("nop");
        }
}
系统使用内部RC振荡器,FRC 4X。
现有问题如下:
1,PIC可以象AVR一样通过“熔丝”设置内部(外部)晶振么?如果是,是configuration bits么?
2,如果是如上所猜测,那么,这个设置如何设置到PIC里面使其生效?界面上好像没有“写入”等类似按钮。
3,我在使用过程中还发现一个奇怪的问题,上面程序在单步调试的时候,可以看到LED在亮灭交替,但是将程序下载到单片机后,就看不见LED动了。基本上就是不亮。请问:pic是不是跟AVR一样,程序下载后,直接就可以运行?因为我尝试过重新上电,LED也不亮。或者需要将那根引脚处理后才能运行其内部程序?
谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
42条回答
zxq6
1楼-- · 2020-02-09 14:23
我是新手,有没有高手顺便帮忙看看?
bozai
2楼-- · 2020-02-09 16:14
没用过30的,pic的镕丝位是一个存在一个地址空间的,直接包含在hex文件中,不需要修改,当然有的变成器是可以修改的。
可以直接在代码中配置这些位的,也可以在maplab下有个菜单直接配的。

至于程序运行,我之前调试时是可以运行的,不过pic的调试太滥了,忒慢了点,所以我都不用。pic的icd2调试是占用一定系统资源的。所以它的默lkr文件有两种
hlwjx
3楼-- · 2020-02-09 21:55
配置内/外晶振可以在MPLAB IDE的莱单Configure下的Configuration bits里设定,另外也可以在程序开始处直接写好,像我用pic16f946时,直接写" __CONFIG       _CP_OFF & _WDT_OFF & _BOD_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT  & _CPD_OFF"就好了,省得写程序时还得配置

另外你的灯基本不亮,应该是你延时太短的缘故吧,建议你asm("nop")多放几个试试
zxq6
4楼-- · 2020-02-10 02:00
谢谢楼上。我尝试过使用mplab的debug下面的run,都可以看见led亮的啊。只是不能看见交替的亮灭而已。
leofoolish
5楼-- · 2020-02-10 04:55
 精彩回答 2  元偷偷看……
andyjuly
6楼-- · 2020-02-10 09:04
改成LATB也不行,我试过LZ的程序了,当输出为高的时候LED亮,连续运行看不到什么交替过程,全亮了,因为两条指令之间的延时太小了。

一周热门 更多>