加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SyncMOS 新茂单片机示例程序

(2007-07-29 21:51:00)
标签:

syncmos

新茂

单片机

示例程序

例程

 

      1.使用看门狗的程序 示例
      2.可反复进入ISP的程序 示例
      3.利用剩余的Falsh空间存储数据 示例
      关键提示:CODE的绝对定位,方法在code_at.c中

      -------------------------------------------------------------
      // 使用看门狗的程序 示例
      -------------------------------------------------------------
      void WDTC_DOG(void)//在8958A/5964上,看门狗都能正常工作。
      {
       WDTKEY = 0x1e;
       WDTKEY = 0xe1;//set
       , WDTC = 0xa7;//dog_data; //喂狗 
      //    SCONF = 0x01; //关ALEI
       WDTKEY = 0xe1;
       WDTKEY = 0x1e;//only read
      }
      void CLOSE_DOG(void)//关狗
      {
       WDTKEY = 0x1e;
       WDTKEY = 0xe1;//set
       WDTC = 0x00;//dog_data; //喂狗 
       WDTKEY = 0xe1;
       WDTKEY = 0x1e;//only read
      }
      -------------------------------------------------------------
      // 可反复进入ISP的程序 示例
      -------------------------------------------------------------
      //条件判断,是否进入ISP
      if(!P1_6 && !P1_7)//条件由自己任意发挥...
      {
      ISP_ok = 1;//进入ISP 条件成立
      }

      if(ISP_ok != 0)//test ISP                      
      {
      ISP_ok = 0;
      CLOSE_DOG();//关狗
      BEEP = 0;//TEST
      DelayMs(100);
      BEEP = 1;//TEST
      GoToIsp();
      }
      -------------------------------------------------------------
      //利用剩余的Falsh空间存储数据 示例
      -------------------------------------------------------------
      //Flash页擦除
      ISPFAH = (uchar)(((uint)Nkey_a)>>8);
      ISPFAL = (uchar)Nkey_a;
      ISPFD  = 0x55;
      ISPFD  = 0xaa;
      ISPFD  = 0x55;
      ISPC   = 0x82;//start to Page erase (512 byte)

      //写Flash
      ISPFAH = (uchar)(((uint)Nkey_a)>>8);
      ISPFAL = (uchar)Nkey_a;
      for(i=0;i<6;i++)//连续写6字节
      {
      ISPFD  = data_buf[i];
      ISPC   = 0x80;//start to program
      ISPFAL ++;
      }
      DelayMs(200);//此延时是必须的!
      -------------------------------------------------------------
      //CODE的绝对定位 方法
      -------------------------------------------------------------
      //不能这样定义:unsigned char code Nkey_a[6] _at_ 0x0E000;
      //而是在BL51 Locate 下的 Code Range 栏填入: ?CO?CODE_AT(0E000h)
      //菜单路径: Project / Options fo Target 'Target1' /

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有