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条回答
millwood0
1楼-- · 2020-02-13 19:10
"PORTB=0x00;
asm("nop");
PORTB=0xff;
asm("nop"); "

you should put sufficient amount of delay in between the ON's and OFF's.

try this:

PORTB^=0xff;
delay(1000);

delay() is a delay routine:

void delay(long int dly) {
  while (dly--)
    ;
}

hope it helps.
tiancaigao7
2楼-- · 2020-02-13 22:10
dsPIC的IO输出最好不要直接对portx赋值,应该使用专门的输出锁存器LATX赋值,这样可以保证不会出现什么问题。
portx
3楼-- · 2020-02-14 03:28
楼主,检查下复位电路看看是不是忘记加上拉电阻了。30F系列的片子没有那么多麻烦,和16F差不多就是多了几个中断和中断优先级的问题。
32楼的这位,目前的C30可以直接对PROTX赋值了,不需要经过那个LATX寄存器了。早期的ASM环境是需要用LATX进行中转一下的。
LiAsO
4楼-- · 2020-02-14 09:27
咳咳,开始学写pic单片机编程了,特此mark之。
askhua520
5楼-- · 2020-02-14 12:32
 精彩回答 2  元偷偷看……
frmngil
6楼-- · 2020-02-14 18:04
mark

一周热门 更多>