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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大佬們幫忙看一下這單片機程序唄,不知道為什么不循環

[復制鏈接]
跳轉到指定樓層
樓主
ID:424726 發表于 2019-1-29 21:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
超聲波只能啟動一次,數值都不變了
請問各位這是什么原因呢

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit TRIG=P2^6;
  4. sbit ECHO=P2^7;
  5. sbit zuo0=P2^0;
  6. sbit zuo1=P2^1;
  7. sbit zuo2=P2^2;
  8. sbit zuo3=P2^3;
  9. sbit clk=P1^2;
  10. sbit cs=P1^1;
  11. sbit din=P1^0;
  12. unsigned char i=0;
  13. unsigned int dis;
  14. unsigned int t;
  15. unsigned char flag=0;
  16. unsigned int timer=0;
  17. unsigned char code LedChar[]=
  18. {
  19. 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
  20. 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
  21. };
  22. unsigned char LedBuff[]=
  23. {
  24. 0xff,0xff,0xff,0xff
  25. };
  26. unsigned char code disp1[]=
  27. {
  28.   0x04,0x22,0x44,0x40,0x40,0x44,0x22,0x04,
  29. };
  30. unsigned char code disp2[]=
  31. {
  32.   0x00,0x22,0x12,0x10,0x10,0x12,0x22,0x00
  33. };
  34. void delay(unsigned int x)
  35. {
  36. unsigned char i;
  37. unsigned char j;
  38. for(i=0;i<x;i++)
  39.    for(j=0;j<112;j++);
  40.    }
  41.    void write_byte(unsigned char Data)
  42.    {
  43.     unsigned char i;
  44. cs=0;
  45. for(i=8;i>=1;i--)
  46. {
  47. clk=0;
  48. din=Data&0x80;
  49. Data=Data<<1;
  50. clk=1;
  51. }
  52. }
  53. void write(unsigned add,unsigned char dat)
  54. {
  55.   cs=0;
  56.   write_byte(add);
  57.   write_byte(dat);
  58.   cs=1;
  59.   }
  60.   void chushi()
  61.   {
  62.    write(0x09,0x00);
  63.    write(0x0a,0x03);
  64.    write(0x0b,0x07);
  65.    write(0x0c,0x01);
  66.    write(0x0f,0x00);
  67.    }
  68. void open()
  69. {
  70.    TRIG=1;
  71.    _nop_();
  72.    _nop_();
  73.    _nop_();
  74.    _nop_();
  75.    _nop_();
  76.    _nop_();
  77.    _nop_();
  78.    _nop_();
  79.    _nop_();
  80.    _nop_();
  81.    _nop_();
  82.    _nop_();
  83.    TRIG=0;
  84.    }
  85.    void jisuan()
  86.    {
  87.    TH1=0;
  88.   TL1=0;
  89.   while(!ECHO);
  90.   TR1=1;
  91.   while(ECHO);
  92.   TR1=0;
  93.    t=TH1*256+TL1;
  94.    dis=(t*1.7)/100;
  95.    if(dis>420)
  96.    {
  97.     dis=0;
  98.     flag=0;
  99.     LedBuff[0]=LedChar[15];
  100.     LedBuff[1]=LedChar[15];
  101.     LedBuff[2]=LedChar[15];
  102.     LedBuff[3]=LedChar[15];
  103.     }
  104.     else
  105.     {
  106.    LedBuff[0]=LedChar[dis%10];
  107.    LedBuff[1]=LedChar[dis/10%10];
  108.    LedBuff[2]=LedChar[dis/100%10];
  109.    LedBuff[3]=LedChar[dis/1000%10];
  110.    }
  111. }
  112. void xianshixiao()
  113. {
  114. unsigned char i;
  115. delay(50);
  116. chushi();
  117. for(i=1;i<9;i++)
  118. write(i,disp1[i-1]);
  119. delay(1000);
  120. }
  121. void xianshiku()
  122. {
  123.   unsigned char i;
  124.   delay(50);
  125.   chushi();
  126.   for(i=1;i<9;i++)
  127.   write(i,disp2[i-1]);
  128.   delay(1000);
  129.   }
  130.    void main ()
  131.    {
  132.      TMOD=0x11;
  133.   TR0=1;
  134.   EA=1;
  135.   ET0=1;
  136.   ET1=1;
  137.   while(1)
  138.   {
  139.   TH0=0XFC;
  140.   TL0=0X67;
  141.   open();
  142.   jisuan();
  143.      if(dis<=10)
  144.      {
  145.       xianshixiao();
  146.      }
  147.         else
  148.      {
  149.       xianshiku();
  150.      }
  151.    }
  152.   }
  153.    void timer1() interrupt 1
  154.    {
  155.     TH0=0XFC;
  156.     TL0=0X67;
  157.     P0=0XFF;
  158.     switch(i)
  159.     {
  160.      case 0: zuo0=1;zuo1=1;zuo2=1;zuo3=0;i++;P0=LedBuff[0];break;
  161.   case 1: zuo0=1;zuo1=1;zuo2=0;zuo3=1;i++;P0=LedBuff[1];break;
  162.   case 2: zuo0=1;zuo1=0;zuo2=1;zuo3=1;i++;P0=LedBuff[2];break;
  163.   case 3: zuo0=0;zuo1=1;zuo2=1;zuo3=1;i=0;P0=LedBuff[3];break;
  164.   }
  165.   timer++;
  166.     }
  167.    void timer0() interrupt 3
  168.    {
  169.     flag=1;
  170.     }

