文章列表
 
2006/7/22 16:21:05
[很高兴地看到有网站把该文做为技术资料保存下来了]

给大家看看,这样的操作系统!

谁能争锋???

这是一个关于FPPA TM 的程序设计框架

FPP0~FPP7各自单独运行,而且变量共享.

高手只要3分钟就会发现,原来世界可以如此奇妙!!!

//不需要任何的RAM资源

上电复位时只有fpp0_boot启动

   .romadr 0x0000

    goto   fpp0_boot

    goto   fpp1_boot

    goto   fpp2_boot

    goto   fpp3_boot

    goto   fpp4_boot

    goto   fpp5_boot

    goto   fpp6_boot

    goto   fpp7_boot

   .romadr 0x10

    goto   interrupt

fpp0_boot:

//一下是必要的操作

    mov a,0xxx ;

    mov eoscr,a //选择系统时钟源寄存器操作

    mov a, 0xxx ;

    mov clkmd   //设置系统时钟分频及其他

    mov a, STACK_FPP0

    mov sp,a    //设置MCU0的堆栈指针

//-------------------------------------

    mov a ,0xxx

    mov fppen,a  //设置需要使能的运行MCU

    fpp0其他初始化,如端口和特殊功能寄存器初始化

fpp0_loop:   

   用户程序

    ........

    goto fpp0_loop

/***********************************************/

fpp1_boot:

    mov a, 0xxx

    mov sp, a //设置fpp1的堆栈指针

    fpp1的其他初始化

fpp1_loop:

    用户程序

    ........

    goto fpp1_loop

/************************************************/

/************************************************/

fpp2_boot:

    mov a, 0xxx

    mov sp, a //设置fpp2的堆栈指针

    fpp2的其他初始化

fpp2_loop:

    用户程序

    ........

    goto fpp2_loop

/************************************************/

/************************************************/

fpp3_boot:

    mov a, 0xxx

    mov sp, a //设置fpp3的堆栈指针

    fpp3的其他初始化

fpp3_loop:

    用户程序

    ........

    goto fpp3_loop

/************************************************/

/***********************************************/

fpp4_boot:

    mov a, 0xxx

    mov sp, a //设置fpp4的堆栈指针

    fpp4的其他初始化

fpp4_loop:

    用户程序

    ........

    goto fpp4_loop

/************************************************/

/***********************************************/

fpp5_boot:

    mov a, 0xxx

    mov sp, a //设置fpp5的堆栈指针

    fpp5的其他初始化

fpp5_loop:

    用户程序

    ........

    goto fpp5_loop

/************************************************/

/***********************************************/

fpp6_boot:

    mov a, 0xxx

    mov sp, a //设置fpp6的堆栈指针

    fpp6的其他初始化

fpp6_loop:

    用户程序

    ........

    goto fpp6_loop

/************************************************/

/***********************************************/

fpp7_boot:

    mov a, 0xxx

    mov sp, a //设置fpp7的堆栈指针

    fpp7的其他初始化

fpp7_loop:

    用户程序

    ........

    goto fpp7_loop

/************************************************/

 欢迎下载电子文档:FPPA TM程序设计框架.rar

在51论坛上,有朋友问"程序是否只能跑这8个循环,怎么进入其他的程序块呢?"

针对以上的提问,现做如下补充:

//你可以这样设计程序来解决该问题,
//假如你有n个小模块程序,而这n个小模块程序都可以同个其中一个程序指针来调用.
//看看下面的结构,你会发现,真的很神奇呢!
//-----------------------------------------
//我们在RAM中设计个程序指针,然后就可以通过这个指针来指定我们程序的入口了。
word programPtr 
//-----------------------------------------
blockLabel1:
//        用户程序
       goto blockLabel1
//------------------------------
blockLabel2:
//       用户程序
      goto blockLabel2
//------------------------------
//..............................
//-------------------------------
blockLabeln
//       用户程序
      goto blockLabeln
//-------------------------------
//假如你要在FPP1里来切换这些程序入口
//你只需要这样做,在其他的FPP里面来切换指针
//我们假定在FPP0里面来控制FPP1的程序指针。
FPP0boot
//    FPP1初始化
FPP0_loop:
//    ........
//假如我们要将FPP1的指针切换到blockLabel3段
  mov a , la@blockLabel3
  mov lb@programPtr, a
  mov a , ha@blockLabel3
  mov hb@programPtr,a
//以上将blockLabel3的地址送给指针
  pushw  programPtr //将地址压入堆栈里
  popw   pc1        //将堆栈里的地址弹出并赋给PC1,
                    //这样你的PC1就到了blockLabel3里执行。
//   ........   
   goto FPP0_loop

// 怎么样,原来切换不同的程序段可以这么简单呀,呵呵,不错吧

  

  

 
回复:高手5分钟可以学会的FPPA TM硬件操作操作系统
2013/12/13 23:17:22

  • 回复:高手5分钟可以学会的FPPA TM硬件操作操作系统

 
 
 
时间记忆
 
 
 
日志搜索
 
 
 
站点统计
 
博客名称:应广单片机一级代理 日志总数:169 评论数量:168 访问次数:1259744 建立时间::2006年06月16日
 
 
友情连接
 
 


中华工控网 | 联系我们 | 工控论坛首页 | 工控博客首页 | 博客注册 | 博客登陆

工控博客管理联系邮箱:工控博客服务邮箱

中华工控网 © Copyright 2013. All rights reserved.