久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2010|回復: 4
打印 上一主題 下一主題
收起左側

如何合并一下這兩個單片機程序?我合了多次都不行,要么就是不會動

[復制鏈接]
跳轉到指定樓層
樓主
ID:922391 發表于 2021-5-21 22:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
避障程序

#include"reg51.h"
#include <intrins.h>  
#define uchar unsigned char
#define uint  unsigned int
#define ulong  unsigned long

uint time=0,timer=0;
ulong S=0,T=0;

sbit RX1=P2^6;
sbit TX1=P2^7;
sbit RX2=P3^6;
sbit TX2=P3^7;

uint lf0=0,lf1=0;
uint lb0=0,lb1=0;
uint rf0=0,rf1=0;
uint rb0=0,rb1=0;

sbit inputL=P2^0;sbit inputR=P2^1;

sbit a1=P0^7;sbit a2=P0^6;
sbit b1=P0^5;sbit b2=P0^4;
sbit c1=P1^7;sbit c2=P1^6;                                                                                                                                         
sbit d1=P1^5;sbit d2=P1^4;
void Delay(uint xms)
{
        uchar i, j;
        while(xms--)
        {
                i = 2;
                j = 239;
                do
                {
                        while (--j);
                } while (--i);
        }
}

void forward(int pwm,int time)
{
        int a=0;
        while(a<time)
                {
                        a1=0,a2=1;
                        b1=0,b2=1;
                        c1=0,c2=1;
                        d1=0,d2=1;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }
}               



void turnleft(int pwm,int time)
{        
        int a=0;
        while(a<time)
                {
                        a1=1,a2=0;
                        b1=1,b2=0;
                        c1=0,c2=1;
                        d1=0,d2=1;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }

}

void turnright(int pwm,int time)
{
        int a=0;
        while(a<time)
                {
                        a1=0,a2=1;
                        b1=0,b2=1;
                        c1=1,c2=0;
                        d1=1,d2=0;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }
}


void back(int pwm,int time)
{
        int a=0;
        while(a<time)
                {
                        a1=1,a2=0;
                        b1=1,b2=0;
                        c1=1,c2=0;
                        d1=1,d2=0;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }
}

void maichong()
{                                       
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();           
        _nop_();
}

void qidong1()
{
        TX1=1;                                       
        maichong();
        TX1=0;
}
void qidong2()
{
        TX2=1;                                       
        maichong();
        TX2=0;
}

void Conut1()
{                                                   
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;        
        S=(long)(time*0.17);
}

void Conut2()
{                                                   
        timer=TH0*256+TL0;
        TH0=0;
        TL0=0;        
        T=(long)(timer*0.17);
}

void kaishi()
{
        TMOD=0x01;                  
        TH0=0;
        TL0=0;
        ET0=1;         
        EA=1;                                 
}

void scan()
{
        if(S>200&&T>200)
        {
                forward(5,5);
        }
        if(S>200&&T<200)
        {
                turnleft(5,5);
        }
        if(S<200&&T>200)
        {
                turnright(5,5);
        }
        if(S<200&&T<200)
        {
                back(5,5);
        }
}
void  main()
{         
        kaishi();                          
        while(1)
        {               
                qidong1();
                while(!RX1);                //當RX為零時等待
                TR0=1;                            //開啟計數
                while(RX1);                        //當RX為1計數并等待
                TR0=0;                                //關閉計算
                Conut1();                        //計算
               
                qidong2();
                while(!RX2);                //當RX為零時等待
                TR0=1;                            //開啟計數
                while(RX2);                        //當RX為1計數并等待
                TR0=0;                                //關閉計算
                Conut2();                        //計算

                scan();
        }
}

循跡程序
#include"reg51.h"
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
#define ulong  unsigned long

sbit a1=P0^7;sbit a2=P0^6;
sbit b1=P0^5;sbit b2=P0^4;
sbit c1=P1^7;sbit c2=P1^6;
sbit d1=P1^5;sbit d2=P1^4;

uint time=0,timer=0;

