搜索
bottom↓
回复: 4

F9234自动复位

[复制链接]

出0入0汤圆

发表于 2011-3-29 00:36:44 | 显示全部楼层 |阅读模式
我用的是F9234,我设置成内部8MHZ时钟时全完正常工作。当我把它改成外部陶瓷晶振时,会来回自动复位。就是说原来用内部时钟时,我按下开机键打开电源,系统指示灯会亮起来(注:系统指示灯是由一个IO口控制,当上电时IO口输出高,灯亮)。如果我改成外部晶振时,我按下开机键之后系统指示灯在闪,很认真看才能看到在闪,因为它闪得很快。

出0入4汤圆

发表于 2011-3-29 08:43:32 | 显示全部楼层
一定是复位了吗?

出0入0汤圆

发表于 2011-3-29 18:39:50 | 显示全部楼层
看时钟配置位有没有问题,把狗关起来看看……

出0入0汤圆

 楼主| 发表于 2011-3-30 00:07:08 | 显示全部楼层
不敢确定是不是不停的在重复复位了!
我的设置如下:

/*====================== 选项字节配置 ==========================================*/
#pragma location = 0X0080
//__root const unsigned char XUAN=0X9c;   //选择内部8MHZ   注:打开内部时钟一切正常。

__root const unsigned char XUAN=0X99; // 设置成外部石英晶体  注:先择成外部晶体时不断的在重复复位。

/*================== 时钟初始化函数,系统时钟为8MHz ===========================*/
void clock()
{
  PPCC=0X00;
  PCC=0X00;
   
}

/*============================================================================
复位后初始化
============================================================================*/
void hdwinit(void)//复位后初始化
{
  /*----------------------------------------------------------------------------   
  初始化看门狗定时器 + 低电压检测 + 设置时钟
  ----------------------------------------------------------------------------*/
  
  /* 初始化看门狗定时器 */  
  WDTM  = 0x77;  /* 停止看门狗定时器的操作。 */
   
  /* 设置时钟 <1> */
  
  LSRCM = 0x01; /* 停止内部低速振荡器。 */
      
  /* 检查复位源信号 */
   
  if (!(RESF & 0x01))/* 在 LVI 复位期间,忽略后续 LVI 相关处理。 */
  {  
    /* 设置低电压检测 */
    LVIS  = 0x00;   /* 设置低电压检测电平(VLVI)为 4.3 V +-0.2 V。 */
    LVION = 1;      /* 低电压检测器操作使能。 */
   
    for (ucCnt200us = 0; ucCnt200us < 9; ucCnt200us++) /* 等待大约 200 us。 */
    {
      NOP();
    }
   
    while (LVIF)  /* 等待 VDD >= VLVI */
    {
      NOP();
    }  
    LVIMD = 0x1; /*如此设置以便当 VDD < VLVI 时产生内部复位信号。 */
  }
}

/*==========================INTTM80中断服务程序===============================*/
#pragma vector=INTTM80_vect
__interrupt void tm80(void)
{
LgkeyFlag = 1;   // 左边按键扫描标志  
RgkeyFlag = 1;   //右边按键扫描标志

TMIF80 = 0;     // 清除中断标志

return;
}


void main()
{
  
  hdwinit();      //复位后初始化
  LSRSTOP=0x01;   //停止低速内部振荡器  
  clock();        //时钟初始化
  PORT_Init();    //端口初始化
  
  /*==================TM8080中程序设置============================*/   
  __enable_interrupt();    //打开全局中断  不屏蔽 INTTM80 中断。

  TMMK80=0;                //打开tm80中断
  TMC80=0x06;              //设置工作在65536分频下
  CR80=0x5;                //设置比较寄存器5,产生中断时刚好是50MS钟

  EI();/* 向量中断使能。 */   
  IF0   = 0x00; /* 预先清除无效中断请求。 */  

/*==============================================================*/   
while(1)
  {
     if(KEY==0) SYS_ON=1;     
     else if (KEY==1)SYS_ON=0;                  
                  
}

我把程序做其它处理的东西全删掉了,关于时钟的设置就这些。

出0入0汤圆

 楼主| 发表于 2011-3-31 00:59:22 | 显示全部楼层
?????????????????????????????
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 14:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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