復制代碼

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

使用道具 舉報

沙發
ID:138119 發表于 2019-1-30 08:30 | 只看該作者
樓主厲害,一個注釋都沒有,別人看起來會很累!~
回復

使用道具 舉報

板凳
ID:164602 發表于 2019-1-30 09:18 | 只看該作者
不知道你用的哪款超聲波傳感器,我用的HC-SR04款,這個說明書上說:
為了不影響發波與回波的干擾,需要間隔60ms以上再發波。
從你的程序中,沒有看到這樣的設置,一直不停地發波,間隔時間可能小了。
我的程序是這樣的:
void zd3() interrupt 3//T1中斷用來掃描數碼管顯示和計200MS啟動模塊,發射超聲波
{
        TH1=0xf8;//重裝初值
        TL1=0x30;
        DigDisplay();//調用顯示
        timer++;
        if(timer>=50)
        {
                timer=0;
                TX=1;//100MS啟動一次模塊。啟動模塊,就是控制端發出一個10us以上的高電平脈沖
                         //此處發了15us的高電平脈沖
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                TX=0;
        }
}
把程序改一下看看。
回復

使用道具 舉報

地板
ID:243076 發表于 2019-1-30 09:29 | 只看該作者
你的中斷看哈是不是有點問題
回復

使用道具 舉報

5#
ID:466578 發表于 2019-1-30 10:12 | 只看該作者
行139的
TH0=0XFC;
  TL0=0X67;
嵌在while循環里面,不停的給定時器賦初值
回復

使用道具 舉報

6#
ID:276663 發表于 2019-1-30 10:47 | 只看該作者
可能是一直卡在定時器0刷新顯示了。
回復

使用道具 舉報

7#
ID:405201 發表于 2019-1-30 12:24 | 只看該作者
可能卡在定時器0里了
回復

使用道具 舉報

8#
ID:424726 發表于 2019-1-30 14:55 | 只看該作者
HC6800-ES-V2.0 發表于 2019-1-30 09:18
不知道你用的哪款超聲波傳感器,我用的HC-SR04款,這個說明書上說:
為了不影響發波與回波的干擾,需要間 ...

好的 十分感謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久精品一级黑人c片 91免费在线视频 | 久草视频在线播放 | 亚洲精品视频免费看 | 97人澡人人添人人爽欧美 | 九色国产 | www.亚洲 | 国内久久| 搞黄网站在线观看 | 午夜大片 | 天天综合干 | 精品国产欧美一区二区三区成人 | 中文字幕一区二区三区四区不卡 | 久久精品在线播放 | 亚洲高清三级 | 久久成人一区二区三区 | 亚洲人成人一区二区在线观看 | 亚洲免费观看视频 | 精品久久影院 | 中文字幕男人的天堂 | 久久精品视频在线观看 | xxxxx免费视频 | 午夜视频免费在线观看 | 成人av网站在线观看 | 成av在线| 日韩毛片在线观看 | 精品一区二区久久久久久久网精 | 天天干天天干 | 三级国产三级在线 | 欧美成人一区二区三区片免费 | 日韩欧美在线一区 | 在线观看国产wwwa级羞羞视频 | 久久综合久久久 | 人人鲁人人莫人人爱精品 | 久久久新视频 | 国产成人午夜精品影院游乐网 | 亚洲一区二区三区四区av | 搞黄视频免费看 | 一级网站 | 黄色一级特级片 | 国产日韩视频 | 在线午夜电影 |