标题:
STC8H单片机关于外部时钟选择的疑惑(已解决)
[打印本页]
作者:
shendu0900
时间:
2022-10-12 14:39
标题:
STC8H单片机关于外部时钟选择的疑惑(已解决)
各位大佬,小弟最近跳转过来研究STC8H这款芯片,根据手册说明配置了外部晶振,但是下载后发现运行始终还是使用的内部晶振,请帮忙看下是哪里出了问题,谢谢。
P_SW2 |= 0x80;
CLKSEL |= 0x01;
CLKDIV = 0x01;
//HIRCCR &= 0x7f; 关闭内部IRC
XOSCCR = 0xc0;
while(!(XOSCCR & 0x01));
P_SW2 &=0x7f;
根据手册上写的时钟源选择应该是CKSEL,但是写这个会报错,看了下头文件里CLKSEL的地址和CKSEL是一样的,就直接用的这个。
我板子用的是24M无源晶振,代码如上,但是只要关闭内部IRC设置的定时就无法运行,请赐教。
作者:
xxxevery
时间:
2022-10-12 16:00
我是先启动外部晶振,待外部时钟稳定后再选择外部时钟,程序如下请参考:
P_SW2 |= 0x80;
XOSCCR = 0xC0; //启动外部晶振
while(!(XOSCCR&1)); //等待时钟稳定
CLKDIV = 0X00; //时钟不分频
CLKSEL = 0X01; //选择外部晶振
作者:
yzwzfyz
时间:
2022-10-12 17:04
设置成先用外部晶振就可以了。
如果设置报错,可以直接对它的地址进行操作,而不用寄存器符号(怀疑寄存器符号未被定义)。
作者:
wufa1986
时间:
2022-10-12 17:21
直接官方代码不可能有问题
作者:
dalaoshi
时间:
2022-10-12 17:50
我用过了,可以的:
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 P2.0
MOV A, #01H ;切换到外部晶振
MOV DPTR, #0FE00H ;CLSEL
MOVX @DPTR, A
MOV P_SW2, #00H
RET
作者:
hhh402
时间:
2022-10-12 21:01
我好奇的是楼主为什么要使用外部晶振?嫌弃内部晶振不准吗?
作者:
shendu0900
时间:
2022-10-13 09:51
感谢各位大佬回答,xxxevery的方法是可行的,看来确实要等待时钟稳定后才能操作。
我用外部晶振是因为最近尝试画了块开发板,预留有外部晶振借口方便以后测试用,在调试的时候发现这个问题所以来请教一下。
作者:
shendu0900
时间:
2022-10-13 09:53
感谢各位大佬解答, xxxevery提供的方法经过测试可行
作者:
shendu0900
时间:
2022-10-13 09:54
dalaoshi 发表于 2022-10-12 17:50
我用过了,可以的:
OSC:
感谢大佬回复,可惜小弟我还没有能力掌控汇编语言
作者:
shendu0900
时间:
2022-10-13 09:58
wufa1986 发表于 2022-10-12 17:21
直接官方代码不可能有问题
我实机测试过,使用STC-ISP生成STC8H的头文件里确实调用不了 CKSEL寄存器,官方生成的头文件里使用的是CLKSEL,映射的地址也是 CKSEL的地址,之前翻查过的资料又都是使用的 CKSEL,所以我也搞不清楚到底是哪里的问题
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1