找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 606|回复: 9
打印 上一主题 下一主题
收起左侧

STC ISP下载软件如何将STC8H8K64U的时钟设置为外接晶振

[复制链接]
跳转到指定楼层
楼主
ID:1136941 发表于 2025-10-3 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC ISP下载软件如何将STC8H8K64U的时钟设置为外接晶振。一直都用的是内置RC时钟,现在需要用到外接晶振,不知道如何设置?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57657 发表于 2025-10-3 18:21 | 只看该作者
STC8H8K64U上电后配置特殊功能寄存器选择为外部晶振,具体配置方法见数据手册。
回复

使用道具 举报

板凳
ID:1136941 发表于 2025-10-3 18:50 | 只看该作者
npn 发表于 2025-10-3 18:21
STC8H8K64U上电后配置特殊功能寄存器选择为外部晶振,具体配置方法见数据手册。

谢谢回复
回复

使用道具 举报

地板
ID:1133081 发表于 2025-10-3 19:21 | 只看该作者
  1. #include "reg51.h"

  2. #define CLKSEL          (*(unsigned char volatile xdata *)0xfe00)
  3. #define CLKDIV          (*(unsigned char volatile xdata *)0xfe01)
  4. #define HIRCCR          (*(unsigned char volatile xdata *)0xfe02)
  5. #define XOSCCR          (*(unsigned char volatile xdata *)0xfe03)
  6. #define IRC32KCR        (*(unsigned char volatile xdata *)0xfe04)

  7. sfr     P_SW2       =   0xba;

  8. sfr     P0M1        =   0x93;
  9. sfr     P0M0        =   0x94;
  10. sfr     P1M1        =   0x91;
  11. sfr     P1M0        =   0x92;
  12. sfr     P2M1        =   0x95;
  13. sfr     P2M0        =   0x96;
  14. sfr     P3M1        =   0xb1;
  15. sfr     P3M0        =   0xb2;
  16. sfr     P4M1        =   0xb3;
  17. sfr     P4M0        =   0xb4;
  18. sfr     P5M1        =   0xc9;
  19. sfr     P5M0        =   0xca;

  20. void main()
  21. {
  22.     P0M0 = 0x00;
  23.     P0M1 = 0x00;
  24.     P1M0 = 0x00;
  25.     P1M1 = 0x00;
  26.     P2M0 = 0x00;
  27.     P2M1 = 0x00;
  28.     P3M0 = 0x00;
  29.     P3M1 = 0x00;
  30.     P4M0 = 0x00;
  31.     P4M1 = 0x00;
  32.     P5M0 = 0x00;
  33.     P5M1 = 0x00;

  34.     P_SW2 = 0x80;
  35.     CLKSEL = 0x00;                              //选择内部IRC ( 默认 )
  36.     P_SW2 = 0x00;

  37. /*
  38.     P_SW2 = 0x80;
  39.     XOSCCR = 0xc0;                              //启动外部晶振
  40.     while (!(XOSCCR & 1));                      //等待时钟稳定
  41.     CLKDIV = 0x00;                              //时钟不分频
  42.     CLKSEL = 0x01;                              //选择外部晶振
  43.     P_SW2 = 0x00;
  44. */

  45. /*
  46.     P_SW2 = 0x80;
  47.     IRC32KCR = 0x80;                            //启动内部32K IRC
  48.     while (!(IRC32KCR & 1));                    //等待时钟稳定
  49.     CLKDIV = 0x00;                              //时钟不分频
  50.     CLKSEL = 0x03;                              //选择内部32K
  51.     P_SW2 = 0x00;
  52. */

  53.     while (1);
  54. }

复制代码
回复

使用道具 举报

5#
ID:584814 发表于 2025-10-3 19:42 | 只看该作者
除非特别要求,当下用STC无需外加那个东东。
如果要加,参手册就好。手册可去官网下载的。
回复

使用道具 举报

6#
ID:1136941 发表于 2025-10-3 23:17 | 只看该作者
man1234567 发表于 2025-10-3 19:42
除非特别要求,当下用STC无需外加那个东东。
如果要加,参手册就好。手册可去官网下载的。

明白,多谢大师
回复

使用道具 举报

7#
ID:879809 发表于 2025-10-5 01:57 | 只看该作者
AVR单片机有熔丝位fuse,某些Cortex-M单片机有option bytes来控制。

如果编程软件里面没有这些选项,那就只能软件控制,现代单片机大都是默认RC振荡器做时钟,软件运行起来再选择时钟来源。
回复

使用道具 举报

8#
ID:283954 发表于 2025-10-5 03:01 | 只看该作者
使用外部晶振:

OSC:
MOV P_SW2, #80H
MOV A, #11000000B  ;使能外时钟,无源晶振
MOV DPTR, #0FE03H  ;XOSCCR
MOVX @DPTR, A
OSC1:              ;等待稳定
MOVX A, @DPTR
ANL A, #00000001B
JZ OSC1

CLR LAMP

MOV A, #01H        ;切换到外部晶振
MOV DPTR, #0FE00H  ;CLSEL
MOVX @DPTR, A
MOV P_SW2, #00H
RET
回复

使用道具 举报

9#
ID:1159461 发表于 2025-10-6 12:05 | 只看该作者
程序里配置一下,不过内置的已经够用了,还不精确?
回复

使用道具 举报

10#
ID:1034262 发表于 2025-10-6 13:56 | 只看该作者
STC8系列、STC32系列、Ai8051U系列的外部晶振要使用软件启动:
        P_SW2 = 0x80;
        XOSCCR = 0xc0;                              //启动外部晶振
        while (!(XOSCCR & 1));                      //等待时钟稳定
        CLKDIV = 0x00;                              //时钟不分频
        CKSEL  = 0x01;                               //选择外部晶振
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表