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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機程序為什么不運行第二段

[復制鏈接]
跳轉到指定樓層
樓主
ID:730674 發表于 2020-5-18 19:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
  1. sbit Relay1=P2^0;
  2. sbit Relay2=P2^1;
  3. sbit Relay3=P2^2;
  4. sbit Relay4=P2^4;
  5. sbit Relay5=P2^5;
  6. sbit Relay6=P2^6;

  7. sbit switch1=P3^2;
  8. sbit switch2=P3^3;
  9. sbit switch3=P3^4;



  10. void Delay_xms(uint x)
  11. {
  12.   uint i,j;
  13.   for(i=0;i<x;i++)
  14.     for(j=0;j<112;j++);
  15. }



  16. void INUART(void)  //串口定義
  17. {
  18.         SCON=0x50;
  19.         TMOD=0x20;
  20.         PCON=0x00;
  21.         TH1=0xfd;
  22.         TL1=0xfd;
  23.         RI=0;
  24.         TR1=1;
  25.   REN=1;
  26.   SM0=0;
  27.   SM1=1;
  28.   EA=1;
  29.   ES=1;
  30.        EX1=1;
  31. }



  32. void CAM()
  33. {
  34.         if(RI)       //串口接收數據
  35.                 {
  36.                         if(SBUF == '0')     //如果為0時
  37.                         {
  38.                                
  39.                           Relay1 = 0;
  40.                           Delay_xms(20000);
  41.                                 Relay1 = 1;
  42.                                
  43.                         }
  44.                         else if(SBUF == '1')
  45.                         {
  46.                                
  47.                           Relay2 = 0;
  48.                           Delay_xms(20000);
  49.                                 Relay2 = 1;
  50.                         }
  51.                         else if(SBUF == '2')
  52.                                 {
  53.                                        
  54.                             Relay3 = 0;
  55.                             Delay_xms(20000);
  56.                                         Relay3 = 1;
  57.                                 }
  58.                                 RI=0;
  59.                                
  60.                 }
  61.         }

  62.        
  63.        
  64.        
  65.         void switchs()
  66.         {

  67.                         if(switch1 == 0)
  68.                                 {
  69.                                         Relay4 = 0;
  70.                                 }
  71.                         else if(switch2 == 0)
  72.                                 {
  73.                                         Relay5 = 0;
  74.                                 }
  75.                         else if(switch3 == 0)
  76.                                 {
  77.                                         Relay6 = 0;
  78.                                 }
  79.         }

  80.        

  81. void main()
  82. {
  83.        
  84.         INUART();   
  85.         while(1)
  86.         {
  87.                 CAM();
  88.                 if(Relay1 == 0 || Relay2 == 0 || Relay3 == 0)
  89.                 {
  90.                  switchs();
  91.                 }
  92.         }
  93. }
復制代碼
這個程序是先接受串口程序,然后給相應IO口低電平以驅動接近開關,再根據接近開關返回來的低電平控制,但是它不執行switchs這個程序。接近開關沒問題。

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

使用道具 舉報

沙發
ID:267719 發表于 2020-5-19 09:00 | 只看該作者
你調用CAM后,Relay1、Relay2、Relay3都不為0啊。Relay1 = 0;                           Delay_xms(20000);                                 Relay1 = 1;
回復

使用道具 舉報

板凳
ID:584814 發表于 2020-5-19 11:04 | 只看該作者
函數 CAM() 中,Relay1、Relay2、Relay3 都被從可能的 0 置為 1 ,所以 if(Relay1 == 0 || Relay2 == 0 || Relay3 == 0)要永真要么永不真。
回復

使用道具 舉報

地板
ID:695961 發表于 2020-5-19 11:52 | 只看該作者
沒有串口中斷處理程序。
回復

使用道具 舉報

5#
ID:730674 發表于 2020-5-19 13:52 | 只看該作者
man1234567 發表于 2020-5-19 11:04
函數 CAM() 中,Relay1、Relay2、Relay3 都被從可能的 0 置為 1 ,所以 if(Relay1 == 0 || Relay2 == 0 ||  ...

但是這個不應該是有一個成立了就運行后面的程序嗎
回復

使用道具 舉報

6#
ID:730674 發表于 2020-5-19 13:53 | 只看該作者
carpcarey 發表于 2020-5-19 09:00
你調用CAM后,Relay1、Relay2、Relay3都不為0啊。Relay1 = 0;                           Delay_xms(20000) ...

我更改后還是不能運行
回復

使用道具 舉報

7#
ID:730674 發表于 2020-5-19 13:53 | 只看該作者
chinayanhui 發表于 2020-5-19 11:52
沒有串口中斷處理程序。

必須要用串口中斷嗎
回復

使用道具 舉報

8#
ID:267719 發表于 2020-5-19 15:59 | 只看該作者
a10861771 發表于 2020-5-19 13:53
我更改后還是不能運行

我是告訴你,運行CAM函數后,Relay1、Relay2、Relay3結果都為1,不是0.
我發的就是你的最后為1的那段代碼啊。提醒你這里變為1了。不是0.
回復

使用道具 舉報

9#
ID:730674 發表于 2020-5-19 17:33 | 只看該作者
carpcarey 發表于 2020-5-19 15:59
我是告訴你,運行CAM函數后,Relay1、Relay2、Relay3結果都為1,不是0.
我發的就是你的最后為1的那段代 ...

嗯嗯我知道,我把為1去掉了還是不能運行
回復

使用道具 舉報

10#
ID:267719 發表于 2020-5-20 09:02 | 只看該作者
a10861771 發表于 2020-5-19 17:33
嗯嗯我知道,我把為1去掉了還是不能運行

要等20秒才有結果。你等了么?Delay_xms(20000);執行完才能退出CAM函數。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产欧美一区二区三区精品 | 日韩精品三区 | 色小姐综合网 | 国产日韩欧美一区二区在线播放 | 91免费在线 | 精品一级 | 久久一区二区三区电影 | 国产成人短视频在线观看 | 美女视频黄的免费 | 国产乱码精品一区二三赶尸艳谈 | 在线播放国产一区二区三区 | 亚洲欧美中文日韩在线v日本 | 中文字幕不卡在线观看 | 欧美一区二区在线观看 | 最新国产视频 | 久久99精品久久久久久秒播九色 | 欧美在线观看一区 | 久久精品色欧美aⅴ一区二区 | 欧美一区二区在线 | 亚洲高清视频一区二区 | 国产亚洲第一页 | 亚洲国产精品日本 | 成人精品国产一区二区4080 | 国产综合在线视频 | 在线不卡 | 国产成人精品久久 | 中文字幕一区在线观看视频 | 中文字幕一区二区三区在线观看 | 中文字幕一区二区三区四区五区 | 国产日产精品一区二区三区四区 | 国产欧美精品在线观看 | 日韩a级片| 日韩国产免费 | 欧美精品一区二区在线观看 | 日日骚网 | 精品国产精品国产偷麻豆 | 在线视频一区二区三区 | 蜜臀久久99精品久久久久久宅男 | 综合久久99 | 精品国产一级 | 亚洲一区二区在线播放 |