sbit inputL=P2^0;sbit inputR=P2^1;
void Delay(uint xms)
{
        uchar i, j;
        while(xms--)
        {
                i = 2;
                j = 239;
                do
                {
                        while (--j);
                } while (--i);
        }
}

void forward(int pwm,int time)
{
        int a=0;
        while(a<time)
                {
                        a1=0,a2=1;
                        b1=0,b2=1;
                        c1=0,c2=1;
                        d1=0,d2=1;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }
}               



void turnleft(int pwm,int time)
{        
        int a=0;
        while(a<time)
                {
                        a1=0,a2=1;
                        b1=0,b2=1;
                        c1=1,c2=0;
                        d1=1,d2=0;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }

}

void turnright(int pwm,int time)
{
        int a=0;
        while(a<time)
                {
                        a1=1,a2=0;
                        b1=1,b2=0;
                        c1=0,c2=1;
                        d1=0,d2=1;
                        Delay(pwm);
                        
                        a1=0,a2=0;
                        b1=0,b2=0;
                        c1=0,c2=0;
                        d1=0,d2=0;
                        Delay(10-pwm);

                        a++;               
                }
}



void scan()
{
        if(inputL==0&&inputR==0)
        {
                forward(3,5);
        }
        if(inputL==1&&inputR==1)
        {
                forward(3,5);
        }
        if(inputL==1&&inputR==0)
        {
                turnleft(3,5);
        }
        if(inputL==0&&inputR==1)
        {
                turnright(3,5);
        }
}


void kaishi()
{
        TMOD|=0X11;        
        TH1=0xff;
        TL1=0x9c;        
        ET1=1;
        TR1=1;
}

void  main()

{  
        kaishi();                           
        EA=1;
        while(1)
        {
                scan();                                                         
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:824490 發表于 2021-5-22 10:22 | 只看該作者
強烈要求畫個流程圖
回復

使用道具 舉報

板凳
ID:155507 發表于 2021-5-22 12:11 | 只看該作者
為何你弄不出來呢,是你編程習慣不好。
建議:
1、先將各個程序畫成流程框圖。
2、將兩個流程框圖流程串聯起來。
3、重新整合框圖,走通各個分支。
4、在按框圖寫程序。

評分

參與人數 1黑幣 +10 收起 理由
yyds0606 + 10 贊一個!

查看全部評分

回復

使用道具 舉報

地板
ID:922391 發表于 2021-5-22 12:18 | 只看該作者
我知道了,謝謝
回復

使用道具 舉報

5#
ID:390416 發表于 2021-5-22 18:09 | 只看該作者
人人學會單片機 這套視頻的框架式編程思路,你按套路寫 多少個模塊都可以拼起來用一個程序
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天草夜夜骑 | 精品中文字幕一区二区三区 | 亚洲精彩免费视频 | 中文字幕视频在线观看 | 欧美日韩中 | 亚洲成av片人久久久 | 欧美一区2区三区3区公司 | 国产成人免费在线观看 | 日韩一区二区在线视频 | 午夜免费观看体验区 | 日韩欧美在线观看视频 | 欧美毛片免费观看 | 欧美性久久 | 精品99久久久久久 | 国产精品免费在线 | 日韩av高清 | 日韩在线中文字幕 | 秋霞影院一区二区 | 欧美黑人体内she精在线观看 | 国精产品一品二品国精在线观看 | 国产美女久久 | www.久久久久久久久久久久 | 中文字幕成人网 | 欧洲精品在线观看 | 国产精品久久久久久久一区探花 | 久久久久久高潮国产精品视 | 三级黄色片在线观看 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 成人高潮片免费视频欧美 | 国内精品免费久久久久软件老师 | 国产视频黄色 | 色婷婷精品国产一区二区三区 | 韩日精品一区 | 欧美综合一区二区三区 | 97视频免费 | 欧美性高潮 | 视频一区二区三区四区五区 | 成人av一区二区三区 | 国产高清av免费观看 | 国产日韩欧美中文 | 国产97碰免费视频 |