|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
本人改写的在C8051F124上运行的uCOS源码,大家交流一下 |
作者:joe_zm 栏目:嵌入式系统 |
OS_CPU_A.ASM: ;/* ;********************************************************************************************************* ;* uC/OS-II ;* 实时内核 ;* ;* (c) COPYRIGHT 1992-1998, Jean J. Labrosse, Plantation, FL ;* 版权所有 ;* ;* MCU-51 专用代码 ;* KEIL C51大模式编译 ;* ;* 文件名 : OS_CPU_A.ASM ;* 作者 : Jean J. Labrosse ;* 改编 : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27 ;* 改编 : 朱明 joe_zm@163.com 中科佳电子高新科技有限公司开发部 2005.11.10 ;* (杨工改编了运行于标准8051核的内核,但无法运行在像8051F124.html">C8051F124这样 ;* 的有code bank的CPU,我做了一点改动) ;********************************************************************************************************* ;*/ ;伪指令详细用法请查A51.PDF文件 ;程序结构详见《uC/OS-II》193-198页 ;不用此语句!!! $CASE ;标号和变量名区分大小写 $NOMOD51 ; disable predefine 8051 register EA BIT 0A8H.7 SP DATA 081H B DATA 0F0H ACC DATA 0E0H DPH DATA 083H DPL DATA 082H PSW DATA 0D0H TR0 BIT 088H.4 TF0 BIT 088H.5 TH0 DATA 08CH TL0 DATA 08AH PSBANK DATA 0B1H SFRPAGE DATA 084H NAME OS_CPU_A ;模块名 ;定义重定位段 ?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE ?PR?OSCtxSw?OS_CPU_A SEGMENT CODE ?PR?OSIntCtxSw?OS_CPU_A SEGMENT CODE ?PR?OSTickISR?OS_CPU_A SEGMENT CODE ;声明引用全局变量和外部子程序 EXTRN DATA (?C_XBP) ;仿真堆栈指针用于重入局部变量保存 EXTRN IDATA (OSTCBCur) EXTRN IDATA (OSTCBHighRdy) EXTRN IDATA (OSRunning) EXTRN IDATA (OSPrioCur) EXTRN IDATA (OSPrioHighRdy) ; extrn data(__SP) ; CC51 Virtual Stack Pointer EXTRN CODE (_?OSTaskSwHook) EXTRN CODE (_?OSIntEnter) EXTRN CODE (_?OSIntExit) EXTRN CODE (_?OSTimeTick) ;对外声明4个不可重入函数 PUBLIC OSStartHighRdy PUBLIC OSCtxSw PUBLIC OSIntCtxSw PUBLIC OSTickISR ;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。 ?STACK SEGMENT IDATA ; ?STACK goes into idata ram RSEG ?STACK ; SWITCH to ?STACK segment OSStack: DS 40H ; reserve 40H bytes for stack space OSStkStart IDATA OSStack-1 ;定义压栈出栈宏 PUSHALL MACRO PUSH PSBANK PUSH SFRPAGE PUSH PSW PUSH ACC PUSH B PUSH DPL PUSH DPH PUSH AR0 PUSH AR1 PUSH AR2 PUSH AR3 &nb |
2楼: | >>参与讨论 |
作者: lpf336 于 2006/4/13 12:37:00 发布:
顶一下 |
3楼: | >>参与讨论 |
作者: ttjlc 于 2006/4/13 16:20:00 发布:
up |
4楼: | >>参与讨论 |
作者: lpcfans 于 2006/4/14 17:48:00 发布:
顶。在ARM上弄吧。。。 |
5楼: | >>参与讨论 |
作者: mohanwei 于 2006/4/15 19:45:00 发布:
尽管玩过ucos,但是回想当初的学习过程,还是想向楼主建议一下 我一开始的时候在网上找了一片类似本帖的例子,然后编译……满屏幕的错误(不要笑,每个人都有学习提高的过程^_^),烦恼的不行。 所以,楼主最好把整个工程项目(一般是用keil吧)都打个压缩包一起提供(如果涉及公司产权,应该把实际应用代码都去掉,做出一个最简系统),让网友能下载后直接编译,单步调试,学习里面的思想。 |
6楼: | >>参与讨论 |
作者: 1lixz 于 2006/4/25 12:56:00 发布:
顶一下 本来我想用这款单片机,可是老板给订的时upsd3200系列的单片机,不知谁用过,给介绍一下 |
7楼: | >>参与讨论 |
作者: psmax2008 于 2006/4/29 9:42:00 发布:
灌水 好,定 |
8楼: | >>参与讨论 |
作者: shenlan51 于 2006/5/3 22:05:00 发布:
好 |
9楼: | >>参与讨论 |
作者: jinjing999 于 2006/5/13 9:51:00 发布:
我也在UC/OS移植了,用的是2.51版本 刚开始我也加了SFRPAGE,可时出栈结果 是错误的,我就去掉了,可现在发现我用中断中用油箱传任务,运行的时间短,单片复位.还有PSBANK 是哪个寄存器,我用的是06,没有找到哪个名字,我的QQ13486254,希望向楼主讨教 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |