你的样子 发表于 2025-8-16 10:02:12

Ai8G1K08A芯片使用(初学遇到问题)

Ai8G1K08A芯片使用(初学遇到问题)

#include "STC8G.h"
void main(void)
{
   
    P3M0 |= 0x08;
    P3M1 &= 0xF7;
   
    while(1)
    {
      unsigned int i,j;
      P3 |= 0x08;   
      
      
      for(i=0;i<2000;i++)
            for(j=0;j<112;j++);
      
      P3 &= ~0x08;
      
      for(i=0;i<2000;i++)
            for(j=0;j<112;j++);
    }
}

我设置了2秒反转一次p3.3IO口,,用下载软件下载进去了,发现远没有两秒,感觉0.5秒就来回反转了,哪里出问题了


国芯人工智能 发表于 2025-8-16 10:03:00

STCG1K08A芯片是国芯科技推出的一款高性能、低功耗的8位单片机,适用于多种嵌入式应用。您在使用过程中遇到的问题可能与代码编写或硬件配置相关。以下是对您提供的代码片段的分析及建议。

首先,您引用了头文件“STC8Gh”,但该文件通常用于STC8G系列芯片,而STCG1K08A属于STC8H系列,正确的头文件应为“STC8H.h”。请确保您的开发环境已正确配置,并使用对应的头文件以避免编译错误。

接下来,您设置了P3M0和P3M1寄存器,将P3.3配置为推挽输出模式。这一部分逻辑正确,但需要注意的是,在实际应用中,还需根据具体需求设置其他引脚的功能。此外,P3端口的部分引脚具有复用功能,如串口、定时器等,需确保未与其他功能冲突。

在主循环中,您尝试通过P3 |= 0x08; 设置P3.3为高电平,但由于P3M0和P3M1的配置,该操作仅对P3.3有效。如果您的目标是控制某个外设(如LED),请确保该引脚连接正确,并检查外部电路是否正常。

关于循环中的变量i和j,您未完成循环体。建议补充完整代码逻辑,例如延时或状态检测,以实现预期功能。同时,注意变量类型的选择,避免因溢出导致程序异常。

最后,建议您参考国芯科技提供的官方文档和示例代码,了解STCG1K08A的具体寄存器配置及使用方法。如有进一步问题,可联系技术支持团队获取详细帮助。

综上所述,正确配置头文件、合理设置引脚模式,并完善代码逻辑是解决当前问题的关键。希望以上建议对您有所帮助。

[本文内容由国芯人工智能辅助生成,仅供参考]

C_wolf 发表于 2025-8-16 10:11:12

可以用软件算下时间

你的样子 发表于 2025-8-16 10:14:11

C_wolf 发表于 2025-8-16 10:11
可以用软件算下时间

stc8g1k08A,是用哪一个头文件老师

C_wolf 发表于 2025-8-16 10:21:18

用STC8H就行

https://www.stcai.com/syx
找个8H实验箱的例程做参考

梁工 发表于 2025-8-16 11:23:58

因为延时时间不是2秒。

#define   FOSC   24000000UL

//========================================================================
// 函数: voiddelay_ms(u16 ms),STC8xxx、AI8xxx系列
// 描述: 延时函数。
// 参数: ms: 要延时的ms数, 1~65535ms. 自动适应主时钟.
// 返回: none.
//========================================================================
voiddelay_ms(unsigned int ms)
{
        unsigned int i;
        do
        {
                i = (FOSC+5000) / 10000UL;
                while(--i)        ;
        }while(--ms);
}

delay_ms(2000);//这个才是延时2秒
页: [1]
查看完整版本: Ai8G1K08A芯片使用(初学遇到问题)