找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5134|回复: 4
打印 上一主题 下一主题
收起左侧

UCOSII 在51系列单片机C8051f340的移植移植实例

[复制链接]
跳转到指定楼层
楼主
UCOSII 在51系列单片机C8051f340的移植实例


全部源码下载:
UCOS-II操作系统(创建任务学习).rar (258.45 KB, 下载次数: 71)

apps的主程序:
  1. /********************************************************************
  2. * 文件名  : usertask.c
  3. * 描述    :  UCOS-II的main函数文件,该例子是创建任务实验学习,任务之间可以完全独立,
  4. *            通过在任务中调用OSTimeDly(),来完成任务的挂起,让别的任务运行。
  5. *                         这里创建了3个任务,任务1开关LED12、任务2开关LED13、任务3开关LED14。
  6. * 创建人  :云杰
  7. * QQ      :494713348
  8. * 电话    :15123350190
  9. * Email          :founder_elec@foxmail.com
  10. * 网址    :http://shop66398134.taobao.com
  11. * 时间    :2010年4月10日
  12. * 版本号  :V0.1.0
  13. * 修改记录:
  14. *
  15. *********************************************************************/
  16. #include"includes.h"
  17. #include"absacc.h"


  18. sbit LED12  = P2^3;                   //LED12管脚定义
  19. sbit LED13  = P0^3;                   //LED13管脚定义
  20. sbit LED14  = P2^2;                   //LED14管脚定义

  21. OS_STK xdata StartTaskStk[USER_STACK_SIZE],Task1Stk[USER_STACK_SIZE],Task2Stk[USER_STACK_SIZE];

  22. //定义3个信号量   
  23. INT8U   err;

  24. void StartTask(void) KCREENTRANT;
  25. void Task1(void) KCREENTRANT;
  26. void Task2(void) KCREENTRANT;
  27. void InitTimer0(void)KCREENTRANT;



  28. void main(void)
  29. {       
  30.         EA=0;
  31.         PCA0MD &= ~0x40;                  //禁止看门狗
  32.         OSCICN |= 0x83;                   //不分频,使用内部12M晶振,系统时钟频率为12MHz
  33.         OSInit();
  34.         OSTaskCreate(StartTask,(void *)0,&StartTaskStk[0],0);//创建第一个任务
  35.         OSStart();
  36. }

  37. void StartTask(void) KCREENTRANT
  38. {
  39.         P0MDOUT = 0x08;              // 设置P0.3 输出为推挽方式
  40.     P2MDOUT = 0x0c;              // 设置P2.2,P2.3输出为推挽方式
  41.     XBR1 = 0x40;  
  42.         LED12 = 1;
  43.         LED13 = 1;
  44.         LED14 = 1;
  45.         InitTimer0();
  46.         OSStatInit();                            //开启CPU使用率统计
  47.         //程序中的任务建议在这里创建,当然也可以在其它任务中创建任务
  48.         OSTaskCreate(Task1, (void *)0, &Task1Stk[0], 2);
  49.     OSTaskCreate(Task2, (void *)0, &Task2Stk[0], 3);      
  50.     for(;;)         
  51.         {
  52.         LED12 = ~LED12;
  53.                 OSTimeDly(20);                     
  54.     }
  55. }
  56. void Task1(void) KCREENTRANT
  57. {       
  58.     for(;;)         
  59.         {
  60.         LED13 = ~LED13;
  61.                 OSTimeDly(40);
  62.     }
  63. }
  64. void Task2(void) KCREENTRANT
  65. {
  66.     for(;;)         
  67.         {
  68.         LED14 = ~LED14;
  69.                 OSTimeDly(60);                     
  70.     }
  71. }


复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:166844 发表于 2017-2-27 10:22 | 只看该作者
不能下载啊
回复

使用道具 举报

板凳
ID:280346 发表于 2018-1-28 09:57 | 只看该作者
初来乍到 学习一下
回复

使用道具 举报

地板
ID:207927 发表于 2019-8-8 17:24 | 只看该作者
支持一下
回复

使用道具 举报

5#
ID:216371 发表于 2019-8-21 13:40 | 只看该作者
学习中....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表