delay不准,主频用的12m,实际用delay要大4倍 | 已解决
delay不准, 也找不到原因了.12m主频, 然后用软件生成的软件延时也不准
应该是时钟的问题, 万用表测试 主时钟100分频, 也能得到120khz
用最新软件生成
深圳国芯人工智能有限公司-工具软件
已解决,我用的xdata , 把delay_ms里面的uint16_i 改成 uint16 data_i; 就好了 程序中有没有调整时钟操作 vb2002 发表于 2026-6-15 10:35
已解决,我用的xdata , 把delay_ms里面的uint16_i 改成 uint16 data_i; 就好了
Xdata类型访问速度比较慢
软件ISP默认用快的
data或edata 烧录附件例子里的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();
}
}
看来是变量所在的区域影响,查到速度排名:data>idata>xdata。 神农鼎 发表于 2026-6-15 10:51
用最新软件生成
深圳国芯人工智能有限公司-工具软件
我用的6.96g, 刚看了6.96x 都有加data了.
好评 狂热主宰 发表于 2026-6-15 10:36
程序中有没有调整时钟操作
和频率没关系,我测了频率是对的..xdata和data的问题 乘风飞扬 发表于 2026-6-15 10:42
烧录附件例子里的hex文件到芯片里试试。
感谢老哥, 已经解决了.是xdata的问题 . 用data好了.
页:
[1]
2