打印

求助:软件怎样在处理器件测量完成的等待时间

[复制链接]
1880|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
asdfghzxcv|  楼主 | 2013-1-5 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
vgalcd| | 2013-1-6 23:14 | 只看该作者
给你支持一下

使用特权

评论回复
板凳
asdfghzxcv|  楼主 | 2013-1-7 01:52 | 只看该作者
谢谢了,我已经把问题解决了!

使用特权

评论回复
地板
saphead| | 2013-1-7 16:19 | 只看该作者
要处理这种等待延时,最好跑操作系统

使用特权

评论回复
5
mohanwei| | 2013-1-7 17:28 | 只看该作者
软件定时器分配个标记就行了,大循环使用状态机或者跑protothread一类的协程……用不着操作系统。

使用特权

评论回复
6
asdfghzxcv|  楼主 | 2013-1-7 23:50 | 只看该作者
这个是修改好的程序,程序说的什么不重要,重要的是程序的框架,个人认为还是不错的。

void SHTMeasure(unsigned char
*tempvalue, unsigned char
*humivalue)
{
        char check;
        switch(SHTStep)
        {
                case 1:
                                SHTStart();
                                if(SHTWriteByte
(0x03))          //测温度
                                {
SHTConnectionReset();        //不成功
就复位
                                        SHTStep = 1;
                                        break;
                                }
                                else
                                {
                                        SHTStep++;
                       //成功就进行下一步
                                        break;
                                }
                case 2:
                    //等待转换
                                if(SHTSDA)
                                {
                  //转换时间等待
                                        shtdelay++ ;
                                        if(shtdelay >
211)
                                        {
                                                SHTStep
= 1;    //时间到仍然没有的就返回1
处  重新开始测量
                                                shtdelay
= 0;
                                                break;
                                        }
                                }
                                else
                                {
                                        shtdelay = 0;
                                        SHTStep++;
             //成功进行下一步
                                }
                                break;
                case 3:
                              //转换完成读取数

                    *tempvalue =
SHTReadByte(ACK);
                                 _nop_();_nop_();
                *(tempvalue+1)=
SHTReadByte(ACK);
                                check
=SHTReadByte(noACK); //read CRC
校验码
                                SHTStep++;
                                break;
            case 4:
                   //开始湿度的测量
                                SHTStart();
                                if(SHTWriteByte
(0x05))
                                {
SHTConnectionReset();  //不成功就复

                                        SHTStep = 4;
                                        break;
                                }
                                else
                                {
                                        SHTStep++;
              //成功就进行下一步
                                        break;
                                }
                case 5:
                                if(SHTSDA)
                                {
                                        shtdelay++ ;
                                        if(shtdelay >
55)
                                        {
                                                SHTStep
= 4;
                                                shtdelay
= 0;
                                                break;
                                        }
                                }
                                else
                                {
                                        shtdelay = 0;
                                        SHTStep++;
                                }
                                break;
                case 6:
                                              //读取测
量的数值
                                *humivalue =
SHTReadByte(ACK);
                                 _nop_();_nop_();
                                *(humivalue+1) =
SHTReadByte(ACK);
                                check
=SHTReadByte(noACK); //read CRC
校验码
                                SHTStep = 1;
                                break;
                default:break;
        }
}

使用特权

评论回复
7
ZOU25513955| | 2013-1-8 16:54 | 只看该作者

使用特权

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

本版积分规则

0

主题

33

帖子

1

粉丝