登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

本人改写的在C8051F124上运行的uCOS源码,大家交流一下

作者:joe_zm 栏目:嵌入式系统
本人改写的在8051F124.html">C8051F124上运行的uCOS源码,大家交流一下
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
顶一下
 
3楼: >>参与讨论
ttjlc
up
 
4楼: >>参与讨论
lpcfans
顶。在ARM上弄吧。。。
 
5楼: >>参与讨论
mohanwei
尽管玩过ucos,但是回想当初的学习过程,还是想向楼主建议一下
我一开始的时候在网上找了一片类似本帖的例子,然后编译……满屏幕的错误(不要笑,每个人都有学习提高的过程^_^),烦恼的不行。
所以,楼主最好把整个工程项目(一般是用keil吧)都打个压缩包一起提供(如果涉及公司产权,应该把实际应用代码都去掉,做出一个最简系统),让网友能下载后直接编译,单步调试,学习里面的思想。

6楼: >>参与讨论
1lixz
顶一下
  本来我想用这款单片机,可是老板给订的时upsd3200系列的单片机,不知谁用过,给介绍一下

7楼: >>参与讨论
psmax2008
灌水
好,定

8楼: >>参与讨论
shenlan51

 
9楼: >>参与讨论
jinjing999
我也在UC/OS移植了,用的是2.51版本
刚开始我也加了SFRPAGE,可时出栈结果  是错误的,我就去掉了,可现在发现我用中断中用油箱传任务,运行的时间短,单片复位.还有PSBANK 是哪个寄存器,我用的是06,没有找到哪个名字,我的QQ13486254,希望向楼主讨教


参与讨论
昵称:
讨论内容:
 
 
相关帖子
5555,调了好几天,UCOS 本来执行任务,但是...
很郁闷,请指教UCOS
关于UC/OS问题
SAA7114
请问:uclinux支持威盛的v3 cpu 吗?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号