[PIC®/AVR®/dsPIC®产品] [求助]PIC12F675 指令周期20us 不知道为何?

[复制链接]
 楼主| esidarap 发表于 2019-4-21 20:45 | 显示全部楼层 |阅读模式
#pragma config FOSC = INTRCCLK  
#pragma config WDTE = OFF        
#pragma config PWRTE = OFF      
#pragma config MCLRE = ON      
#pragma config BOREN = ON      
#pragma config CP = OFF         
#pragma config CPD = OFF        

#include <xc.h>
int i = 0;

void main(void) {                                                                  //Load Factory Calibration Value Into OSCCAL
    asm("BSF STATUS, 5");
    asm("CALL 3ffh");
    asm("MOVWF OSCCAL");
    asm("BCF STATUS, 5");
   
    WPU = 0x00;
    TRISIO = 0x00;

    GPIObits.GPIO5 = 0;
    while(1) {
        for(i=0;i<100;i++)
        {;}
        GPIObits.GPIO5 = 1;
        for(i=0;i<100;i++)
        {;}
        GPIObits.GPIO5 = 0;
    }
    return;
}
代码如上: GP4/CLKOUT 频率988kHz方波, GP5 频率只有259Hz.
不知道哪个寄存器还会影响指令周期?
多谢!
请叫我树人 发表于 2019-4-22 09:15 | 显示全部楼层
帮你顶一下吧!!!
Rock007 发表于 2019-4-22 09:48 | 显示全部楼层
不太清楚你想干什么。只是GP5输出一个方波?

首先确定你选的系统时钟,这个可以确定指令周期(时间);
再计算你的延时,就是 for(i=0;i<100;i++){;} 的占用时间。 调整这个延时时间,可以得到你想要的GP5的输出频率。
用IED自带的 stopwatch 功能做这个很方便的,先在 simulator 里把时钟配置好。
wooda 发表于 2019-4-22 10:34 | 显示全部楼层
看着是没有设定主时钟,另外要精确定时,还是得诶用定时器中断比较可靠准确。
 楼主| esidarap 发表于 2019-4-22 16:31 | 显示全部楼层
本帖最后由 esidarap 于 2019-4-22 16:34 编辑

哦? 那么说 pic12f7675这种芯片,就不太适合用C语言编译了。手册上说 P4/CLKOUT 的频率是Fosc的 1/4。所以988kHz应该是对的,这样的话,就是说for这块有问题了呗! 一个空语句加上for判断
大概20us?那是不是也太长了些!
systemchip 发表于 2019-4-23 00:25 | 显示全部楼层
675太老了,现在大部分器件可以支持32Mhz Fosc
淘猫汤姆 发表于 2019-4-23 19:49 来自手机 | 显示全部楼层
esidarap 发表于 2019-4-22 16:31
哦? 那么说 pic12f7675这种芯片,就不太适合用C语言编译了。手册上说 P4/CLKOUT 的频率是Fosc ...

写这种for循环不就是空耗时间吗,编译器体贴
天灵灵地灵灵 发表于 2019-4-23 22:08 | 显示全部楼层
楼主OUT了。
天灵灵地灵灵 发表于 2019-4-23 22:09 | 显示全部楼层
for循环体本身就要消耗好多个机器时钟
CoolSilicon 发表于 2019-4-24 10:09 | 显示全部楼层
你如果想精确计时的话, 用timer呗.
再不济用库函数__delay_us(), __delay_ms();
最后才是用for自己写, 并且这个时间不好控制的, 完全取决于编译器生成的代码量和你设置的循环次数...
david4383 发表于 2019-4-24 12:46 | 显示全部楼层
需要使用nop,进行精确延时,这种for本身就很多指令周期。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

70

帖子

0

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

5

主题

70

帖子

0

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