vb2002 发表于 2026-6-15 10:20:43

delay不准,主频用的12m,实际用delay要大4倍 | 已解决

delay不准, 也找不到原因了.
12m主频, 然后用软件生成的软件延时也不准
应该是时钟的问题, 万用表测试 主时钟100分频, 也能得到120khz










神农鼎 发表于 2026-6-15 10:51:34


用最新软件生成

深圳国芯人工智能有限公司-工具软件



vb2002 发表于 2026-6-15 10:35:02

已解决,我用的xdata , 把delay_ms里面的uint16_i 改成 uint16 data_i; 就好了

狂热主宰 发表于 2026-6-15 10:36:06

程序中有没有调整时钟操作

狂热主宰 发表于 2026-6-15 10:40:13

vb2002 发表于 2026-6-15 10:35
已解决,我用的xdata , 把delay_ms里面的uint16_i 改成 uint16 data_i; 就好了

Xdata类型访问速度比较慢
软件ISP默认用快的
data或edata

乘风飞扬 发表于 2026-6-15 10:42:17

烧录附件例子里的hex文件到芯片里试试。
#include "stc8h.h"

void Delay1000ms(void)        //@12.000MHz
{
        unsigned char data i, j, k;

        _nop_();
        _nop_();
        i = 61;
        j = 225;
        k = 62;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void main()
{
    P_SW2 |= 0x80;//扩展寄存器访问使能

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x10;   //设置为准双向口,P54推挽输出
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
   
//    P5SR &= ~0x10;

    while(1)
    {
      P54 = 0;
      Delay1000ms();
      P54 = 1;
      Delay1000ms();
    }
}

lcwswust 发表于 2026-6-15 10:45:32

看来是变量所在的区域影响,查到速度排名:data>idata>xdata。

vb2002 发表于 2026-6-15 11:48:18

神农鼎 发表于 2026-6-15 10:51
用最新软件生成

深圳国芯人工智能有限公司-工具软件

我用的6.96g, 刚看了6.96x 都有加data了.
好评

vb2002 发表于 2026-6-15 11:48:50

狂热主宰 发表于 2026-6-15 10:36
程序中有没有调整时钟操作

和频率没关系,我测了频率是对的..xdata和data的问题

vb2002 发表于 2026-6-15 11:49:31

乘风飞扬 发表于 2026-6-15 10:42
烧录附件例子里的hex文件到芯片里试试。

感谢老哥, 已经解决了.是xdata的问题 . 用data好了.
页: [1] 2
查看完整版本: delay不准,主频用的12m,实际用delay要大4倍 | 已解决