这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » R8C/1A使用内部时钟程序

共8条 1/1 1 跳转至

R8C/1A使用内部时钟程序

菜鸟
2008-07-24 14:28:23     打赏
各位好,我是个新手,恳请多多指教。

这是我写的使用内部时钟程序,可编译时一直死在那里,不能进入,估计是这个程序有问题,恳请高手们帮忙诊断。万分感谢。

void ClockInit(void)
{
  ocd2=1;                  //选择内部振荡器时钟//
  hra00=1;                //高速内部振荡器振荡//
  delay(1000);
  hra1=0;                  //使用系统默认的高速内部振荡器8MHz//
  delay(1000);
  cm14=0;   
  hra01=1;                //使用内部高速振荡器时钟(Fring-fast)作为内部时钟(Fring)//
  ocd2=1;                  //使用内部时钟作为系统时钟//
}



关键词: 使用     内部     时钟     程序    

菜鸟
2008-07-24 16:01:53     打赏
2楼
谢谢管理员,我是使用内部时钟作为主时钟的(也就是您说的后者),加了句cm05=1(主时钟停止,使用p4.6和p4.7作为输入端口使用)

菜鸟
2008-07-27 11:24:09     打赏
3楼

各位好,我的这个程序内部晶振工作了吗?
有个弱智问题,如果晶振不工作,I/0口是不是也不能用的?


菜鸟
2008-07-27 13:44:28     打赏
4楼
各位大哥,帮帮忙啊。万分感激。
void ClockInit(void)
{
 cm05=1;
 prc0 = 1;    //打开和时钟相关的保护寄存器
 //cm05=1;       //主时钟停止,使用p4.6和p4.7作为输入端口使用
    cm16 = 0;  //CPU时钟不分频
    cm17 = 0;
    cm06 = 0;  //使用CM16和CM17设定的分频比
    hra00 = 1;  //启动高速时钟
    ocd2 = 1;   //使用片内时钟
    hra01 = 1;  //使用高速时钟
    prc0 = 0;    //关闭保护
}

内部晶振貌似开启了,可延时程序一直进不去是怎么回事?

菜鸟
2008-07-27 14:37:50     打赏
5楼
我的延时程序:
void delay(unsigned int time)
{
 for (i=0;i<time;i++)
 {
     asm("nop");
     asm("nop");
  asm("nop");
     asm("nop");
  asm("nop");
     asm("nop");
      asm("nop");
   asm("nop");
 }
}
调试时,能进去,但是我执行这段程序时,用   
for(i=0;i<1000;i++)
   {
    delay(10000);
   }
按理,我使用内部8M时钟,这里应该是10s,可结果是一秒不到就过了。。。问题出在哪?
在线等,谢谢大哥们了。。。

菜鸟
2008-07-28 16:23:18     打赏
6楼
非常感谢Fishs_new_life 和ammiezhang的热心回答,我的延时问题已解决,的确是全局变量搞的怪。
我有另一个疑问是:我使用了8M的内部高速振荡器。也就是8个NOP应该是(1/8M)*8=1us,理论上应该是这样吧?但我测试过,1000,000理论上是1s,而实际是4.6s左右,2000,000是8.83s(我用秒表估测的)。
我知道这个内部晶振精度不高,但好像也差太多了吧?不知道我哪里理解错了,请赐教。谢谢!

菜鸟
2008-07-28 20:39:52     打赏
7楼

谢谢大哥,可是我还在想+-5%不可能有这么大的误差的啊,我计算有错吗?


菜鸟
2008-07-29 12:41:59     打赏
8楼
这么详细的解释,让我受益颇深,再次向几位大哥致以真挚的谢意!谢谢~

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]