单片机程序移植问题

2019-07-15 23:15发布

原本在89C52上能正常运行的CHAO SHENG BO测距程序放到12C5A60S2中就不能用了,考虑到单片机运行速度的不同相应的延时也作了相应的改动,可是一点反应没有;有哪位大神知道解决办法请帮一下忙。。。。。感激涕零!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
玩第八
2019-07-16 03:01
#include<reg52.h>
#include<intrins.h>
//#include"CSB.H"
sbit Tring=P0^6;
sbit Echo=P0^7;
void delay(uint z)                                          //延时子函数
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);       
}

/* 功能描述:1T单片机us级延时,2us~85us,精度1us */


void DelayUs1T(uchar delayUsVal)

{

       while (--delayUsVal);

}
void CSB_init()
{
       
        TMOD=0X10;
        TH1=0;
        TL1=0;
        EA=1;
        ET1=1;
        TR1=0;
        Tring=0;
        Echo=0;
}

void send_data()
{
        Tring=1;
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
//        _nop_();
        DelayUs1T(40);
        Tring=0;
}

uint distance()
{
        uint time;
        uint dis;
//        while(Echo==1);
        while(Echo==0);
        TR1=1;
        while(Echo==1);
        TR1=0;
        time=TH1*256+TL1;           //us
        dis=(int)(time*1.7/100);                  //dis=(time/1000000)*340*100(cm)
        TH1=0;
        TL1=0;
        return dis;
}

void check()
{
        if(Dis>=100)
        {
                P1=0X0F;
        }
        else if(Dis>=15)
        {
                P1=0X0F;
        }
        else if(Dis>0)
        {
                P1=0X0c;
        }
}
void main()
{
        CSB_init();
        P1=0;
        while(1)
        {
                send_data();
                Dis=distance();          //厘米
                delay(700);
                check();
        }
}


一周热门 更多>