打印

请教:89C52 里面能放系统吗?(希望能够实现多线程操作)

[复制链接]
2305|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-5-31 08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教:
void Sendtex2() //向电脑发送字符 '1'
{
    int i;
    for(i=0;i<2;i++)
    {
      SBUF=sends1;
    while(!TI);
    TI=0;
  }
}

void Sendtex3() //向电脑发送字符 '1'
{
    int i;
    for(i=0;i<2;i++)
    {
      SBUF=sends2;
    while(!TI);
    TI=0;
  }
}

main()
{
while(1)
    {
       if (D0==0)  //按键
          {
          key = D0;  //处理抖动
          delay2();
          if (D0==key)
             {
               Sendtex2();
               while(D0==0); //如果按键不松开,则不退出
             }
        }  
               
       if (D1==0)  //按键
          {
          key = D1;
         delay2();
         if (D1==key)
            {
              Sendtex3();
              while(D1==0);
            }
         }                              
     }
}




现在情况是,如果 D0 不松开,则
if (D1==0)  //按键
   {
      key = D1;
      delay2();
      if (D1==key)
         {
         Sendtex3();
         while(D1==0);
         }
  }   
就不能运行啊?

 89C52 里面能放系统吗?
一般是放哪个系统?

谢谢!     

相关帖子

沙发
foyyof| | 2007-5-31 08:44 | 只看该作者

这些人都中毒了```什么系统系统的!

系统能做的,直接写程序没理由做不来!

用个定时器中断不就好了!

使用特权

评论回复
板凳
li_mu| | 2007-5-31 08:47 | 只看该作者

能放系统,自己编一个

不要用延时(那段时间你什么也没法干了),用精确时标中断(比如1微秒或更长一点)
到时候查询相应东西,置标志位
估计也就占一百几十个字节程序空间和二三十字节RAM

使用特权

评论回复
地板
li_mu| | 2007-5-31 08:49 | 只看该作者

如果做的好,所用资源甚至更少

比如把散转表什么的都用上

不过需要你对实时系统有所了解

使用特权

评论回复
5
星星电灯|  楼主 | 2007-5-31 08:52 | 只看该作者

谢谢楼上各位大哥!

系统能做的,直接写程序没理由做不来!

用个定时器中断不就好了!

举个例子,好吗?
程序要怎么写啊?
谢谢!
 

使用特权

评论回复
6
5880527| | 2007-5-31 10:36 | 只看该作者

51就那么一点东西,要什么系统啊

51就那么一点东西,要什么系统啊

使用特权

评论回复
7
gyt| | 2007-5-31 10:42 | 只看该作者

对啊

“系统能做的,直接写程序没理由做不来!”

这句话说得很好啊

使用特权

评论回复
8
古道热肠| | 2007-5-31 10:47 | 只看该作者

周立功公司有人做过51的多任务实时操作系统

  周立功公司有一本书是专写51实时多任务操作系统的,有源代码,专为51单片机度身定做,如能彻底整明白,uC/OS -II也就不在话下了。

使用特权

评论回复
9
prcxf| | 2007-5-31 11:18 | 只看该作者

自己写吧,但如下这种用法实在不妥

main()
{
while(1)
    {
       if (D0==0)  //按键
          {
          key = D0;  //处理抖动
          delay2();
          if (D0==key)
             {
               Sendtex2();
               while(D0==0); //如果按键不松开,则不退出    此处在死等,cpu在这里做无用功,如何多任务?
             }
        }  
 

使用特权

评论回复
10
木头东瓜| | 2007-5-31 13:45 | 只看该作者

圈圈就写过一个51上的系统的

使用特权

评论回复
11
diannaoza| | 2007-5-31 14:57 | 只看该作者

我也在考虑51的系统

即然一片不够就两片,三片,四片...总这它是51的多任务系统
别说多此一举, 就想体验51的多任务不为别的,就为这个多任务系统。就这么简单

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

121

帖子

1

粉丝