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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1866|回復: 6
收起左側

哪位大佬知道我這個單片機程序為什么現象總是錯的啊?

[復制鏈接]
ID:834174 發表于 2020-10-25 02:03 來自手機 | 顯示全部樓層 |閱讀模式
  1. #include <reg52.h>
  2. #include<intrins.h>

  3. //#define _nop() _asm nop _endasm

  4. typedef unsigned char uchar;
  5. typedef unsigned int uint;
  6. sbit RX = P2^0;//接收
  7. sbit TX = P2^1;//發射
  8. uchar flag;
  9. uchar date_distance[5];//距離
  10. uchar kk;


  11. sbit duan = P2^6;//段選
  12. sbit wei = P2^7;//位選




  13. uchar duan1[] = {0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  14. uchar wei1 [] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  15. // void delay_10us(uchar i)
  16. // {
  17. // while(i--);
  18. // }

  19. void delay_ms(uint c)
  20. {
  21. uint a,b;
  22.          for(;c>0;c--)
  23.          for(b=102;b>0;b--)
  24.          for(a=3;a>0;a--);
  25. }

  26. void init_wei(uchar i)
  27. {
  28.          P0 = 0xff;
  29.    wei = 1;
  30.          P0 = wei1[i] ;
  31.          wei = 0;
  32. }

  33. void init_timer()//         定時器初始化
  34. {
  35. TMOD = 0X11;//         定義定時器定時類型
  36.          TH0 = 0x00;//         定時器0高位
  37.          TL0 = 0x00;//         定時器0低位
  38.          EA = 1;//         單片機中斷總開關
  39.          ET0 = 1;//         允許T0溢出中斷
  40.          
  41.          
  42. TH1 = 0xf8;//         定時器1高位
  43. TL1        = 0xCD;//         定時器1低位
  44.          ET1 = 1;//         允許T1溢出中斷
  45.          TR1 = 1;//         定時器1的運行控制位
  46. }

  47. void count_distance()//         距離數
  48. {
  49.          
  50. uint distance = (TH0*256+TL0*1)*0.18;//         通過時間算距離
  51.          TH0 = 0;
  52.          TL0 = 0;
  53. //         計時器歸零
  54.          if(distance>=4000||distance < 20)
  55.          {
  56.          flag = 1;
  57.          }
  58.          else
  59.          {
  60.            date_distance[1] = distance%10000/1000;
  61.                  date_distance[2] = distance%1000/100;
  62.                  date_distance[3] = distance%100/10;
  63.                  date_distance[4] = distance%10/1;
  64.          }
  65. }
  66. void display()//         顯示
  67. {
  68. uchar i;
  69.          if(flag==1)
  70.          {
  71.          flag = 0;
  72.                  date_distance[1] = 14;
  73.                  date_distance[2] = 14;
  74.                  date_distance[3] = 14;
  75.                  date_distance[4] = 14;
  76.          }
  77.          count_distance();
  78.          for(i = 1;i<=4;i++)
  79.          {
  80.                
  81.         init_wei(i);
  82.                  duan = 1;
  83.                  if(i==1)
  84.                          P0 = duan1[date_distance[i]]|0x80;
  85.                  else
  86.                          P0 =duan1[date_distance[i]];
  87.                  delay_ms(1);
  88.                  duan = 0;
  89.                  P0 = 0x00;
  90.          }
  91.          
  92. }

  93. void main()
  94.          {
  95. RX = 0;
  96.                  TX=0;
  97.          init_timer();//定時器初始化
  98.          while(1)
  99.          {
  100.                  TR1=1;
  101.          while(!RX);//                 收到信號RX為零
  102.                  TR0 = 1;
  103.                  
  104.                  while(RX);
  105.                  TR0 = 0;
  106.                  count_distance();
  107.          }
  108. }

  109.          
  110.          void timer0() interrupt 1
  111.          {
  112.          flag = 1;
  113.          }
  114.          void timer1() interrupt 3
  115.         {
  116.          TR1 = 0;
  117.          TH1 = 0xf8;
  118. //                0xf8;
  119.                 TL1 =  0xcd;
  120. //    0xcd;
  121.          
  122.          kk ++;
  123.          display();
  124.          if(kk>100)
  125.          {
  126.          kk = 0;
  127.                  TX = 1;
  128.                 _nop_();_nop_();_nop_();_nop_();
  129.                  _nop_();_nop_();_nop_();_nop_();
  130.                  _nop_();_nop_();_nop_();_nop_();
  131.                  _nop_();_nop_();_nop_();_nop_();
  132.                  TX = 0;
  133.          }
  134.          TR1 = 1;
  135. }
復制代碼

        
回復

使用道具 舉報

ID:382454 發表于 2020-10-26 09:42 | 顯示全部樓層
沒有人會靜下心來看你這些代碼的,多蛋痛,你要問部題,得發問題的重點。
回復

使用道具 舉報

ID:833190 發表于 2020-10-26 17:38 | 顯示全部樓層
你設置的收到信號RX為零,前面初始RX是零?不是應該初始默認是沒接收到信號嗎。
回復

使用道具 舉報

ID:342954 發表于 2020-10-26 17:54 | 顯示全部樓層
問問題,不說重點,也沒有人跟你回答
回復

使用道具 舉報

ID:834174 發表于 2020-10-26 19:32 來自手機 | 顯示全部樓層
univers 發表于 2020-10-26 09:42
沒有人會靜下心來看你這些代碼的,多蛋痛,你要問部題,得發問題的重點。

下次注意
回復

使用道具 舉報

ID:834174 發表于 2020-10-26 19:35 來自手機 | 顯示全部樓層
i_could_have 發表于 2020-10-26 17:38
你設置的收到信號RX為零,前面初始RX是零?不是應該初始默認是沒接收到信號嗎。

我這個是要外接超聲測距模塊的,當發射出去的超聲波反彈回來被檢測到時RX就會發生變化。
回復

使用道具 舉報

ID:834174 發表于 2020-10-26 19:36 來自手機 | 顯示全部樓層
hejianmin 發表于 2020-10-26 17:54
問問題,不說重點,也沒有人跟你回答

第一次搞,我覺得可能是我的主程序出問題了,怎么試都不行。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久91精品国产一区二区精品 | 国产乱肥老妇国产一区二 | 中文字幕一页二页 | 精品视频免费 | 亚洲欧美激情四射 | 99精品网 | 日韩精品一区二区三区中文在线 | 91亚洲一区 | 欧美精品在线一区 | 成年人黄色小视频 | 三级黄片毛片 | 99九九视频 | 久久久亚洲一区 | 91porn国产成人福利 | 喷潮网站| 成人免费在线 | 看av电影 | 一区二区在线不卡 | 欧美精品二区三区 | 日韩欧美中文字幕在线观看 | 国产人成精品一区二区三 | 日本一道本视频 | 国产一区二区三区免费观看视频 | 欧美精品首页 | 国产99久久| 精品国产精品三级精品av网址 | 精品国产一级 | 欧美一级免费观看 | 欧美韩一区二区三区 | 亚洲成人免费视频在线 | 黄色精品视频网站 | 国产精品亚洲精品 | 免费精品视频在线观看 | 美女福利网站 | 欧美国产激情二区三区 | 亚洲狠狠爱 | 毛片视频网站 | 少妇诱惑av | 日韩黄色av | 久久成人人人人精品欧 | 一级高清免费毛片 |