又遇到问题了,关于PIC24FJ64GA004时钟震荡的问题

2019-03-25 18:44发布

PIC24FJ64GA004单片机时钟选择的改如何设置呢?我目前编写了个程序。用软件仿真SIM进行仿真延时函数        delay1s();延时的时间是160多ms.但是在proteus仿真软件上仿真的效果却是延时了3秒左右。LED亮3秒熄灭3秒左右循环。不知道哪里出了问题。老铁们帮忙看看。谢谢了。
附上程序和仿真图。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
dcexpert
1楼-- · 2019-03-26 01:50
现在的XC16中不是有延时函数了吗?只要设置好时钟就可以用
werjufour
2楼-- · 2019-03-26 02:41
dcexpert 发表于 2018-9-1 20:01
现在的XC16中不是有延时函数了吗?只要设置好时钟就可以用

我用的是c30编译器。我这里是什么出现问题了
werjufour
3楼-- · 2019-03-26 06:35
还有你这个定义我有点看不太懂哦

#define MACRO_CONCAT2_EXPAND(a, b)  a ## b
#define MACRO_CONCAT2(a, b)         MACRO_CONCAT2_EXPAND(a, b)
#define MACRO_CONCAT3_EXPAND(a, b, c) a ## b ## c
#define MACRO_CONCAT3(a, b, c)      MACRO_CONCAT3_EXPAND(a, b, c)

#define MACRO_ARG21(a, b)           a
#define MACRO_ARG22(a, b)           b

#define PIN_DIR(pin, DIR)            MACRO_CONCAT3(_TRIS, MACRO_ARG21(pin), MACRO_ARG22(pin)) = DIR
#define PIN_OUT(pin, OUT)            MACRO_CONCAT3(_LAT, MACRO_ARG21(pin), MACRO_ARG22(pin)) = OUT
#define PIN_IN(pin)                  MACRO_CONCAT3(_R, MACRO_ARG21(pin), MACRO_ARG22(pin))
dcexpert
4楼-- · 2019-03-26 08:26
werjufour 发表于 2018-9-1 20:20
还有你这个定义我有点看不太懂哦

#define MACRO_CONCAT2_EXPAND(a, b)  a ## b
#define MACRO_CONCAT2( ...

这个是宏的一种特殊用法,就是将两个内容合成一个,在使用一系列有规律的寄存器时非常有用,在很多程序里面也很常见的。

特别是希望程序自动适应不同型号的MCU时,使用这个方法自动配置对应的寄存器,对程序移植很有帮助。

C30中也有延时函数的,好像是__delay_ms(),要包含一个头文件才行。好久不用PIC单片机,有点记不清了。C30可以换成XC16,支持的功能更多。
werjufour
5楼-- · 2019-03-26 13:52
 精彩回答 2  元偷偷看……
werjufour
6楼-- · 2019-03-26 19:50
werjufour 发表于 2018-9-1 20:41
你这种宏定义第一次看见,所以看了都蒙圈了,一点都不知道啥意思。
我刚才哪个程序用c30怎么有解决的办 ...

为什么我实际的效果跟我软件上面的延时不一样呢?

一周热门 更多>