




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计 设计题目 Uc os 2 内核在 80C51 系列单片机上的移植研究 设计 目目 录录 1 毕业设计任务书 2 毕业设计开题报告 3 毕业设计答辩资格审查表 4 论文原创性申明 5 论文版权使用授权书 6 毕业设计正文 7 外文资料译文 8 外文资料原文 宜春学院宜春学院 毕业设计任务书毕业设计任务书 题 目 Uc os 2 内核在 80C51 系列单片机上的移植研究 设计 学 院 物理科学与工程技术学院 系 电子与信息工程系 专 业 电子信息工程 班 级 2008 级 学 号 0834301218 姓 名 舒功萌 起止日期 2011 11 20 2012 6 5 指导教师 甘辉 职称 讲师 系主任 袁易君 审核日期 2012 3 20 说说 明明 1 毕业论文任务书由指导教师填写 并经教研室审定 下达到学生 2 进度表分前 中 后三期由学生填写 每期填写后交指导教师签署审查 意见 并作为毕业论文工作检查的主要依据 3 学生根据指导教师下达的任务书独立完成开题报告 3 周内提交给指导 教师批阅 4 本任务书在毕业论文完成后 与论文一起交指导教师 作为论文评阅和 毕业论文答辩的主要档案资料 是学士学位论文成册的主要内容之一 一 毕业论文的要求和内容一 毕业论文的要求和内容 介绍了一种实时操作系统 uc os 2 的内核结构 分析了它的移植 价值 了解了单片机硬件平台上的关键技术 并详细的描述了此移植的实现过程 分析了移植测试实现的条件 并对一些特殊情况进行了说明 并总结了移植的一 般方法 二 研究方案 目标二 研究方案 目标 近年来 嵌入式系统已成为了后 PC 时代的一个广阔的研发领域 实际应用中 原有的操 作系统无法支持新增应用功能时 常会采用系统移植来解决问题 UC QS 2 作为一个高可靠 开源的嵌入式实时操作系统 具有广泛的应用 而利用廉价的 80C51 实现更具先天优势 所 以以 80C51 为移植目标来详细讨论移植过程 其中总结设计了一个堆栈结构 最后给出移植 测试实验 分析了移植中要注意的一些问题 总结了移植的一般方法 三 阅读书目清单三 阅读书目清单 1 李群芳 肖看 单片机原理 接口及应用 嵌入式系统技术基础 清华大学出版社 出版 2005 2 谢自美 电子线路设计 实验 测试 武汉 华中理工大学出版社 2000 3 何书森 何华斌 实用数字电路原理与设计速成 福州 福建科学技术出版社 2000 4 白驹衍 单片计算机及应用 北京 电子工业出版社 1999 5 谢振辉 改进式MCS 51单片机实验 北京 科学出版社 2006 6 李维諟 郭强 液晶显示应用技术 北京 电子工业出版社 2005 7 陈小忠 黄宁 赵小侠 单片机接口技术实用子程序 北京 人民邮政出版社 2005 8 李华 MCS 51系列单片机实用接口技术 M 北京 北京航空航天大学出版社 1993 9 胡学海 单片机原理及应用系统设计 M 北京 北京电子工业出版社 2005 10 张义和 陈敌北 例说 8051 北京 人民邮电出版社 2006 四 毕业论文进度计划四 毕业论文进度计划 序号各阶段工作内容起止日期备注 1 完成各种资料的收集 2011 11 23 2012 3 4 完成 2 对资料进行整理 2012 3 5 3 26 完成 3 把整理好的资料按要 求书写成册完成毕业 设计书 2012 3 27 4 1 完成 4 根据设计书进行课题 设计 2012 4 3 5 20 完成 5论文初稿2012 5 21 5 23完成 6修改论文2012 5 24 6 1完成 7初步定稿2012 6 1 6 5完成 五 主要参考资料五 主要参考资料 1 李群芳 肖看 单片机原理 接口及应用 嵌入式系统技术基础 清华大学出 版社出版 2005 2 谢振辉 改进式 MCS 51 单片机实验 北京 科学出版社 2006 3 张义和 陈敌北 例说 8051 北京 人民邮电出版社 2006 六 毕业论文进度表六 毕业论文进度表 本表由学生填写 每期分别交指导教师签署审查意见 前 期 2011 年 11 月 23 日 至 2012 年 1 月 4 日 学生主要工作 收集 uc os 2 的内核结构的相关资料 通过的方式上网和上图书馆 通过上网查找 80c51 单片机的现状与近期发展状况 图书馆查找设计的相 关书籍 工作较努力 遵守纪律 作风严谨务实 同导师交流论文下一阶 段工作进程 指导教师审查意见 年 月 日 中 期 1 月 5 日 至 5 月 20 日 学生主要工作 整理资料 把整理好的资料按要求书写成册完成毕业设计书 并根据 设计书开始设计课题 论文初稿成形 能按时按量优异地完成任务书中规定的任务 能熟练运用所学理论和 专业知识 能综合分析问题和解决问题 运用所学知识和技能及获取新知识去发现与解决实际问题 能对课题 进行理论分析 指导教师审查意见 年 月 日 后 期 5 月 21 日 至 6 月 5 日 学生主要工作 将论文初稿通过指导老师审查 检查是否存在一些问题 并认真解决 问题 从而达到路清新 语言表达准确 概念清楚 论点正确 实验方法 科学 分析归纳合理 结论严谨 设计有应用价值 最后确定论文 并按 照要求打印论文 学生完成终稿 导师完成毕业论文审定和评阅工作 指导教师审查意见 年 月 日 七 其他 学生提交 七 其他 学生提交 1 开题报告 1 份 2 外文资料译文 1 份 1000 字以上 并附资料原文 3 设计 1 份 理科 4000 字以上 文科 6000 字以上 指 导 教 师 教研室负责人 学生开始执行 任务书日期 学 生 姓 名 送交毕业设计日期 宜春学院宜春学院 毕业设计开题报告毕业设计开题报告 题 目 Uc os 2 内核在 80C51 系列单片机上的移植研究 设计 学 院 物理科学与工程技术学院 系 电子与信息工程系 专 业 电子信息工程 班 级 08 级 学 号 0834301218 姓 名 舒功萌 指导教师 甘辉 填表日期 2011 年 11 月 30 日 一 选题的依据及意义 近年来 嵌入式系统已成为后 PC 时代一个广阔的研发领域 其应用范围越来越广 实际应用 中 由于移植所花费代价最小 原有操作系统无法支持新增应用功能时 常会采用系统移植来解 决问题 uC OS II 作为一个高可靠 开源的嵌入式实时操作系统 具有广泛的应用 而利用廉价 的 80C51 实现众多传感器 控制器等电子设备的网络互联 更是具有先天优势 因此在 80C51 上移植 uC OS II 具有重要的意义 二 国内外研究现状及发展趋势 含文献综述 单片机控制的移植是为适应电子产业的飞速发展 数字化时代对人类的发展产生了巨大的变化 我们亲身经历了数字技术的蓬勃发展 目睹了它以惊人的速度 渗透到社会与生活的方方面面 不 管是国内还是在国外 数字化的产品都是不会过时的 人们也在不断地更新一个又一个的设计 三 本课题研究内容 以 uC OS II 为移植对象 以 80C51 为移植目标来详细讨论移植的过程 其中自己设计了一个 堆栈结构 最后给出移植测试实验 分析了移植中要注意的一些问题 总结了移植的一般方法 四 本课题研究方法 uC OS II 可以让最高优先级的就绪任务处于运行状态 且其功能强大 具备多任务 内核可 分开 稳定性能 又因 uC OS II 移植性也很高 把它的特点移植在 80C51 上让 80C51 单片机也具 备这些优秀功能 首先了解 uC OS II 和 80C51 单片机的内部结构和特点 根据各自硬件结构编写 相应的各自代码 最后采用 KeilCx51 编译器进行编译 其整个移植过程在 KeilCx51 开发平台上搞 定 五 研究目标 主要特色及工作进度 研究目的 让原有操作系统可以支持新添加的功能 主要特点 uC OS II 高可靠开源的操作系统的应用广泛 六 参考文献 1 李群芳 肖看 单片机原理 接口及应用 嵌入式系统技术基础 清华大学出版社出版 2005 2 白智国 王芳 冯丹 嵌入式系统移植问题的研究计算机工程与科学 2005 27 97 99 3 JeanJLabrosse 嵌入式实时操作系统uC OS II 第2版 北京 北京航天航空大学出版社 2005 283 316 4 马忠梅 单片机的 C 语言应用程序设计北京 北京航空航天出版社 2003 120 135 5 徐爱钧 彭秀华 KeilCx51V7 0 单片机高级语言编程与 uVision2 应用实践 北京 电子工业出版 社 2005 490 450 6 黄涛 徐宏吉 嵌入式实时操作系统移植技术的分析与应用计算机应用 2003 88 90 7 张谦 竹利平 C OS II实时嵌入式操作系统的实时性分析与测试 计算机工程与设计 2005 26 宜春学院 2009 届毕业设计答辩资格审查表 题 目 Uc os 2 内核在 80C51 系列单片机上的移植研究 设计 学生姓名舒功萌专业 电子信 息工程 班级08 级学号 0834301218 论文完成情 况 完成 开题报告完成 外文资料翻 译 完成 中 英文摘 要 完成 检查 内容 软硬件验收无 论文期间考勤情况良好 累计旷 课时间 无 学生自查说明 本人严格按照任务书进度开展论文设计工作及时发现问题并发馈给指导老师 跟老 师一起探讨最佳解决方案 不断的改进设计 严格按照任务书的要求 对论文进行排版 确保内容的准确性 格式无误的情况下完成毕业论文设计工作 学生签名 年 月 日 指导教师意见 说明是否进行答辩及评定成绩 指导教师签名 成绩 年 月 日 宜春学院宜春学院 论文原创性申明论文原创性申明 本人郑重申明 所呈交的论文是本人在导师的指导下独立进本人郑重申明 所呈交的论文是本人在导师的指导下独立进 行研究所取得的研究成果 除了文中特别加以标注引用的内容外 行研究所取得的研究成果 除了文中特别加以标注引用的内容外 本论文不包含任何其他个人或集体已经发表或撰写的成果 对本本论文不包含任何其他个人或集体已经发表或撰写的成果 对本 文的研究作出重要贡献的个人和集体 均在文中以明确方式表明 文的研究作出重要贡献的个人和集体 均在文中以明确方式表明 本人完全意识到本申明的法律责任 其后果由本人承担 本人完全意识到本申明的法律责任 其后果由本人承担 作者签名 作者签名 日日 期 期 论文版权使用授权书论文版权使用授权书 本论文作者完全了解学校有关保留 使用论文的规定 同意本论文作者完全了解学校有关保留 使用论文的规定 同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版 学校保留并向国家有关部门或机构送交论文的复印件和电子版 允许论文被查阅和借阅 本人授权宜春学院可以将本论文的全部允许论文被查阅和借阅 本人授权宜春学院可以将本论文的全部 或部分内容编入数据库进行检索 可以采用影印 缩印或扫描等或部分内容编入数据库进行检索 可以采用影印 缩印或扫描等 复制手段保存和汇编本论文 复制手段保存和汇编本论文 作者签名 作者签名 日期 日期 导师签名 导师签名 日期 日期 把这一页去掉 毕 业 设 计 设计题目 Uc os 2 内核在 80C51 系列单片机上的移植 研究 设计 学 院 物理科学与工程技术学院 专 业 电子信息工程 年 级 2008 级 姓 名 舒功萌 指导教师 甘辉 职 称 讲师 2012 年 6 月 宜春学院教务处制 Uc os 2 内核在内核在 80C51 系列单片机上的移植研究系列单片机上的移植研究 设计设计 宜春学院 物理科学与工程技术学院 电子信息工程 舒功萌 指导老师 甘辉 摘要摘要 介绍了一种实时操作系统 uC OS II 的内核结构 分析了它的移植技术 讨论了将其移植到 80C51 系列单片机硬件平台上的关键技术 并详细描述了此移植的实现过程 分析了移植测试实验情况 针对 keilCx51 编译器环境下的一些特殊情况进行了说明 并总结了移植的一般方法 关键词关键词 8051 单片机 实时操作系统 移植 交叉编译器 测试 Abstract 09 2096 04PortinguC OS IIkernelto80C51 familymicroprocessorZHAOJian hua WANGWen yong SchoolofComputerScienceandEngineering UESTofChina Chengdu610054China AbstractThekernels tructureandtheportingtechnologyofuC OS IIisintroduced whichisakindofembeddedrealtimeoperatisystem Thekeytechnologyandtheprocessofpo rtinguC OS IIkernelto80C51familymicroprocessorsarediscussed thetestingex perimentafterportingisanalyzed FinallythedifferenceabouttheportingtothecompilerofkeilCx51isp ointedout andthegeneraltransplantingmethodsaresummarized Keywords 8051microprocessor realtimeoperatingsystem port cross compiler 目目 录录 1 前言 3 2 硬件 4 2 1 硬件的基本组成 4 2 2 硬件的基本组成 见图 A 4 2 3 硬件介绍 4 2 3 1 单片机概述 4 2 3 2 AT89C51 单片机简介 4 2 4 数码显示管 8 3 电路原理分析 10 3 1 电路图如下 图 A 10 3 2 显示原理 10 3 3 键盘及读数原理 10 3 4 连击功能的实现 10 4 程序设计思想和相关指令介绍 11 4 1 数据与代码转换 11 4 2 计时功能的实现与中断服务程序 11 4 3 时间控制功能与比较指令 11 5 软件设计 12 5 1 KEIL UVISION2 编程软件的介绍 12 5 2 PROTEUS7 0 仿真软件 12 5 4 程序部分 见附录 A 12 5 3 程序流程图 见附录 B 12 6 附录 13 7 结论 23 8 参考文献 24 9 辞谢 25 在目录里面把括号里的文字以及括 号本身删除 我记得结论应该在附录的前面 你在 仔细看看它们的顺序 1 1 前言 前言 嵌入式系统已成为后 PC 时代一个广阔的研发领域 其应用范围越来越广 实际应用 中 由于移植所花费代价最小 原有操作系统无法支持新增应用功能时 常会采用系统移 植来解决问题 uC OS II 作为一个高可靠 开源的嵌入式实时操作系统 具有广泛的应用 而利用廉价的 80C51 实现众多传感器 控制器等电子设备的网络互联 更是具有先天优势 因此在 80C51 上移植 uC OS II 具有重要的意义 本文以 uC OS II 为移植对象 以 80C51 为移植目标来详细讨论移植的过程 其中自己设计了一个堆栈结构 最后给出移植测试实 验 分析了移植中要注意的一些问题 总结了移植的一般方法 2 2 硬件 硬件 2 1 硬件的基本组成硬件的基本组成 内核 uC OS II 单片机 80c51 keilCx51 编译器 2 2 硬件的基本组成 见图硬件的基本组成 见图 A 2 3 硬件介绍 硬件介绍 2 3 1 单片机概述单片机概述 单片机也被称作 单片微型计算机 微控制器 嵌入式微控制器 单片机一词最初 是源于 Single Chip Microcomputer 简称 SCM 随着 SCM 在技术上 体系结构上不断扩展 其控制功能 单片机已不能用 单片微型计算机 来表达其内涵 国际上逐渐采用 MCU Micro Controller Unit 来代替 形成了单片机界公认的 最终统一的名词 为了与国际接轨 以后应将中文 单片机 一词和 MCU 唯一对应解释 在国内因为 单片机 一词已约定俗成 故而可继续沿用 2 3 2 80c51 单片机简介单片机简介 80C51 单片机属于 MCS 51 系列单片机 由 Intel 公司开发 其结构是 8048 的延 伸 改进了 8048 的缺点 增加了如乘 MUL 除 DIV 减 SUBB 比较 PUSH 16 位数据指针 布尔代数运算等指令 以及串行通信能力和5 个中断源 采用 40 引脚双列直插式 DIP Dual In Line Package 内有 128 个 RAM 单元及 4K 的 ROM 80C51 有两个 16 位定时计数器 两个外中断 两个定时计数中断 及一个 串行中断 并有 4 个 8 位并行输入口 80C51 内部有时钟电路 但需要石英晶体和微 调电容外接 本系统中采用 12MHz 的晶振频率 由于 80C51 的系统性能满足系统数 据采集及时间精度的要求 而且产品产量丰富来源广 应用也很成熟 故采用来作为控 制核心 图 2 1 单片机 80C51 芯片机构框架图和内部逻辑结构 2 3 2 1 80C51 功能特性描述 功能特性描述 MCS 51 系列单片机主要包括 8031 8051 和 8751 等通用产品 其主要功能如下 8 位 CPU 4kbytes 程序存储器 ROM 128bytes 的数据存储器 RAM 32 条 I O 口线 111 条指令 大部分为单字节指令 21 个专用寄存器 2 个可编程定时 计数器 5 个中断源 2 个优先级 一个全双工串行通信口 外部数据存储器寻址空间为 64kB 外部程序存储器寻址空间为 64kB 逻辑操作位寻址功能 双列直插 40PinDIP 封装 单一 5V 电源供电 移植对象移植对象 uC OS IIuC OS II 具有很强的可移植性 可以广泛应用于各类具有很强的可移植性 可以广泛应用于各类 8 位 位 l6 位 位 32 位微控制器或位微控制器或 DSP 中 它具有完全可剥夺型的中 它具有完全可剥夺型的 实时内核 其核心工作原理是让最高优先级的就绪任务处于实时内核 其核心工作原理是让最高优先级的就绪任务处于 运行状态 它具有多任务的特点 可以管理运行状态 它具有多任务的特点 可以管理 64 个任务 其中个任务 其中 56 个任务分配给用户 另外它具有内核可裁减性 可确定性的特个任务分配给用户 另外它具有内核可裁减性 可确定性的特 点 并提供很多系统服务 比如信号量 互斥信号量 事件标点 并提供很多系统服务 比如信号量 互斥信号量 事件标 志 消息邮箱 消息队列 内存的分配和释放等 志 消息邮箱 消息队列 内存的分配和释放等 1 2 目标机目标机 80C51 硬件资源在系统移植之前 必须先了解目标机的硬件资源 然后根硬件资源在系统移植之前 必须先了解目标机的硬件资源 然后根 据特定的硬件编写相应的代码 据特定的硬件编写相应的代码 80C51 系列单片机具有结构系列单片机具有结构 简单 应用灵活等特点 其硬件资源如下 简单 应用灵活等特点 其硬件资源如下 CPU 8 位的微处理位的微处理 器 内存 片内器 内存 片内 RAM 128B 片外 片外 RAM 64KB 片内 片内 ROM 4KB 片外 片外 EPROM 64KB 时钟 片内振荡器和时钟产生电 时钟 片内振荡器和时钟产生电 路 振荡频率为路 振荡频率为 6 12MHZ 2 个个 16 位定时位定时 计数器 中断 计数器 中断 5 个个 中断源 两级中断 外设 中断源 两级中断 外设 4 个个 8 位并行位并行 I O 接口接口 P0 P3 1 个全个全 双工的串行双工的串行 I O 口口 UART 1 3 移植中采用的编译器移植中采用移植中采用的编译器移植中采用 KeilCx51 编译器 整个移植在编译器 整个移植在 KeilCx51 开发开发 平台上进行 平台上进行 KeilCx51 是是 Keil 公司的一款针对公司的一款针对 C5l 系列单片系列单片 机的编译器 版本为机的编译器 版本为 V7 0 它是目前最高效的 灵活的 它是目前最高效的 灵活的 80C51 开发平台 在开发平台 在 KeilCx51 环境下移植环境下移植 uC OS II 可直接进行软可直接进行软 件仿真 仿真过程中不必将程序下载到硬件上运行 等程序件仿真 仿真过程中不必将程序下载到硬件上运行 等程序 在软件仿真平台测试通过后 直接将其烧录到硬件芯片上 在软件仿真平台测试通过后 直接将其烧录到硬件芯片上 1 4uC OS II 的模块简介由于设计的模块简介由于设计 uC OS II 时就考虑到了在不同处理器上移植 时就考虑到了在不同处理器上移植 因而移植因而移植 uC OS II 实际上需要修改的代码量很小 整个嵌入收稿日期 实际上需要修改的代码量很小 整个嵌入收稿日期 2006 04 23E mail z 1982 jh 作者简介 赵建华作者简介 赵建华 1982 WSN 无线传感器网络无线传感器网络 WSN 80C51 摘要 介绍了一种实时操作系统摘要 介绍了一种实时操作系统 Vol 28No 9ComputerEngineeringandDesign 2097 式系统的结构如图 式系统的结构如图 1 所示 所示 uC OS II 内核可以分为与处理器无内核可以分为与处理器无 关的代码 无处理器相关的代码以及与应用相关的代码关的代码 无处理器相关的代码以及与应用相关的代码 3 个个 部分 移植中只需修改与处理器相关部分的文件 即包括 部分 移植中只需修改与处理器相关部分的文件 即包括 CPU H OS CPU C C 和和 OS CPU ASM ASM 其它代码几乎不 其它代码几乎不 需要改变 需要改变 2 具体移植步骤以下是移植的步骤 分别修改各个与硬件相关的文件 具体移植步骤以下是移植的步骤 分别修改各个与硬件相关的文件 2 1 修改修改 OS CPU H 文件文件 OS CPU H 中包含两部分的代码 数据类型定义代码和与中包含两部分的代码 数据类型定义代码和与 处理器相关的代码 移植主要修改与处理器相关代码 首先处理器相关的代码 移植主要修改与处理器相关代码 首先 定义 定义 EA 0 关中断 关中断 EA 1 开中断 这样定义即减少了程序行开中断 这样定义即减少了程序行 数 又避免了退出临界区后关中断造成的死机 由于数 又避免了退出临界区后关中断造成的死机 由于 MCS 51 堆栈从下往上增长堆栈从下往上增长 1 向下 向下 0 向上向上 所以 所以 OS STK GROWTH 定义为定义为 0 最后 把 最后 把 OSCtxSw 预定义为预定义为 OS TASK SW 因 因 为为 MCS 51 没有软中断指令 所以用程序调用代替 实践表没有软中断指令 所以用程序调用代替 实践表 明 对于明 对于 MCS 51 用子程序调用入栈 用中断返回指令 用子程序调用入栈 用中断返回指令 RETI 出栈是没有问题的 在没有中断发生的情况下复位中断系统出栈是没有问题的 在没有中断发生的情况下复位中断系统 也不会影响系统正常运行 也不会影响系统正常运行 2 2 修改修改 OS CPU C C 文件在这个文件中 只需要修改任务堆栈初始化函数文件在这个文件中 只需要修改任务堆栈初始化函数 OSTa skStkInit uC OS II 中每个任务都有自己的堆栈空间 并且必中每个任务都有自己的堆栈空间 并且必 须声明为须声明为 OS STK 类型 主要完成对用户任务的堆栈进行初类型 主要完成对用户任务的堆栈进行初 始化 始化 OSTaskStkInit 函数总是返回栈顶地址 为了说明这个函数总是返回栈顶地址 为了说明这个 函数的工作流程 我们自己设计了一个堆栈空间 如图函数的工作流程 我们自己设计了一个堆栈空间 如图 2 所示 所示 其中其中 OSTCBCur 指向当前任务控制块指向当前任务控制块 TCB TCB 结构体中结构体中 OS TCBStkPtr 指向用户堆栈的栈顶 用户堆栈长度存放在用户堆指向用户堆栈的栈顶 用户堆栈长度存放在用户堆 栈的最底部 长度之上空间存放系统堆栈映像 即 用户堆栈栈的最底部 长度之上空间存放系统堆栈映像 即 用户堆栈 空间大小空间大小 系统堆栈空间大小系统堆栈空间大小 1 SP 总是先加总是先加 1 再存数据 因再存数据 因 此 此 SP 初始时指向系统堆栈起始地址初始时指向系统堆栈起始地址 OSStack 减减 1 处处 即即 OS StkStart 很明显系统堆栈存储空间大小 很明显系统堆栈存储空间大小 SP OSStkStart 任务切换时 先保存当前任务堆栈内容 即把系统栈数任务切换时 先保存当前任务堆栈内容 即把系统栈数 据拷贝到用户栈 方法是 用据拷贝到用户栈 方法是 用 SP OSStkStar 得出保存字节数 得出保存字节数 将其写入用户堆栈最低地址内 以用户堆栈最低地址为起址 将其写入用户堆栈最低地址内 以用户堆栈最低地址为起址 以以 OSStkStart 为系统堆栈起址 由系统栈向用户栈拷贝数据 为系统堆栈起址 由系统栈向用户栈拷贝数据 循环循环 SP OSStkStart 次 每次拷贝前先将各自栈指针增次 每次拷贝前先将各自栈指针增 1 其次 恢复最高优先级任务系统堆栈 方法是 获得最高其次 恢复最高优先级任务系统堆栈 方法是 获得最高 优先级任务用户堆栈最低地址 从中取出优先级任务用户堆栈最低地址 从中取出 长度长度 Length 以最 以最 高优先级任务用户堆栈最低地址为起址 以高优先级任务用户堆栈最低地址为起址 以 OSStkStart 为系统为系统 堆栈起址 由用户栈向系统栈拷贝数据 循环堆栈起址 由用户栈向系统栈拷贝数据 循环 长度长度 length 数数 值指示的次数 每次拷贝前先将各自栈指针增值指示的次数 每次拷贝前先将各自栈指针增 1 用户堆栈初 用户堆栈初 始化时从下向上依次保存 用户堆栈长度始化时从下向上依次保存 用户堆栈长度 15 PCL PCH PSW ACC B DPL DPH R0 R1 R2 R3 R4 R5 R6 R7 不保存 不保存 SP 任务 任务 切换时根据用户堆栈长度计算得出 切换时根据用户堆栈长度计算得出 2 3 修改修改 OS CPU ASM ASM 文件文件 uC OS II 移植实例要求用户编写移植实例要求用户编写 4 个简单汇编语言函数 个简单汇编语言函数 OSStartHighRdy 使就绪态任务中优先级最高的任使就绪态任务中优先级最高的任 务开始运行务开始运行 OSCtxSw 低优先级任务切换到高优先级任务低优先级任务切换到高优先级任务 OSTickISR 时钟节拍中断时钟节拍中断 OSIntCtxSw 在在 ISR 中执行任务切换功能中执行任务切换功能 2 3 1 修改修改 OSStartHighRdyOSStartHighRdy 主要完成高优先级任务寄存器的恢复 主要完成高优先级任务寄存器的恢复 必须恢复该任务在必须恢复该任务在 CPU 使用权被剥夺时保留下来的全部寄存使用权被剥夺时保留下来的全部寄存 器的值 以便让这个高优先级任务能够继续运行 即把用户器的值 以便让这个高优先级任务能够继续运行 即把用户 堆栈中的堆栈中的 PCL PCH PSW ACC B DPL DPH R0 R1 R2 R3 R4 R5 R6 R7 全部拷贝到系统堆栈 然后系统堆栈再进行全部拷贝到系统堆栈 然后系统堆栈再进行 POP 操作 操作 将保存的这些值弹出到将保存的这些值弹出到 CPU 的各个寄存器 使得此高优先级的各个寄存器 使得此高优先级 任务得到运行 其中部分关键代码如下 任务得到运行 其中部分关键代码如下 MOVXA DPTR 调整调整 DPTR 使其指向用户堆栈的 使其指向用户堆栈的 最低地址最低地址 MOVR5 A R5 用户堆栈长度 因为堆栈长度放在用户堆栈长度 因为堆栈长度放在 用户堆栈最低处用户堆栈最低处 MOVR0 OSStkStart OSSktStart 为系统堆栈起始地址为系统堆栈起始地址 restore stack 从用户堆栈到系统堆栈的从用户堆栈到系统堆栈的 copy INCDPTR INCR0 MOVXA DPTR MOV R0 A DJNZR5 restore stack POPALL 为自定义宏 将所有寄存器实现出栈为自定义宏 将所有寄存器实现出栈 2 3 2 修改修改 OSCtxSwOSCtxSw 为任务切换函数 实现从低优先级任务到高优为任务切换函数 实现从低优先级任务到高优 先级任务切换 要实现任务切换 一般包括两个过程 先级任务切换 要实现任务切换 一般包括两个过程 保存保存 当前低优先级任务的全部寄存器的值以及堆栈的长度值 当前低优先级任务的全部寄存器的值以及堆栈的长度值 恢恢 复高优先级任务以前在复高优先级任务以前在 CPU 使用权被剥夺时保存下来的全部使用权被剥夺时保存下来的全部 寄存器的值 即前一个汇编程序寄存器的值 即前一个汇编程序 OSStartHighRdy 实现的功能 实现的功能 其中部分关键代码如下 其中部分关键代码如下 以下代码完成第以下代码完成第 步操作图步操作图 1uC OS 软件体系结构时钟软件体系结构时钟 CPU 其它设备其它设备 应用程序软件应用程序软件 uC OS 设置设置 与应用相关的代码与应用相关的代码 OS CFGH INCLUDES H OS CORE CuCOS COS TASK C uCOS HOS SEM COS Q C OS TIME COS MEM COS MBOX C uC OS 移植移植 与处理器相关的代码与处理器相关的代码 OS CPU HOS CPU C COS CPU ASM ASM 图图 2 自定义的用户堆栈和系统堆栈结构用户堆栈自定义的用户堆栈和系统堆栈结构用户堆栈 长度长度 长度长度 低地址低地址 系统硬件堆栈系统硬件堆栈 长度长度 SP OSStkStart 低地址低地址 1 0 1 不关心不关心 OSStack OSStkStart SP OSTCBCur OSTCBCur OSTCBStkPtr uC OS 与处理器无关的代码与处理器无关的代码 2098 PUSHALL 用户定义的宏 将全部用户定义的宏 将全部 CPU 寄存器保存到寄存器保存到 系统堆栈系统堆栈 MOVA SP 以下以下 3 句实现获得堆栈的长度句实现获得堆栈的长度 SUBBA OSStkStart MOVR5 A R5 里保存堆栈长度 并将其保存在用户里保存堆栈长度 并将其保存在用户 堆栈最底下堆栈最底下 save stack 以下实现从系统堆栈到用户堆栈的拷贝以下实现从系统堆栈到用户堆栈的拷贝 INCDPTR 指向用户堆栈指向用户堆栈 INCR0 指向系统堆栈指向系统堆栈 MOVA R0 MOVX DPTR A DJNZR5 save stack 而第而第 步代码和步代码和 OSStartHighRdy 代码一样 除此之外 将代码一样 除此之外 将 当前优先级最高任务的任务控制块指针当前优先级最高任务的任务控制块指针 OSTCBHighRdy 赋值赋值 给当前任务控制块指针给当前任务控制块指针 OSTCBCur 2 3 3 修改修改 OSTickISRuC OS II 要求用户提供一个周期性的时钟源 来实现时要求用户提供一个周期性的时钟源 来实现时 间的延迟和超时功能 我们选用间的延迟和超时功能 我们选用 8051 的的 T0 定时器作为定时器作为 tick 时钟 时钟 OSTickISR 函数为时钟节拍中断服务程序 当产生计时函数为时钟节拍中断服务程序 当产生计时 和定时中断时 执行此函数 此函数和其它中断服务子程序和定时中断时 执行此函数 此函数和其它中断服务子程序 一样 都先要保存断点和保存现场 然后执行用户代码 最后一样 都先要保存断点和保存现场 然后执行用户代码 最后 对恢复保存的寄存器值 其中关键代码 对恢复保存的寄存器值 其中关键代码 CSEGAT000BH 0BH 为为 0 号定时器号定时器 T0 的入口地址的入口地址 LJMPOSTickISR 跳转到中断服务子程序跳转到中断服务子程序 OSTickISR PUSHALL 保存所有寄存器的宏保存所有寄存器的宏 CLRTR0 后面后面 4 句为设置句为设置 T0 的工作方式以及赋值的工作方式以及赋值 MOVTH0 70H 定义定义 Tick 50 次次 秒秒 即即 0 02 秒秒 次次 MOVTL0 00H OS CPU C C 和和 OS TICKS PER SEC SETBTR0 LCALL OSTimeTick 调用系统调用系统 Tick 函数函数 LCALL OSIntExit 系统函数 决定是否使得高优系统函数 决定是否使得高优 先级任务就绪先级任务就绪 POPALL 出栈出栈 RETI2 3 4 修改修改 OSIntCtxSwOSIntExit 通过调用通过调用 OSIntCtxSw 在 在 ISR 中执行任务切换中执行任务切换 功能 因为功能 因为 OSIntCtsSw 是在是在 ISR 中被调用的 所以假定寄存中被调用的 所以假定寄存 器都被正确地保存了被中断的任务的堆栈之中 因此 器都被正确地保存了被中断的任务的堆栈之中 因此 OSInt CtxSw 和上文中和上文中 OSCtxSw 的代码基本相同 差别仅仅在于开的代码基本相同 差别仅仅在于开 始之前少了一个始之前少了一个 POPALL 操作 操作 3 实验及其结果分析移植完成后 紧接着就是移植的正确性验证 下面是移实验及其结果分析移植完成后 紧接着就是移植的正确性验证 下面是移 植测试实验以及对实验结果的分析 植测试实验以及对实验结果的分析 3 1 实验的条件和指导思想实验必须确保在实验的条件和指导思想实验必须确保在 Cx51 编译器和链接器的正常工作的情编译器和链接器的正常工作的情 况下进行 主要指导思想是测试修改过的况下进行 主要指导思想是测试修改过的 OSStartHighRdy OSTaskStkInitOSCtxSw OSIntCtxSw OSTickISR 等等 5 个函数 测个函数 测 试其在试其在 Cx51 环境下运行是否正常 环境下运行是否正常 3 2 实验的过程和结果实验过程主要包括以下实验的过程和结果实验过程主要包括以下 3 个步骤 个步骤 创建两个任务创建两个任务 Task1 和和 Task2 验证 验证 OSTaskStkInit 和和 OSStartHighRdy 函数 函数 创建创建 Task1 和和 Task2 后 通过二者之间的切换 验证后 通过二者之间的切换 验证 OSCtxSw 函函 数 数 初始化时钟 开中断 初始化时钟 开中断 Task1 和和 Task2 各自睡眠一段时间各自睡眠一段时间 Task2 睡眠时间是睡眠时间是 Task1 的的 2 倍倍 等睡眠时间到达后 根据各 等睡眠时间到达后 根据各 自输出的不同结果 验证自输出的不同结果 验证 OSIntCtxSw 和和 OSTickISR 函数 函数 主要测试代码如下 主要测试代码如下 OSTaskCreate Task1 void 0 OSTaskCreate Task2 void 0 voidTask1 void data1 reentrant for PrintStr tTask1isactive 11111111 n OSTimeDly OS TICKS PER SEC voidTask2 void data2 reentrant for PrintStr tTask2isactive 22222222 n OSTimeDly 2 OS TICKS PER SEC 3 3 对实验结果的分析和讨论输出结果为 对实验结果的分析和讨论输出结果为 Task1isactive 11111111 Task1isactive 11111111 Task2isactive 22222222 Task1isactive 11111111 Task1isactive 11111111 Task2isactive 22222222 根据实验输出结果可见 根据实验输出结果可见 Task1 和和 Task2 创建成功 因此创建成功 因此 OSTaskStkInit 工作正常 工作正常 Task1 和和 Task2 实现任务切换 以及发实现任务切换 以及发 生时间中断 工作正常生时间中断 工作正常 Task1 运行两次后运行两次后 Task2 运行一次运行一次 因 因 此其它此其它 4 个函数工作也正常 由此可以得出结论 个函数工作也正常 由此可以得出结论 uC OS II 已已 经在经在 80C51 上移植成功 上移植成功 3 4 移植中移植中 keilCx 编译器要注意的问题由于编译器要注意的问题由于 uC OS 是一个可抢占式内核 因此 系统中是一个可抢占式内核 因此 系统中 的绝大的绝大 多数函数都应该是可重入的 而在多数函数都应该是可重入的 而在 KeilCx51 编译器中 在函编译器中 在函 数定义时的默认值都是不可重入的 因此 需要在系统中的每数定义时的默认值都是不可重入的 因此 需要在系统中的每 一个函数的声明以及定义处都加上一个函数的声明以及定义处都加上 largereentrant 的修饰符 的修饰符 以保证函数的可重入性 以保证函数的可重入性 startup a51 文件是文件是 Cx51 编译器自带的文件 是编译器自带的文件 是 C51 的初的初 始化代码 单片机复位后先执行这段代码 完成初始化后由它始化代码 单片机复位后先执行这段代码 完成初始化后由它 调用调用 main 其主要完成定义内部 其主要完成定义内部 RAM 大小 外部大小 外部 RAM 大大 小 可重入堆栈位置 以及初始化小 可重入堆栈位置 以及初始化 8051 硬件堆栈指针 因此硬件堆栈指针 因此 我们要修改这个文件中的一些变量 比如外部我们要修改这个文件中的一些变量 比如外部 RAM 起始地址起始地址 变量变量 XDATASTART 是否大模式重入堆栈指针需初始化标志 是否大模式重入堆栈指针需初始化标志 变量变量 XBPSTACKTOP 等等 这样的话 程序在软件仿真通过等等 这样的话 程序在软件仿真通过 测试后 将其烧录在硬件上 硬件调试也一次成功测试后 将其烧录在硬件上 硬件调试也一次成功 表表 3 13 1 段码与字型的关系段码与字型的关系 段码D7 DPD6 gD5 fD4 eD3 dD2 cD2 bD0 a字形 3FH001111110 06H000000101 5BH010110112 4FH010011113 66H011001104 6DH011011015 7DH011111016 07H000001117 7FH011111118 6FH011011119 77H01110111a 7CH01110111b 39H00111001c 5EH01011110d 79H01111001e 71H01110000f 这种方式占用锁存器较多 动态显示是将所有位的段选线相应的并联在一起 由一个 8 位的 I O 口控制 形成段选线的多路复用 而各位的阴极分别由相应的 I O 口控制 实 现各位的分时选通 要 LED 能够显示相应的字符 就必须采用动态扫描方式 只要每位显 示的时间足够短 则可造成多位同时显示的假象 达成显示的目的 在数字电路中常常要 把数据或运算结果通过半导体数码管 液晶数码和荧光数码管 用十进制数显示出来 发光二极管的工作电压为 1 5 3 0 伏 工作电流为己毫安到几十毫安 寿命很长 半 导体数码管将十位数分成七个字段 每段为一个发光二极管 其字形结构如图所示 选择 不同的字段发光 可显示出不同的字型 例如 当 a b c d e f g 七个字段同时亮时 显 示 8 b c 段亮时 显示出 共阳极 把发光二极管的阳极连在一起构成共阳极 使用时公共端接 Vcc 当某阳极 为低电平时 该发光二极管就导通发光 输出一个段码就可以控制 LED 显示器的字型 表 3 1 给出了段码与字型的关系 假定 a b c d e f g DP 分别对应 D0 D1 D2 D3 D4 D5 D6 D7 5 5 软件设计 软件设计 单片机采用 KeiluVision2 编程软件编程 画图采用 PROTEUS6 9 仿真软件 5 1 Keil uVision2 编程软件的介绍编程软件的介绍 Keil uVision2IDE 是 Keil 公司提供的用语开发 MSC 51 系列单片机的汇编语言与 C 语 言程序的集成开发环境发 操作界面和其他 Windows 应用程序一样 uVision2 支持所有的 KeilC51 工具 包括 C 编译器 宏汇编其 连接定位器 目标代码到 HEX 的转换器 KeilC51 的 Windows 版的软件 都是要建立一个工程文件 不管是汇编语言的 还是 C 语言的 只有一个文件 还是有多个文件的程序都要有一个工程文件 没有工程文件 将不能进行编译和仿真 5 2 PROTEUS7 0 仿真软件仿真软件 5 4 程序部分 见附录程序部分 见附录 A 5 3 程序流程图程序流程图 见附录 见附录 B 6 6 附录附录 7 7 结论 结论 经过了两个多月的学习和工作 我终于完成了我的论文 从开始接到论文题目到系统的实现 再到论文文章的完成 每走一步对我来说都是新的尝试与挑战 这也是我在大学期间独立完成的最 大的项目 在这段时间里 我学到了很多知识也有很多感受 从对单片机一知半解 对液晶显示器 Keil uVision2 PROTEUS7 0 等相关技术很不了解的状态 我开始了独立的学习和试验 查看相关 的资料和书籍 让自己头脑中模糊的概念逐渐清晰 使自己非常稚嫩作品一步步完善起来 每一次 改进都是我学习的收获 每一次试验的成功都会让我兴奋好一段时间 从中我也充分认识到了单片 机设计给我们生活带来的乐趣 虽然我的论文作品不是很成熟 还有很多不足之处 但我可以自豪的说 这里面的每一段代码 都有我的劳动 当看着自己的程序 自己成天相伴的系统能够健康的运行 真是莫大的幸福和欣慰 我相信其中的酸甜苦辣最终都会化为甜美的甘泉 这次做论文的经历也会使我终身受益 我感受到做论文是要真真正正用心去做的一件事情 是 真正的自己学习的过程和研究的过程 没有学习就不可能有研究的能力 没有自己的研究 就不会 有所突破 那也就不叫论文了 希望这次的经历能让我在以后学习中激励我继续进步 8 8 参考文献 参考文献 1 李群芳 肖看 单片机原理 接口及应用 嵌入式系统技术基础 清华大学出版社出版 2005 2 谢自美 电子线路设计 实验 测试 武汉 华中理工大学出版社 2000 3 何书森 何华斌 实用数字电路原理与设计速成 福州 福建科学技术出版社 2000 4 白驹衍 单片计算机及应用 北京 电子工业出版社 1999 5 谢振辉 改进式MCS 51单片机实验 北
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 古代算术考试题及答案解析
- 公共场所考试题及答案
- 工地现场管理考试题及答案
- 高等教师考试题型及答案
- 云计算技术对零售企业业务创新的促进作用
- 2025建筑施工临时用工合同书
- 人工智能促进高校教师跨学科协作与互动
- 鼓励跨行业合作提升数字服务的附加值
- 煤矿采矿工程扩建项目环境影响报告书
- 2025公共设施租赁使用合同
- 运输行业特殊作业安全管理制度
- 品管圈PDCA案例-中医医院减少住院患者艾灸烫伤率医院改善成果汇报
- 《土地变更调查讲义》课件
- 财务整账合同模板
- 2020年水利水电工程标准施工招标文件
- 《农产品安全与质量检测》课件-3.2.食品中的灰分的测定
- 钢结构厂房排水系统安装方案
- 对新员工保密基本培训
- 口耳目手足课件
- 2024-2025学年湖北省武汉二中广雅中学九年级上学期9月月考数学试题及答案
- 箱式变电站技术规范应答
评论
0/150
提交评论