返回信息流初始化时钟,到了这句话就始终过不去了 while (!(OSCXCN & 0x80)); // 等待外部振荡器稳定
检测寄存器OSCXN的7位是否为1,为1代表晶体正在运行且稳定。
一直停在while处
具体程序如下,C8051F133单片机(看门狗已关闭)
void SYSCLK_Init (void)
{
int i; // 延时计数器
unsigned char SFRPAGE_save = SFRPAGE; // Save the current SFRPAGE
SFRPAGE = CONFIG_PAGE; // Switch to the necessary SFRPAGE
OSCXCN = 0x67; // 使用外部22.1184MHz晶振
for (i=0; i<256; i++); // 等待1ms
while (!(OSCXCN & 0x80)); // 等待外部振荡器稳定
CLKSEL = 0x01; // 系统时钟切换至外置晶振
OSCICN &= ~0x80; // 关闭内置晶振
SFRPAGE = SFRPAGE_save; // Restore the SFRPAGE
}
不知道大家是否遇到过此类问题,谢谢大家了
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #10999同步于 2011/8/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
谢谢大家了,51单片机外部晶振问题
BlueKo
2011/8/18镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
想问一句,怎样找到这个问题的呢,读手册?
可以给大家分享一下,定位和解决问题也是一种重要的能力
【 在 BlueKo 的大作中提到: 】
: 已解决,设置晶振频率的时候超过了晶振频率。。。。
这个真是突然想到了 一开始觉得软件配置肯定没问题 之前也上网找了各种资料 但基本都说的是硬件问题 比如晶振的电容值不匹配,主要是手头没有示波器 有的话知道外部晶振只有不到1M的频率在配置的时候就不会配错了 这个单片机以前没用过 外部晶振的配置需要自己选择晶振范围
可以试试内部晶振来排除问题。。
【 在 BlueKo (Sunflt) 的大作中提到: 】
: 这个真是突然想到了 一开始觉得软件配置肯定没问题 之前也上网找了各种资料 但基本都说的是硬件问题 比如晶振的电容值不匹配,主要是手头没有示波器 有的话知道外部晶振只有不到1M的频率在配置的时候就不会配错了 这个单片机以前没用过 外部晶振的配置需要自己选择晶振